PluginProbe
FeedWordPress / 2011.0512
FeedWordPress v2011.0512
trunk 0.8 0.9 0.91 0.95 0.96 0.97 0.98 0.981 0.99 0.991 0.992 0.993 2008.1030 2008.1101 2008.1105 2008.1214 2009.0612 2009.0613 2009.0618 2009.0707 2009.1111 2009.1112 2010.0127 2010.0528 All 65 releases
← All changes | posts-page.php +95 -329 trunk2011.0512 View file →
@@ -10,18 +10,18 @@
10 10 * Construct the posts page object.
11 11 *
12 12 * @param mixed $link An object of class {@link SyndicatedLink} if created for one feed's settings, NULL if created for global default settings
13 13 */
14 - public function __construct( $link = -1 ) {
14 + function FeedWordPressPostsPage ($link = -1) {
15 15 if (is_numeric($link) and -1 == $link) :
16 - $link = $this->submitted_link();
16 + $link = FeedWordPressAdminPage::submitted_link();
17 17 endif;
18 18
19 - parent::__construct('feedwordpresspostspage', $link);
19 + FeedWordPressAdminPage::FeedWordPressAdminPage('feedwordpresspostspage', $link);
20 20 $this->dispatch = 'feedwordpress_admin_page_posts';
21 21 $this->filename = __FILE__;
22 22 $this->updatedPosts = new UpdatedPostsControl($this);
23 -
23 +
24 24 $this->pagenames = array(
25 25 'default' => 'Posts',
26 26 'settings-update' => 'Syndicated posts',
27 27 'open-sheet' => 'Syndicated Posts & Links',
@@ -27,141 +27,104 @@
27 27 'open-sheet' => 'Syndicated Posts & Links',
28 28 );
29 29 } /* FeedWordPressPostsPage constructor */
30 30
31 - function save_settings () {
31 + function save_settings ($post) {
32 32 // custom post settings
33 33 $custom_settings = $this->custom_post_settings();
34 34
35 - $posted_notes = FeedWordPress::post( 'notes', array(), 'text' );
36 - foreach ( $posted_notes as $mn ) :
37 - if ( isset( $mn['key0'] ) ) :
38 - $mn['key0'] = trim( $mn['key0'] );
39 - if ( strlen( $mn['key0'] ) > 0 ) :
40 - unset( $custom_settings[ $mn['key0'] ] ); // out with the old
35 + foreach ($post['notes'] as $mn) :
36 + if (isset($mn['key0'])) :
37 + $mn['key0'] = trim($mn['key0']);
38 + if (strlen($mn['key0']) > 0) :
39 + unset($custom_settings[$mn['key0']]); // out with the old
41 40 endif;
42 41 endif;
42 +
43 + if (isset($mn['key1'])) :
44 + $mn['key1'] = trim($mn['key1']);
43 45
44 - if ( isset( $mn['key1'] ) ) :
45 - $mn['key1'] = trim( $mn['key1'] );
46 -
47 - if ( ( $mn['action']=='update' ) and ( strlen( $mn['key1'] ) > 0 ) ) :
48 - $custom_settings[ $mn['key1'] ] = $mn['value']; // in with the new
46 + if (($mn['action']=='update') and (strlen($mn['key1']) > 0)) :
47 + $custom_settings[$mn['key1']] = $mn['value']; // in with the new
49 48 endif;
50 49 endif;
51 50 endforeach;
52 51
53 - $this->updatedPosts->accept_POST();
52 + $this->updatedPosts->accept_POST($post);
54 53 if ($this->for_feed_settings()) :
55 - // $alter = array(); // this appears elsewhere, too, also unused, and possibly removed as well (gwyneth 20230920)
54 + $alter = array ();
56 55
57 56 $this->link->settings['postmeta'] = serialize($custom_settings);
58 57
59 - if ( ! is_null( FeedWordPress::post( 'resolve_relative', null ) ) ) :
60 - $this->link->settings['resolve relative'] = FeedWordPress::post( 'resolve_relative', null, 'text' );
58 + if (isset($post['resolve_relative'])) :
59 + $this->link->settings['resolve relative'] = $post['resolve_relative'];
61 60 endif;
62 - if ( ! is_null( FeedWordPress::post('munge_permalink', null, 'text' ) ) ) :
63 - $this->link->settings['munge permalink'] = FeedWordPress::post( 'munge_permalink', null, 'text' );
61 + if (isset($post['munge_permalink'])) :
62 + $this->link->settings['munge permalink'] = $post['munge_permalink'];
64 63 endif;
65 - if ( ! is_null( FeedWordPress::post('munge_comments_feed_links', null, 'text' ) ) ) :
66 - $this->link->settings['munge comments feed links'] = FeedWordPress::post( 'munge_comments_feed_links', null, 'text' );
64 + if (isset($post['munge_comments_feed_links'])) :
65 + $this->link->settings['munge comments feed links'] = $post['munge_comments_feed_links'];
67 66 endif;
68 67
69 68 // Post status, comment status, ping status
70 69 foreach (array('post', 'comment', 'ping') as $what) :
71 70 $sfield = "feed_{$what}_status";
72 - if ( ! is_null( FeedWordPress::post( $sfield, null, 'text' ) ) ) :
73 - $afield = sprintf( '%s status', $what );
74 - if ( FeedWordPress::post( $sfield, null, 'text' ) == 'site-default' ) :
75 - unset($this->link->settings[ $afield ]);
71 + if (isset($post[$sfield])) :
72 + if ($post[$sfield]=='site-default') :
73 + unset($this->link->settings["{$what} status"]);
76 74 else :
77 - $this->link->settings[ $afield ] = FeedWordPress::post( $sfield, null, 'text' );
75 + $this->link->settings["{$what} status"] = $post[$sfield];
78 76 endif;
79 77 endif;
80 78 endforeach;
81 -
82 - if ( ! is_null( FeedWordPress::post('syndicated_post_type', null, 'text' ) ) ) :
83 - if ( FeedWordPress::post( 'syndicated_post_type', null, 'text' ) == 'default' ) :
79 +
80 + if (isset($post['syndicated_post_type'])) :
81 + if ($post['syndicated_post_type']=='default') :
84 82 unset($this->link->settings['syndicated post type']);
85 83 else :
86 - $this->link->settings['syndicated post type'] = FeedWordPress::post( 'syndicated_post_type', null, 'text' );
84 + $this->link->settings['syndicated post type'] = $post['syndicated_post_type'];
87 85 endif;
88 86 endif;
89 87
90 88 else :
91 89 // update_option ...
92 - if ( ! is_null( FeedWordPress::post( 'feed_post_status', null ) ) ) :
93 -
94 - update_option('feedwordpress_syndicated_post_status', FeedWordPress::post( 'feed_post_status', null, 'text' ) );
95 -
90 + if (isset($post['feed_post_status'])) :
91 + update_option('feedwordpress_syndicated_post_status', $post['feed_post_status']);
96 92 endif;
97 93
98 94 update_option('feedwordpress_custom_settings', serialize($custom_settings));
99 95
100 - $sMungePermalink = FeedWordPress::post('munge_permalink', null, 'text' );
101 - $sUseAggregatorSourceData = FeedWordPress::post( 'use_aggregator_source_data', null, 'text' );
102 - $sFormattingFilters = FeedWordPress::post('formatting_filters', null, 'text' );
103 - $sFeedCommentStatus = FeedWordPress::post( 'feed_comment_status', '', 'text' );
104 - $sFeedPingStatus = FeedWordPress::post( 'feed_ping_status', '', 'text' );
105 - $sResolveRelative = FeedWordPress::post( 'resolve_relative', null, 'text' );
106 - $sMungeCommentsFeedLinks = FeedWordPress::post( 'munge_comments_feed_links', null, 'text' );
107 - $sSyndicatedPostType = FeedWordPress::post( 'syndicated_post_type', null, 'text' );
96 + update_option('feedwordpress_munge_permalink', $_REQUEST['munge_permalink']);
97 + update_option('feedwordpress_use_aggregator_source_data', $_REQUEST['use_aggregator_source_data']);
98 + update_option('feedwordpress_formatting_filters', $_REQUEST['formatting_filters']);
108 99
109 - update_option('feedwordpress_munge_permalink', $sMungePermalink);
110 - update_option('feedwordpress_use_aggregator_source_data', $sUseAggregatorSourceData);
111 - update_option('feedwordpress_formatting_filters', $sFormattingFilters);
112 -
113 - if ( ! is_null( $sResolveRelative ) ) :
114 - update_option('feedwordpress_resolve_relative', $sResolveRelative );
100 + if (isset($post['resolve_relative'])) :
101 + update_option('feedwordpress_resolve_relative', $post['resolve_relative']);
115 102 endif;
116 - if ( ! is_null( $sMungeCommentsFeedLinks ) ) :
117 - update_option('feedwordpress_munge_comments_feed_links', $sMungeCommentsFeedLinks );
103 + if (isset($post['munge_comments_feed_links'])) :
104 + update_option('feedwordpress_munge_comments_feed_links', $post['munge_comments_feed_links']);
118 105 endif;
119 -
120 - if ( $sFeedCommentStatus == 'open' ) :
106 + if (isset($_REQUEST['feed_comment_status']) and ($_REQUEST['feed_comment_status'] == 'open')) :
121 107 update_option('feedwordpress_syndicated_comment_status', 'open');
122 108 else :
123 109 update_option('feedwordpress_syndicated_comment_status', 'closed');
124 110 endif;
125 111
126 - if ( $sFeedPingStatus == 'open' ) :
112 + if (isset($_REQUEST['feed_ping_status']) and ($_REQUEST['feed_ping_status'] == 'open')) :
127 113 update_option('feedwordpress_syndicated_ping_status', 'open');
128 114 else :
129 115 update_option('feedwordpress_syndicated_ping_status', 'closed');
130 116 endif;
131 -
132 - if ( ! is_null( $sSyndicatedPostType ) ) :
133 - update_option('feedwordpress_syndicated_post_type', $sSyndicatedPostType );
117 +
118 + if (isset($post['syndicated_post_type'])) :
119 + update_option('feedwordpress_syndicated_post_type', $post['syndicated_post_type']);
134 120 endif;
135 121 endif;
136 -
137 - $boilerplate = FeedWordPress::post( 'boilerplate', array(), 'raw' );
138 - if ( count($boilerplate) > 0 ) :
139 - foreach ( $boilerplate as $index => $line) :
140 - if ( 0 == strlen( trim( $line['template'] ) ) ) :
141 - unset( $boilerplate[$index] );
142 - endif;
143 - endforeach;
144 -
145 - // Convert indexes to 0..(N-1) to avoid possible collisions
146 - $boilerplate = array_values( $boilerplate );
147 -
148 - if ($this->for_feed_settings()) :
149 - $this->link->settings['boilerplate rules'] = serialize( $boilerplate );
150 - $this->link->save_settings(/*reload=*/ true);
151 - else :
152 - update_option( 'feedwordpress_boilerplate', $boilerplate );
153 - endif;
154 - endif;
155 -
156 - $boilerplate_hook_order = FeedWordPress::post( 'boilerplate_hook_order', 10, 'text' );
157 - $this->update_setting('boilerplate hook order', intval( $boilerplate_hook_order ) );
158 -
159 - parent::save_settings();
122 + parent::save_settings($post);
160 123 }
161 124
162 125 /**
163 - * publication_box: Outputs "Publication" settings box.
126 + * Outputs "Publication" settings box.
164 127 *
165 128 * @since 2009.0713
166 129 * @param object $page of class FeedWordPressPostsPage tells us whether this is
167 130 * a page for one feed's settings or for global defaults
@@ -169,9 +132,10 @@
169 132 *
170 133 * @uses FeedWordPressPostsPage::these_posts_phrase()
171 134 * @uses FeedWordPress::syndicated_status()
172 135 * @uses SyndicatedLink::syndicated_status()
173 - */
136 + * @uses SyndicatedPost::use_api()
137 + */
174 138 /*static*/ function publication_box ($page, $box = NULL) {
175 139 $thesePosts = $page->these_posts_phrase();
176 140 $postSelector = array(
177 141 'publish' => "Publish %s immediately",
@@ -183,9 +147,9 @@
183 147 foreach ($postSelector as $index => $value) :
184 148 $postSelector[$index] = sprintf(__($value), $thesePosts);
185 149 $labels[$index] = __(str_replace(' %s', '', strtolower(strtok($value, ';'))));
186 150 endforeach;
187 -
151 +
188 152 $params = array(
189 153 'input-name' => 'feed_post_status',
190 154 'setting-default' => NULL,
191 155 'global-setting-default' => 'publish',
@@ -194,9 +158,9 @@
194 158
195 159 // Hey ho, let's go...
196 160 ?>
197 161 <table id="syndicated-publication-form" class="edit-form narrow">
198 - <tr><th scope="row"><?php esc_html_e('New posts:'); ?></th>
162 + <tr><th scope="row"><?php _e('New posts:'); ?></th>
199 163 <td><?php
200 164 $this->setting_radio_control(
201 165 'post status', 'syndicated_post_status',
202 166 $postSelector, $params
@@ -205,23 +169,23 @@
205 169 </td></tr>
206 170
207 171 <?php $page->updatedPosts->display(); ?>
208 172 </table>
209 -
173 +
210 174 <?php
211 175 } /* FeedWordPressPostsPage::publication_box () */
212 -
176 +
213 177 /**
214 178 * Outputs "Formatting" settings box
215 179 *
216 180 * @since 2009.0713
217 - * @param FeedWordPressPostsPage $page of class FeedWordPressPostsPage tells us whether this is
218 - * a page for one feed's settings or for global defaults
181 + * @param object $page of class FeedWordPressPostsPage tells us whether this is
182 + * a page for one feed's settings or for global defaults
219 183 * @param array $box
220 184 *
221 - */
222 - function formatting_box( $page, $box = NULL ) {
223 - $thesePosts = $page->these_posts_phrase(); // result unused, why? (gwyneth 20230920)
185 + */
186 + function formatting_box ($page, $box = NULL) {
187 + $thesePosts = $page->these_posts_phrase();
224 188
225 189 if ($page->for_feed_settings()) :
226 190 $formatting_filters = null;
227 191 $url = preg_replace('|/+$|', '', $page->link->homepage());
@@ -230,9 +194,9 @@
230 194 $url = 'http://example.com';
231 195 endif;
232 196 ?>
233 197 <table class="edit-form narrow">
234 - <?php if ( !is_null($formatting_filters)) : ?>
198 + <?php if (!is_null($formatting_filters)) : ?>
235 199
236 200 <tr><th scope="row">Formatting filters:</th>
237 201 <td><select name="formatting_filters" size="1">
238 202 <option value="no"<?php echo ($formatting_filters!='yes')?' selected="selected"':''; ?>>Protect syndicated posts from formatting filters</option>
@@ -244,11 +208,11 @@
244 208 problem.</p>
245 209 </td></tr>
246 210
247 211 <?php endif; ?>
248 -
212 +
249 213 <tr><th scope="row">Relative URIs:</th>
250 - <td><p>If link or image in a syndicated post from <code><?php print esc_html($url); ?></code>
214 + <td><p>If link or image in a syndicated post from <code><?php print $url; ?></code>
251 215 refers to a partial URI like <code>/about</code>, where should
252 216 the syndicated copy point to?</p>
253 217
254 218 <?php
@@ -269,15 +233,15 @@
269 233 $this->setting_radio_control(
270 234 'resolve relative', 'resolve_relative',
271 235 $options, $params
272 236 );
273 - ?>
237 + ?>
274 238 </td></tr>
275 239
276 240 </table>
277 241 <?php
278 242 } /* FeedWordPressPostsPage::formatting_box() */
279 -
243 +
280 244 /**
281 245 * Output "Links" settings box
282 246 *
283 247 * @since 2009.0713
@@ -293,9 +257,9 @@
293 257 'no' => __('The local copy on this website'),
294 258 ),
295 259 );
296 260
297 - if ( ! $page->for_feed_settings()) :
261 + if (!$page->for_feed_settings()) :
298 262 $use_aggregator_source_data = get_option('feedwordpress_use_aggregator_source_data');
299 263 endif;
300 264 ?>
301 265 <table class="edit-form narrow">
@@ -300,9 +264,9 @@
300 264 ?>
301 265 <table class="edit-form narrow">
302 266 <tr><th scope="row">Permalinks point to:</th>
303 267 <td><?php
304 -
268 +
305 269 $params = array(
306 270 'setting-default' => 'default',
307 271 'global-setting-default' => 'yes',
308 272 'default-input-value' => 'default',
@@ -313,10 +277,10 @@
313 277 );
314 278 ?>
315 279
316 280 </td></tr>
317 -
318 - <?php if ( ! $page->for_feed_settings()) : ?>
281 +
282 + <?php if (!$page->for_feed_settings()) : ?>
319 283 <tr><th scope="row">Posts from aggregator feeds:</th>
320 284 <td><ul class="options">
321 285 <li><label><input type="radio" name="use_aggregator_source_data" value="no"<?php echo ($use_aggregator_source_data!="yes")?' checked="checked"':''; ?>> Give the aggregator itself as the source of posts from an aggregator feed.</label></li>
322 286 <li><label><input type="radio" name="use_aggregator_source_data" value="yes"<?php echo ($use_aggregator_source_data=="yes")?' checked="checked"':''; ?>> Give the original source of the post as the source, not the aggregator.</label></li>
@@ -345,9 +309,9 @@
345 309 'comment' => array('label' => __('Comments'), 'accept' => 'Allow comments'),
346 310 'ping' => array('label' => __('Pings'), 'accept' => 'Accept pings'),
347 311 );
348 312 $onThesePosts = 'on '.$page->these_posts_phrase();
349 -
313 +
350 314 $mcflSettings = array(
351 315 "yes" => __('Point to comment feeds from the original website (when provided by the syndicated feed)'),
352 316 "no" => __('Point to local comment feeds on this website'),
353 317 );
@@ -370,9 +334,9 @@
370 334 'open' => sprintf(__("{$how['accept']} %s"), __($onThesePosts)),
371 335 'closed' => sprintf(__("Don't ".strtolower($how['accept'])." %s"), __($onThesePosts)),
372 336 );
373 337 $params[$what] = array(
374 - 'input-name' => "feed_{$what}_status",
338 + 'input-name' => "feed_${what}_status",
375 339 'setting-default' => NULL,
376 340 'global-setting-default' => FeedWordPress::syndicated_status($what, /*default=*/ 'closed'),
377 341 'labels' => array(
378 342 'open' => strtolower(__($how['accept'])),
@@ -384,22 +348,22 @@
384 348 // Hey ho, let's go...
385 349 ?>
386 350 <table class="edit-form narrow">
387 351 <?php foreach ($whatsits as $what => $how) : ?>
388 -
389 - <tr><th scope="row"><?php print esc_html($how['label']); ?>:</th>
352 +
353 + <tr><th scope="row"><?php print $how['label']; ?>:</th>
390 354 <td><?php
391 355 $this->setting_radio_control(
392 - "$what status", "syndicated_{$what}_status",
356 + "$what status", "syndicated_${what}_status",
393 357 $settings[$what], $params[$what]
394 358 );
395 359 ?></td></tr>
396 -
360 +
397 361 <?php endforeach; ?>
398 -
399 - <tr><th scope="row"><?php esc_html_e('Comment feeds'); ?></th>
362 +
363 + <tr><th scope="row"><?php _e('Comment feeds'); ?></th>
400 364 <td><p>When WordPress feeds and templates link to comments
401 - feeds for <?php print esc_html($page->these_posts_phrase()); ?>, the
365 + feeds for <?php print $page->these_posts_phrase(); ?>, the
402 366 URLs for the feeds should...</p>
403 367 <?php
404 368 $this->setting_radio_control(
405 369 "munge comments feed links", "munge_comments_feed_links",
@@ -409,9 +373,9 @@
409 373 </table>
410 374
411 375 <?php
412 376 } /* FeedWordPressPostsPage::comments_and_pings_box() */
413 -
377 +
414 378 /*static*/ function custom_post_settings ($page = NULL) {
415 379 if (is_null($page)) :
416 380 $page = $this;
417 381 endif;
@@ -424,23 +388,15 @@
424 388
425 389 if ($custom_settings and !is_array($custom_settings)) :
426 390 $custom_settings = unserialize($custom_settings);
427 391 endif;
428 -
429 - if ( !is_array($custom_settings)) :
392 +
393 + if (!is_array($custom_settings)) :
430 394 $custom_settings = array();
431 395 endif;
432 396
433 397 return $custom_settings;
434 398 } /* FeedWordPressPostsPage::custom_post_settings() */
435 -
436 - /*static*/ function custom_post_settings_box_tester_button ( $id, $page, $box = NULL ) {
437 -
438 - ?>
439 - <br/><button id="<?php print esc_attr( sprintf( 'xpath-test-%d', $id ) ); ?>" class="xpath-test">test expression</button>
440 - <?php
441 -
442 - }
443 399
444 400 /**
445 401 * Output "Custom Post Settings" settings box
446 402 *
@@ -465,13 +421,12 @@
465 421 $i = 0;
466 422 foreach ($custom_settings as $key => $value) :
467 423 ?>
468 424 <tr style="vertical-align:top">
469 - <th width="30%" scope="row"><input type="hidden" name="notes[<?php echo esc_attr($i); ?>][key0]" value="<?php echo esc_html($key); ?>" />
470 - <input id="notes-<?php echo esc_attr( $i ); ?>-key" name="notes[<?php echo esc_attr( $i ); ?>][key1]" value="<?php echo esc_html($key); ?>" /></th>
471 - <td width="60%"><textarea rows="2" cols="40" id="notes-<?php echo esc_attr($i); ?>-value" name="notes[<?php echo esc_attr($i); ?>][value]"><?php echo esc_html($value); ?></textarea>
472 - <?php self::custom_post_settings_box_tester_button($i, $page, $box); ?></td>
473 - <td width="10%"><select name="notes[<?php echo esc_attr($i); ?>][action]">
425 + <th width="30%" scope="row"><input type="hidden" name="notes[<?php echo $i; ?>][key0]" value="<?php echo esc_html($key); ?>" />
426 + <input id="notes-<?php echo $i; ?>-key" name="notes[<?php echo $i; ?>][key1]" value="<?php echo esc_html($key); ?>" /></th>
427 + <td width="60%"><textarea rows="2" cols="40" id="notes-<?php echo $i; ?>-value" name="notes[<?php echo $i; ?>][value]"><?php echo esc_html($value); ?></textarea></td>
428 + <td width="10%"><select name="notes[<?php echo $i; ?>][action]">
474 429 <option value="update">save changes</option>
475 430 <option value="delete">delete this setting</option>
476 431 </select></td>
477 432 </tr>
@@ -481,10 +436,10 @@
481 436 endforeach;
482 437 ?>
483 438
484 439 <tr style="vertical-align: top">
485 - <th scope="row"><input type="text" size="10" name="notes[<?php echo esc_attr($i); ?>][key1]" value="" /></th>
486 - <td><textarea name="notes[<?php echo esc_attr($i); ?>][value]" rows="2" cols="40"></textarea><?php self::custom_post_settings_box_tester_button( $i, $page, $box ); ?>
440 + <th scope="row"><input type="text" size="10" name="notes[<?php echo $i; ?>][key1]" value="" /></th>
441 + <td><textarea name="notes[<?php echo $i; ?>][value]" rows="2" cols="40"></textarea>
487 442 <p>Enter a text value, or a path to a data element from the syndicated item.<br/>
488 443 For data elements, you can use an XPath-like syntax wrapped in <code>$( ... )</code>.<br/>
489 444 <code>hello</code> = the text value <code><span style="background-color: #30FFA0;">hello</span></code><br/>
490 445 <code>$(author/email)</code> = the contents of <code>&lt;author&gt;&lt;email&gt;<span style="background-color: #30FFA0">...</span>&lt;/email&gt;&lt;/author&gt;</code><br/>
@@ -489,9 +444,9 @@
489 444 <code>hello</code> = the text value <code><span style="background-color: #30FFA0;">hello</span></code><br/>
490 445 <code>$(author/email)</code> = the contents of <code>&lt;author&gt;&lt;email&gt;<span style="background-color: #30FFA0">...</span>&lt;/email&gt;&lt;/author&gt;</code><br/>
491 446 <code>$(media:content/@url)</code> = the contents of <code>&lt;media:content url="<span style="background-color: #30FFA0">...</span>"&gt;...&lt;/media:content&gt;</code></p>
492 447 </td>
493 - <td><em>add new setting...</em><input type="hidden" name="notes[<?php echo esc_attr($i); ?>][action]" value="update" /></td>
448 + <td><em>add new setting...</em><input type="hidden" name="notes[<?php echo $i; ?>][action]" value="update" /></td>
494 449 </tr>
495 450 </table>
496 451 </div> <!-- id="postcustomstuff" -->
497 452
@@ -498,12 +453,14 @@
498 453 <?php
499 454 } /* FeedWordPressPostsPage::custom_post_settings_box() */
500 455
501 456 function custom_post_types_box ($page, $box = NULL) {
502 - // local: syndicated post type // default NULL
457 + global $fwp_path;
458 +
459 + // local: syndicated post type // default NULL
503 460 // global: syndicated_post_type // default 'post'
504 461 // default-input-value => 'default'
505 -
462 +
506 463 // Get all custom post types
507 464 $post_types = get_post_types(array(
508 465 '_builtin' => false,
509 466 ), 'objects');
@@ -512,19 +469,19 @@
512 469 $ul['post'] = __('Normal WordPress posts');
513 470 foreach ($post_types as $post_type) :
514 471 $ul[$post_type->name] = __($post_type->labels->name);
515 472 endforeach;
516 -
473 +
517 474 $params = array(
518 475 'global-setting-default' => 'post',
519 476 'default-input-value' => 'default',
520 477 );
521 -
478 +
522 479 // Hey, ho, let's go...
523 480 ?>
524 481 <table class="edit-form narrow">
525 482 <tbody>
526 - <tr><th><?php esc_html_e('Custom Post Types:'); ?></th>
483 + <tr><th><?php _e('Custom Post Types:'); ?></th>
527 484 <td><p>Incoming syndicated posts should be stored in the
528 485 posts database as...</p>
529 486 <?php
530 487 $this->setting_radio_control(
@@ -536,212 +493,21 @@
536 493 </tbody>
537 494 </table>
538 495 <?php
539 496 } /* FeedWordPressPostsPage::custom_post_types_box() */
540 -
541 - public function boilerplate_box ($page, $box = NULL) {
542 - if ($page->for_feed_settings()) :
543 - $attrib = isset($page->link->settings['boilerplate rules'])
544 - ? unserialize($page->link->settings['boilerplate rules'])
545 - : [];
546 - $syndicatedPosts = 'this feed\'s posts';
547 - else :
548 - $attrib = get_option('feedwordpress_boilerplate');
549 - $syndicatedPosts = 'syndicated posts';
550 - endif;
551 - $hookOrder = intval($page->setting('boilerplate hook order', FEEDWORDPRESS_BOILERPLATE_DEFAULT_HOOK_ORDER));
552 -?>
553 - <style type="text/css">
554 - .boilerplate-help-box {
555 - float: right;
556 - width: 300px;
557 - border: 1px dotted #777;
558 - margin: 3px;
559 - padding: 5px;
560 - background-color: #f7f7f7;
561 - }
562 - .boilerplate-help-box dt {
563 - font-weight: bold;
564 - font-size: 85%;
565 - }
566 - .boilerplate-help-box dd {
567 - font-size: 80%; line-height: 100%; font-style: italic;
568 - padding-left: 1.5em;
569 - }
570 - .boilerplate-help-box code {
571 - font-size: inherit;
572 - font-style: normal;
573 - background-color: inherit;
574 - }
575 -
576 - .boilerplate-li {
577 - padding-bottom: 5px;
578 - margin-bottom: 5px;
579 - border-bottom: 1px dotted black;
580 - }
581 -
582 - </style>
583 -
584 - <div class="boilerplate-help-box">
585 - <p style="border-bottom: 1px dotted #777;">To remove boilerplate, just blank out the text box and leave it empty.</p>
586 -
587 - <p>Use shortcodes to include information about your source:</p>
588 - <dl>
589 - <dt><code>[source]</code></dt>
590 - <dd>A link to the source you syndicated the post from</dd>
591 -
592 - <dt><code>[source-name]</code></dt>
593 - <dd>Name of the source you syndicated the post from</dd>
594 -
595 - <dt><code>[source-url]</code></dt>
596 - <dd>URL of the source you syndicated the post from</dd>
597 -
598 - <dt><code>[original-link]text[/original-link]</code></dt>
599 - <dd>A link to the <em>original post</em> back on the source website,
600 - using <code>text</code> as the link text.</dd>
601 -
602 - <dt><code>[original-url]</code></dt>
603 - <dd>URL of the <em>original post</em> back on the source website</dd>
604 -
605 - <dt><code>[author]</code></dt>
606 - <dd>A link with the name of the author who wrote the post, linking to other posts by the same author</dd>
607 -
608 - <dt><code>[author-name]</code></dt>
609 - <dd>Name of the author who wrote the post</dd>
610 -
611 - <dt><code>[feed-setting key="setting-name"]</code></dt>
612 - <dd>Value of a custom feed setting (named <code>setting-name</code>) for the feed</dd>
613 - </dl>
614 - </div>
615 -
616 -<?php
617 - print "<ul>\n";
618 - if ( !is_array($attrib)) : $attrib = array(); endif;
619 -
620 - print '<input type="hidden" id="next-boilerplate-rule-index" name="next_boilerplate_rule_index" value="'.count($attrib).'" />';
621 -
622 - // In AJAX environment, this is a dummy rule that stays hidden. In a
623 - // non-AJAX environment, this provides a blank rule that we can fill in.
624 - $attrib['new'] = array(
625 - 'class' => array('hide-if-js'),
626 - 'placement' => 'before',
627 - 'element' => 'post',
628 - 'template' => '',
629 - );
630 -
631 - foreach ($attrib as $index => $line) :
632 - if (isset($line['template'])) :
633 - $selected['before'] = (($line['placement']=='before') ? ' selected="selected"' : '');
634 - $selected['after'] = (($line['placement']=='after') ? ' selected="selected"' : '');
635 - $selected['title'] = (($line['element']=='title') ? ' selected="selected"' : '');
636 - $selected['post'] = (($line['element']=='post') ? ' selected="selected"' : '');
637 - $selected['excerpt'] = (($line['element']=='excerpt') ? ' selected="selected"' : '');
638 -
639 - if ( !isset($line['class'])) : $line['class'] = array(); endif;
640 - $line['class'][] = 'boilerplate-li';
641 -?>
642 -
643 -<li id="boilerplate-<?php print esc_attr($index); ?>-li" class="<?php print esc_attr(implode(' ', $line['class'])); ?>">&raquo; <strong>Add</strong> <select id="boilerplate-<?php print esc_attr($index); ?>-placement" name="boilerplate[<?php print esc_attr($index); ?>][placement]" style="width: 8.0em">
644 -<option value="before"<?php fwp_selected_flag( $selected, 'before' ); ?>>before</option>
645 -<option value="after"<?php fwp_selected_flag( $selected, 'after' ); ?>>after</option>
646 -</select> the <select style="width: 8.0em" id="boilerplate-<?php print esc_attr($index); ?>-element" name="boilerplate[<?php print esc_attr($index); ?>][element]">
647 -<option value="title"<?php fwp_selected_flag($selected, 'title' ); ?>>title</option>
648 -<option value="post"<?php fwp_selected_flag( $selected, 'post' ); ?>>content</option>
649 -<option value="excerpt"<?php fwp_selected_flag( $selected, 'excerpt' ); ?>>excerpt</option>
650 -</select> of
651 -<?php print esc_html($syndicatedPosts); ?>: <textarea style="vertical-align: top; width: 40%;" rows="2" cols="30" class="boilerplate-template" id="boilerplate-<?php print esc_attr($index); ?>-template" name="boilerplate[<?php print esc_attr($index); ?>][template]"><?php print esc_html($line['template']); ?></textarea></li>
652 -<?php
653 - endif;
654 - endforeach;
655 -?>
656 - </ul>
657 - <br style="clear: both" />
658 -
659 - <script type="text/javascript">
660 - jQuery(document).ready( function($) {
661 - $('.boilerplate-template').blur( function() {
662 - if (this.value.length == 0) {
663 - var theLi = $('li:has(#'+this.id+")");
664 - theLi.hide('normal')
665 - }
666 - } );
667 -
668 - var addRuleLi = document.createElement('li');
669 - addRuleLi.innerHTML = '<strong style="vertical-align: middle; font-size: 110%">[+]</strong> <a style="font-variant: small-caps" id="add-new-boilerplate-rule" href="#">Add new boilerplate</a> ….';
670 - $('#boilerplate-new-li').after(addRuleLi);
671 -
672 - $('#add-new-boilerplate-rule').click( function() {
673 - // Get index counter
674 - var nextIndex = parseInt($('#next-boilerplate-rule-index').val());
675 -
676 - var newIdPrefix = 'boilerplate-'+nextIndex;
677 - var newNamePrefix = 'boilerplate['+nextIndex+']';
678 -
679 - var dummy = {};
680 - dummy['li'] = {'el': $('#boilerplate-new-li') }
681 - dummy['placement'] = {'el': $('#boilerplate-new-placement') };
682 - dummy['element'] = {'el': $('#boilerplate-new-element') };
683 - dummy['template'] = {'el': $('#boilerplate-new-template') };
684 -
685 - for (var element in dummy) {
686 - dummy[element]['save'] = {
687 - 'id': dummy[element]['el'].attr('id'),
688 - 'name': dummy[element]['el'].attr('name')
689 - };
690 - dummy[element]['el'].attr('id', newIdPrefix+'-'+element);
691 - dummy[element]['el'].attr('name', newNamePrefix+'['+element+']');
692 - }
693 -
694 - var newLi = $('#'+newIdPrefix+'-li').clone(/*events=*/ true);
695 - //newLi.attr('id', null);
696 - newLi.removeClass('hide-if-js');
697 - newLi.addClass('boilerplate-li');
698 - newLi.css('display', 'none');
699 -
700 - // Switch back
701 - for (var element in dummy) {
702 - dummy[element]['el'].attr('id', dummy[element]['save']['id']);
703 - dummy[element]['el'].attr('name', dummy[element]['save']['name']);
704 - }
705 -
706 - $('#boilerplate-new-li').before(newLi);
707 - newLi.show('normal');
708 -
709 - $('#next-boilerplate-rule-index').val(nextIndex+1);
710 -
711 - return false;
712 - } )
713 - } );
714 - </script>
715 -<?php
716 - if ($page->for_default_settings()) :
717 -?>
718 - <h3>Advanced Settings</h3>
719 - <table class="edit-form narrow">
720 - <tbody>
721 - <tr><th scope="row"><?php esc_html_e("Hook Order:") ?></th>
722 - <td><input type="number" name="boilerplate_hook_order" value="<?php print esc_attr($hookOrder); ?>" /></td></tr>
723 - </tbody>
724 - </table>
725 -<?php
726 - endif;
727 - } /* FeedWordPressPostsPage::boilerplate_box() */
728 -
497 +
729 498 function display () {
730 499 $this->boxes_by_methods = array(
731 500 'publication_box' => __('Syndicated Posts'),
732 501 'links_box' => __('Links'),
733 502 'formatting_box' => __('Formatting'),
734 - 'boilerplate_box' => ('Boilerplate / Credits'),
735 503 'comments_and_pings_box' => __('Comments & Pings'),
736 504 'custom_post_settings_box' => __('Custom Post Settings (to apply to each syndicated post)'),
737 505 'custom_post_types_box' => ('Custom Post Types (advanced database settings)'),
738 506 );
739 -
507 +
740 508 parent::display();
741 509 } /* FeedWordPressPostsPage::display () */
742 -
743 -
744 510 }
745 511
746 512 $postsPage = new FeedWordPressPostsPage;
747 513 $postsPage->display();