PluginProbe
FeedWordPress / 2011.0211.2
FeedWordPress v2011.0211.2
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.0211.2 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();