PluginProbe
FeedWordPress / 2010.0127
FeedWordPress v2010.0127
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
feedwordpress / admin-ui.php

admin-ui.php in FeedWordPress 2010.0127, at admin-ui.php

811 lines 27.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 class FeedWordPressAdminPage {
3 var $context;
4 var $updated = false;
5 var $link = NULL;
6 var $dispatch = NULL;
7 var $filename = NULL;
8
9 /**
10 * Construct the admin page object.
11 *
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 */
14 function FeedWordPressAdminPage ($page = 'feedwordpressadmin', $link = NULL) {
15 $this->link = $link;
16
17 // Set meta-box context name
18 $this->context = $page;
19 if ($this->for_feed_settings()) :
20 $this->context .= 'forfeed';
21 endif;
22 } /* FeedWordPressAdminPage constructor */
23
24 function for_feed_settings () { return (is_object($this->link) and method_exists($this->link, 'found') and $this->link->found()); }
25 function for_default_settings () { return !$this->for_feed_settings(); }
26
27 /*static*/ function submitted_link_id () {
28 global $fwp_post;
29
30 // Presume global unless we get a specific link ID
31 $link_id = NULL;
32
33 $submit_buttons = array(
34 'save',
35 'submit',
36 'fix_mismatch',
37 'feedfinder',
38 );
39 foreach ($submit_buttons as $field) :
40 if (isset($fwp_post[$field])) :
41 $link_id = $_REQUEST['save_link_id'];
42 endif;
43 endforeach;
44
45 if (is_null($link_id) and isset($_REQUEST['link_id'])) :
46 $link_id = $_REQUEST['link_id'];
47 endif;
48
49 return $link_id;
50 } /* FeedWordPressAdminPage::submitted_link_id() */
51
52 /*static*/ function submitted_link () {
53 $link_id = FeedWordPressAdminPage::submitted_link_id();
54 if (is_numeric($link_id) and $link_id) :
55 $link =& new SyndicatedLink($link_id);
56 else :
57 $link = NULL;
58 endif;
59 return $link;
60 } /* FeedWordPressAdminPage::submitted_link () */
61
62 function stamp_link_id ($field = null) {
63 if (is_null($field)) : $field = 'save_link_id'; endif;
64 ?>
65 <input type="hidden" name="<?php print wp_specialchars($field, 'both'); ?>" value="<?php print ($this->for_feed_settings() ? $this->link->id : '*'); ?>" />
66 <?php
67 } /* FeedWordPressAdminPage::stamp_link_id () */
68
69 function these_posts_phrase () {
70 if ($this->for_feed_settings()) :
71 $phrase = __('posts from this feed');
72 else :
73 $phrase = __('syndicated posts');
74 endif;
75 return $phrase;
76 } /* FeedWordPressAdminPage::these_posts_phrase() */
77
78 /**
79 * Provides a uniquely identifying name for the interface context for
80 * use with add_meta_box() and do_meta_boxes(),
81 *
82 * @return string the context name
83 *
84 * @see add_meta_box()
85 * @see do_meta_boxes()
86 */
87 function meta_box_context () {
88 return $this->context;
89 } /* FeedWordPressAdminPage::meta_box_context () */
90
91 /**
92 * Outputs JavaScript to fix AJAX toggles settings.
93 *
94 * @uses FeedWordPressAdminPage::meta_box_context()
95 */
96 function fix_toggles () {
97 FeedWordPressSettingsUI::fix_toggles_js($this->meta_box_context());
98 } /* FeedWordPressAdminPage::fix_toggles() */
99
100 function ajax_interface_js () {
101 ?>
102 <script type="text/javascript">
103 function contextual_appearance (item, appear, disappear, value, visibleStyle, checkbox) {
104 if (typeof(visibleStyle)=='undefined') visibleStyle = 'block';
105
106 var rollup=document.getElementById(item);
107 var newuser=document.getElementById(appear);
108 var sitewide=document.getElementById(disappear);
109 if (rollup) {
110 if ((checkbox && rollup.checked) || (!checkbox && value==rollup.value)) {
111 if (newuser) newuser.style.display=visibleStyle;
112 if (sitewide) sitewide.style.display='none';
113 } else {
114 if (newuser) newuser.style.display='none';
115 if (sitewide) sitewide.style.display=visibleStyle;
116 }
117 }
118 }
119 </script>
120
121 <?php
122 } /* FeedWordPressAdminPage::ajax_interface_js () */
123
124 function display_feed_select_dropdown() {
125 $links = FeedWordPress::syndicated_links();
126 if (fwp_test_wp_version(FWP_SCHEMA_27)) :
127 ?>
128 <style type="text/css">
129 #post-search {
130 float: right;
131 margin:11px 12px 0;
132 min-width: 130px;
133 position:relative;
134 }
135 .fwpfs {
136 color: #dddddd;
137 background:#797979 url(<?php bloginfo('home') ?>/wp-admin/images/fav.png) repeat-x scroll left center;
138 border-color:#777777 #777777 #666666 !important; -moz-border-radius-bottomleft:12px;
139 -moz-border-radius-bottomright:12px;
140 -moz-border-radius-topleft:12px;
141 -moz-border-radius-topright:12px;
142 border-style:solid;
143 border-width:1px;
144 line-height:15px;
145 padding:3px 30px 4px 12px;
146 }
147 .fwpfs.slide-down {
148 border-bottom-color: #626262;
149 -moz-border-radius-bottomleft:0;
150 -moz-border-radius-bottomright:0;
151 -moz-border-radius-topleft:12px;
152 -moz-border-radius-topright:12px;
153 background-image:url(<?php bloginfo('home') ?>/wp-admin/images/fav-top.png);
154 background-position:0 top;
155 background-repeat:repeat-x;
156 border-bottom-style:solid;
157 border-bottom-width:1px;
158 }
159 </style>
160
161 <script type="text/javascript">
162 jQuery(document).ready(function($){
163 $('.fwpfs').toggle(
164 function(){$('.fwpfs').removeClass('slideUp').addClass('slideDown'); setTimeout(function(){if ( $('.fwpfs').hasClass('slideDown') ) { $('.fwpfs').addClass('slide-down'); }}, 10) },
165 function(){$('.fwpfs').removeClass('slideDown').addClass('slideUp'); setTimeout(function(){if ( $('.fwpfs').hasClass('slideUp') ) { $('.fwpfs').removeClass('slide-down'); }}, 10) }
166 );
167 $('.fwpfs').bind(
168 'change',
169 function () { this.form.submit(); }
170 );
171 $('#post-search .button').css( 'display', 'none' );
172 });
173 </script>
174 <?php
175 endif;
176
177 ?>
178 <p id="post-search">
179 <select name="link_id" class="fwpfs" style="max-width: 20.0em;">
180 <option value="*"<?php if ($this->for_default_settings()) : ?> selected="selected"<?php endif; ?>>- defaults for all feeds -</option>
181 <?php if ($links) : foreach ($links as $ddlink) : ?>
182 <option value="<?php print (int) $ddlink->link_id; ?>"<?php if (!is_null($this->link) and ($this->link->id==$ddlink->link_id)) : ?> selected="selected"<?php endif; ?>><?php print wp_specialchars($ddlink->link_name, 1); ?></option>
183 <?php endforeach; endif; ?>
184 </select>
185 <input class="button" type="submit" name="go" value="<?php _e('Go') ?> &raquo;" />
186 </p>
187 <?php
188 } /* FeedWordPressAdminPage::display_feed_select_dropdown() */
189
190 function display_sheet_header ($pagename = 'Syndication', $all = false) {
191 if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_27)) :
192 ?>
193 <div class="icon32"><img src="<?php print wp_specialchars(WP_PLUGIN_URL.'/'.$GLOBALS['fwp_path'].'/feedwordpress.png', 1); ?>" alt="" /></div>
194 <?php
195 endif;
196 ?>
197
198 <h2><?php print wp_specialchars(__($pagename.($all ? '' : ' Settings')), 1); ?><?php if ($this->for_feed_settings()) : ?>: <?php echo wp_specialchars($this->link->link->link_name, 1); ?><?php endif; ?></h2>
199 <?php
200 }
201
202 function display_update_notice_if_updated ($pagename = 'Syndication', $mesg = NULL) {
203 if ($this->updated) :
204 if ($this->updated === true) :
205 $mesg = $pagename . ' settings updated.';
206 else :
207 $mesg = $this->updated;
208 endif;
209 endif;
210
211 if (!is_null($mesg)) :
212 ?>
213 <div class="updated">
214 <p><?php print wp_specialchars($mesg, 1); ?></p>
215 </div>
216 <?php
217 endif;
218 } /* FeedWordPressAdminPage::display_update_notice_if_updated() */
219
220 function display_settings_scope_message () {
221 if ($this->for_feed_settings()) :
222 ?>
223 <p>These settings only affect posts syndicated from
224 <strong><?php echo wp_specialchars($this->link->link->link_name, 1); ?></strong>.</p>
225 <?php
226 else :
227 ?>
228 <p>These settings affect posts syndicated from any feed unless they are overridden
229 by settings for that specific feed.</p>
230 <?php
231 endif;
232 } /* FeedWordPressAdminPage::display_settings_scope_message () */
233
234 /*static*/ function has_link () { return true; }
235
236 function open_sheet ($header) {
237 // Set up prepatory AJAX stuff
238 $this->ajax_interface_js();
239 if (function_exists('add_meta_box')) :
240 add_action(
241 FeedWordPressCompatibility::bottom_script_hook($this->filename),
242 /*callback=*/ array($this, 'fix_toggles'),
243 /*priority=*/ 10000
244 );
245 FeedWordPressSettingsUI::ajax_nonce_fields();
246 endif;
247
248 ?>
249 <div class="wrap" style="position:relative">
250 <?php
251 if (!is_null($header)) :
252 $this->display_sheet_header($header);
253 endif;
254
255 if (!is_null($this->dispatch)) :
256 ?>
257 <form action="admin.php?page=<?php print $GLOBALS['fwp_path']; ?>/<?php echo basename($this->filename); ?>" method="post">
258 <div><?php
259 FeedWordPressCompatibility::stamp_nonce($this->dispatch);
260 $this->stamp_link_id();
261 ?></div>
262 <?php
263 endif;
264
265 if ($this->has_link()) :
266 $this->display_feed_select_dropdown();
267 $this->display_settings_scope_message();
268 endif;
269
270 if (function_exists('do_meta_boxes')) :
271 ?>
272 <div id="poststuff">
273 <?php
274 else :
275 ?>
276 </div> <!-- class="wrap" -->
277 <?php
278 endif;
279
280 if (!is_null($this->dispatch)) :
281 fwp_settings_form_single_submit();
282 endif;
283 } /* FeedWordPressAdminPage::open_sheet () */
284
285 function close_sheet () {
286 // WordPress 2.5+
287 if (function_exists('do_meta_boxes')) :
288 ?>
289 </div> <!-- id="poststuff" -->
290 <?php if (!is_null($this->dispatch)) : ?>
291 <?php fwp_settings_form_single_submit_closer(); ?>
292 </form>
293 <?php endif; ?>
294 </div> <!-- class="wrap" -->
295 <?php
296 endif;
297 }
298 } /* class FeedWordPressAdminPage */
299
300 function fwp_settings_form_single_submit ($caption = NULL) {
301 if (fwp_test_wp_version(FWP_SCHEMA_25, FWP_SCHEMA_27)) :
302 if (is_null($caption)) : $caption = __('Save'); endif;
303 ?>
304 <div class="submitbox" id="submitlink">
305 <div id="previewview"></div>
306 <div class="inside"></div>
307
308 <p class="submit">
309 <input type="submit" name="save" value="<?php print $caption; ?>" />
310 </p>
311 </div>
312 <?php
313 endif;
314 }
315
316 function fwp_settings_form_periodic_submit ($caption = NULL) {
317 if (!fwp_test_wp_version(FWP_SCHEMA_25)) :
318 if (is_null($caption)) : $caption = __('Save Changes &raquo;'); endif;
319 ?>
320 <p class="submit">
321 <input type="submit" name="save" value="<?php print $caption; ?>" />
322 </p>
323 <?php
324 endif;
325 }
326
327 function fwp_settings_form_single_submit_closer ($caption = NULL) {
328 if (fwp_test_wp_version(FWP_SCHEMA_27)) :
329 if (is_null($caption)) : $caption = __('Save Changes'); endif;
330 ?>
331 <p class="submit">
332 <input class="button-primary" type="submit" name="save" value="<?php print $caption; ?>" />
333 </p>
334 <?php
335 endif;
336 }
337
338 function fwp_authors_single_submit ($link = NULL) {
339 global $wp_db_version;
340
341 if (fwp_test_wp_version(FWP_SCHEMA_25)) :
342 ?>
343 <div class="submitbox" id="submitlink">
344 <div id="previewview">
345 </div>
346 <div class="inside">
347 </div>
348
349 <p class="submit">
350 <input type="submit" name="save" value="<?php _e('Save') ?>" />
351 </p>
352 </div>
353 <?php
354 endif;
355 }
356
357 function fwp_option_box_opener ($legend, $id, $class = "stuffbox") {
358 // WordPress 2.5+
359 if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_25)) :
360 ?>
361 <div id="<?php print $id; ?>" class="<?php print $class; ?>">
362 <h3><?php print htmlspecialchars($legend); ?></h3>
363 <div class="inside">
364 <?php
365 else :
366 ?>
367 <div class="wrap">
368 <h2><?php print htmlspecialchars($legend); ?></h2>
369 <?php
370 endif;
371 }
372
373 function fwp_option_box_closer () {
374 global $wp_db_version;
375 if (isset($wp_db_version) and $wp_db_version >= FWP_SCHEMA_25) :
376 ?>
377 </div> <!-- class="inside" -->
378 </div> <!-- class="stuffbox" -->
379 <?php
380 else :
381 ?>
382 </div> <!-- class="wrap" -->
383 <?php
384 endif;
385 }
386
387 function fwp_tags_box ($tags, $object) {
388 if (!is_array($tags)) : $tags = array(); endif;
389
390 $desc = "<p style=\"font-size:smaller;font-style:bold;margin:0\">Tag $object as...</p>";
391
392 if (fwp_test_wp_version(FWP_SCHEMA_29)) : // WordPress 2.9+
393 print $desc;
394 $tax_name = 'post_tag';
395 $helps = __('Separate tags with commas.');
396 $box['title'] = __('Tags');
397 ?>
398 <div class="tagsdiv" id="<?php echo $tax_name; ?>">
399 <div class="jaxtag">
400 <div class="nojs-tags hide-if-js">
401 <p><?php _e('Add or remove tags'); ?></p>
402 <textarea name="<?php echo "tax_input[$tax_name]"; ?>" class="the-tags" id="tax-input[<?php echo $tax_name; ?>]"><?php echo esc_attr(implode(",", $tags)); ?></textarea></div>
403
404 <div class="ajaxtag hide-if-no-js">
405 <label class="screen-reader-text" for="new-tag-<?php echo $tax_name; ?>"><?php echo $box['title']; ?></label>
406 <div class="taghint"><?php _e('Add new tag'); ?></div>
407 <input type="text" id="new-tag-<?php echo $tax_name; ?>" name="newtag[<?php echo $tax_name; ?>]" class="newtag form-input-tip" size="16" autocomplete="off" value="" />
408 <input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" tabindex="3" />
409 </div></div>
410 <p class="howto"><?php echo $helps; ?></p>
411 <div class="tagchecklist"></div>
412 </div>
413 <p class="hide-if-no-js"><a href="#titlediv" class="tagcloud-link" id="link-<?php echo $tax_name; ?>"><?php printf( __('Choose from the most used tags in %s'), $box['title'] ); ?></a></p>
414 <?php
415 elseif (fwp_test_wp_version(FWP_SCHEMA_28)) : // WordPress 2.8+
416 ?>
417 <?php print $desc; ?>
418 <div class="tagsdiv" id="post_tag">
419 <div class="jaxtag">
420 <div class="nojs-tags hide-if-js">
421 <p><?php _e('Add or remove tags'); ?></p>
422 <textarea name="tax_input[post_tag]" class="the-tags" id="tax-input[post_tag]"><?php echo implode(",", $tags); ?></textarea>
423 </div>
424
425 <span class="ajaxtag hide-if-no-js">
426 <label class="screen-reader-text" for="new-tag-post_tag"><?php _e('Tags'); ?></label>
427 <input type="text" id="new-tag-post_tag" name="newtag[post_tag]" class="newtag form-input-tip" size="16" autocomplete="off" value="<?php esc_attr_e('Add new tag'); ?>" />
428 <input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" />
429 </span>
430 </div>
431 <p class="howto"><?php echo __('Separate tags with commas.'); ?></p>
432 <div class="tagchecklist"></div>
433 </div>
434 <p class="tagcloud-link hide-if-no-js"><a href="#titlediv" class="tagcloud-link" id="link-post_tag"><?php printf( __('Choose from the most used tags in %s'), 'Post Tags'); ?></a></p>
435 </div>
436 </div>
437 <?php
438 else :
439 ?>
440 <?php print $desc; ?>
441 <p id="jaxtag"><input type="text" name="tags_input" class="tags-input" id="tags-input" size="40" tabindex="3" value="<?php echo implode(",", $tags); ?>" /></p>
442 <div id="tagchecklist"></div>
443 </div>
444 </div>
445 <?php
446 endif;
447 }
448
449 function fwp_category_box ($checked, $object, $tags = array()) {
450 global $wp_db_version;
451
452 if (fwp_test_wp_version(FWP_SCHEMA_25)) : // WordPress 2.5.x
453 ?>
454 <div id="category-adder" class="wp-hidden-children">
455 <h4><a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a></h4>
456 <p id="category-add" class="wp-hidden-child">
457 <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php _e( 'New category name' ); ?>" tabindex="3" />
458 <?php wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?>
459 <input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php _e( 'Add' ); ?>" tabindex="3" />
460 <?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
461 <span id="category-ajax-response"></span>
462 </p>
463 </div>
464
465 <ul id="category-tabs">
466 <?php /* ui-tabs-selected in WP 2.7 CSS = tabs in WP 2.8 CSS. Thank you, o brilliant wordsmiths of the WordPress 2.8 stylesheet... */ ?>
467 <li class="ui-tabs-selected tabs"><a href="#categories-all" tabindex="3"><?php _e( 'All posts' ); ?></a>
468 <p style="font-size:smaller;font-style:bold;margin:0">Give <?php print $object; ?> these categories</p>
469 </li>
470 </ul>
471
472 <?php /* ui-tabs-panel in WP 2.7 CSS = tabs-panel in WP 2.8 CSS. Thank you, o brilliant wordsmiths of the WordPress 2.8 stylesheet... */ ?>
473 <div id="categories-all" class="ui-tabs-panel tabs-panel">
474 <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
475 <?php fwp_category_checklist(NULL, false, $checked) ?>
476 </ul>
477 </div>
478 <?php
479 elseif (fwp_test_wp_version(FWP_SCHEMA_20)) : // WordPress 2.x
480 ?>
481 <div id="moremeta" style="position: relative; right: auto">
482 <div id="grabit" class="dbx-group">
483 <fieldset id="categorydiv" class="dbx-box">
484 <h3 class="dbx-handle"><?php _e('Categories') ?></h3>
485 <div class="dbx-content">
486 <p style="font-size:smaller;font-style:bold;margin:0">Place <?php print $object; ?> under...</p>
487 <p id="jaxcat"></p>
488 <div id="categorychecklist"><?php fwp_category_checklist(NULL, false, $checked); ?></div>
489 </div>
490 </fieldset>
491 </div>
492 </div>
493 <?php
494 else : // WordPress 1.5
495 ?>
496 <fieldset style="width: 60%;">
497 <legend><?php _e('Categories') ?></legend>
498 <p style="font-size:smaller;font-style:bold;margin:0">Place <?php print $object; ?> under...</p>
499 <div style="height: 10em; overflow: scroll;"><?php fwp_category_checklist(NULL, false, $checked); ?></div>
500 </fieldset>
501 <?php
502 endif;
503 }
504
505 function update_feeds_mention ($feed) {
506 echo "<li>Updating <cite>".$feed['link/name']."</cite> from &lt;<a href=\""
507 .$feed['link/uri']."\">".$feed['link/uri']."</a>&gt; ...";
508 flush();
509 }
510 function update_feeds_finish ($feed, $added, $dt) {
511 echo " completed in $dt second".(($dt==1)?'':'s')."</li>\n";
512 }
513
514 function fwp_author_list () {
515 global $wpdb;
516 $ret = array();
517
518 // display_name introduced in WP 2.0
519 if (fwp_test_wp_version(FWP_SCHEMA_20)) :
520 $name_column = 'display_name';
521 else :
522 $name_column = 'user_nickname';
523 endif;
524
525 $users = $wpdb->get_results("SELECT * FROM $wpdb->users ORDER BY {$name_column}");
526 if (is_array($users)) :
527 foreach ($users as $user) :
528 $id = (int) $user->ID;
529 $ret[$id] = $user->{$name_column};
530 if (strlen(trim($ret[$id])) == 0) :
531 $ret[$id] = $user->user_login;
532 endif;
533 endforeach;
534 endif;
535 return $ret;
536 }
537
538 class FeedWordPressSettingsUI {
539 function instead_of_posts_box ($link_id = null) {
540 if (!is_null($link_id)) :
541 $from_this_feed = 'from this feed';
542 $by_default = '';
543 $id_param = "&amp;link_id=".$link_id;
544 else :
545 $from_this_feed = 'from syndicated feeds';
546 $by_default = " by default";
547 $id_param = "";
548 endif;
549 ?>
550 <p>Use the <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/posts-page.php<?php print $id_param; ?>"><?php _e('Posts & Links'); ?></a>
551 settings page to set up how new posts <?php print $from_this_feed; ?> will be published<?php $by_default; ?>, whether they will accept
552 comments and pings, any custom fields that should be set on each post, etc.</p>
553 <?php
554 } /* FeedWordPressSettingsUI::instead_of_posts_box () */
555
556 function instead_of_authors_box ($link_id = null) {
557 if (!is_null($link_id)) :
558 $from_this_feed = 'from this feed';
559 $by_default = '';
560 $id_param = "&amp;link_id=".$link_id;
561 else :
562 $from_this_feed = 'from syndicated feeds';
563 $by_default = " by default";
564 $id_param = "";
565 endif;
566
567 ?>
568 <p>Use the <a
569 href="admin.php?page=<?php print $GLOBALS['fwp_path']
570 ?>/authors-page.php<?php print $id_param; ?>"><?php _e('Authors');
571 ?></a> settings page to set up how new posts
572 <?php print $from_this_feed; ?> will be assigned to
573 authors.</p>
574 <?php
575 } /* FeedWordPressSettingsUI::instead_of_authors_box () */
576
577 function instead_of_categories_box ($link_id = null) {
578 if (!is_null($link_id)) :
579 $from_this_feed = 'from this feed';
580 $by_default = '';
581 $id_param = "&amp;link_id=".$link_id;
582 else :
583 $from_this_feed = 'from syndicated feeds';
584 $by_default = " by default";
585 $id_param = "";
586 endif;
587
588 ?>
589 <p>Use the <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/categories-page.php<?php print $id_param; ?>"><?php _e('Categories'.FEEDWORDPRESS_AND_TAGS); ?></a>
590 settings page to set up how new posts <?php print $from_this_feed; ?> are assigned categories <?php if (FeedWordPressCompatibility::post_tags()) : ?>or tags<?php endif; ?><?php print $by_default; ?>.</p>
591 <?php
592 } /* FeedWordPressSettingsUI::instead_of_categories_box () */
593
594 /*static*/ function ajax_nonce_fields () {
595 if (function_exists('wp_nonce_field')) :
596 echo "<form style='display: none' method='get' action=''>\n<p>\n";
597 wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
598 wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
599 echo "</p>\n</form>\n";
600 endif;
601 } /* FeedWordPressSettingsUI::ajax_nonce_fields () */
602
603 /*static*/ function fix_toggles_js ($context) {
604 ?>
605 <script type="text/javascript">
606 jQuery(document).ready( function($) {
607 <?php if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_29)) : ?>
608 if ( $('#post_tag').length ) {
609 tagBox.init();
610 }
611 <?php endif; ?>
612 <?php if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_25, FWP_SCHEMA_27)) : ?>
613 // In case someone got here first...
614 jQuery('.postbox h3').unbind('click');
615
616 add_postbox_toggles('<?php print $context; ?>');
617 <?php elseif (FeedWordPressCompatibility::test_version(FWP_SCHEMA_27)) : ?>
618 // In case someone got here first...
619 $('.postbox h3, .postbox .handlediv').unbind('click');
620 $('.postbox h3 a').unbind('click');
621 $('.hide-postbox-tog').unbind('click');
622 $('.columns-prefs input[type="radio"]').unbind('click');
623 $('.meta-box-sortables').sortable('destroy');
624
625 postboxes.add_postbox_toggles('<?php print $context; ?>');
626 <?php endif; ?>
627 } );
628 </script>
629 <?php
630 } /* FeedWordPressSettingsUI::fix_toggles_js () */
631
632 function magic_input_tip_js ($id) {
633 if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_25)) :
634 ?>
635 <script type="text/javascript">
636 jQuery(document).ready( function () {
637 var inputBox = jQuery("#<?php print $id; ?>");
638 var boxEl = inputBox.get(0);
639 if (boxEl.value==boxEl.defaultValue) { inputBox.addClass('form-input-tip'); }
640 inputBox.focus(function() {
641 if ( this.value == this.defaultValue )
642 jQuery(this).val( '' ).removeClass( 'form-input-tip' );
643 });
644 inputBox.blur(function() {
645 if ( this.value == '' )
646 jQuery(this).val( this.defaultValue ).addClass( 'form-input-tip' );
647 });
648 } );
649 </script>
650 <?php
651 endif;
652 } /* FeedWordPressSettingsUI::magic_input_tip_js () */
653 } /* class FeedWordPressSettingsUI */
654
655 function fwp_insert_new_user ($newuser_name) {
656 global $wpdb;
657
658 $ret = null;
659 if (strlen($newuser_name) > 0) :
660 $userdata = array();
661 $userdata['ID'] = NULL;
662
663 $userdata['user_login'] = sanitize_user($newuser_name);
664 $userdata['user_login'] = apply_filters('pre_user_login', $userdata['user_login']);
665
666 $userdata['user_nicename'] = sanitize_title($newuser_name);
667 $userdata['user_nicename'] = apply_filters('pre_user_nicename', $userdata['user_nicename']);
668
669 $userdata['display_name'] = $wpdb->escape($newuser_name);
670
671 $newuser_id = wp_insert_user($userdata);
672 if (is_numeric($newuser_id)) :
673 $ret = $newuser_id;
674 else :
675 // TODO: Add some error detection and reporting
676 endif;
677 else :
678 // TODO: Add some error reporting
679 endif;
680 return $ret;
681 } /* fwp_insert_new_user () */
682
683 function fwp_add_meta_box ($id, $title, $callback, $page, $context = 'advanced', $priority = 'default', $callback_args = null) {
684 if (function_exists('add_meta_box')) :
685 return add_meta_box($id, $title, $callback, $page, $context, $priority, $callback_args);
686 else :
687 /* Re-used as per terms of the GPL from add_meta_box() in WordPress 2.8.1 wp-admin/includes/template.php. */
688 global $wp_meta_boxes;
689
690 if ( !isset($wp_meta_boxes) )
691 $wp_meta_boxes = array();
692 if ( !isset($wp_meta_boxes[$page]) )
693 $wp_meta_boxes[$page] = array();
694 if ( !isset($wp_meta_boxes[$page][$context]) )
695 $wp_meta_boxes[$page][$context] = array();
696
697 foreach ( array_keys($wp_meta_boxes[$page]) as $a_context ) {
698 foreach ( array('high', 'core', 'default', 'low') as $a_priority ) {
699 if ( !isset($wp_meta_boxes[$page][$a_context][$a_priority][$id]) )
700 continue;
701
702 // If a core box was previously added or removed by a plugin, don't add.
703 if ( 'core' == $priority ) {
704 // If core box previously deleted, don't add
705 if ( false === $wp_meta_boxes[$page][$a_context][$a_priority][$id] )
706 return;
707 // If box was added with default priority, give it core priority to maintain sort order
708 if ( 'default' == $a_priority ) {
709 $wp_meta_boxes[$page][$a_context]['core'][$id] = $wp_meta_boxes[$page][$a_context]['default'][$id];
710 unset($wp_meta_boxes[$page][$a_context]['default'][$id]);
711 }
712 return;
713 }
714 // If no priority given and id already present, use existing priority
715 if ( empty($priority) ) {
716 $priority = $a_priority;
717 // else if we're adding to the sorted priortiy, we don't know the title or callback. Glab them from the previously added context/priority.
718 } elseif ( 'sorted' == $priority ) {
719 $title = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['title'];
720 $callback = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['callback'];
721 $callback_args = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['args'];
722 }
723 // An id can be in only one priority and one context
724 if ( $priority != $a_priority || $context != $a_context )
725 unset($wp_meta_boxes[$page][$a_context][$a_priority][$id]);
726 }
727 }
728
729 if ( empty($priority) )
730 $priority = 'low';
731
732 if ( !isset($wp_meta_boxes[$page][$context][$priority]) )
733 $wp_meta_boxes[$page][$context][$priority] = array();
734
735 $wp_meta_boxes[$page][$context][$priority][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $callback_args);
736 endif;
737 } /* function fwp_add_meta_box () */
738
739 function fwp_do_meta_boxes($page, $context, $object) {
740 if (function_exists('do_meta_boxes')) :
741 $ret = do_meta_boxes($page, $context, $object);
742
743 // Avoid JavaScript error from WordPress 2.5 bug
744 ?>
745 <div style="display: none">
746 <div id="tags-input"></div> <!-- avoid JS error from WP 2.5 bug -->
747 </div>
748 <?php
749 return $ret;
750 else :
751 /* Derived as per terms of the GPL from do_meta_boxes() in WordPress 2.8.1 wp-admin/includes/template.php. */
752 global $wp_meta_boxes;
753 static $already_sorted = false;
754
755 //do_action('do_meta_boxes', $page, $context, $object);
756
757 echo "<div id='$context-sortables' class='meta-box-sortables'>\n";
758
759 $i = 0;
760 do {
761 if ( !isset($wp_meta_boxes) || !isset($wp_meta_boxes[$page]) || !isset($wp_meta_boxes[$page][$context]) )
762 break;
763
764 foreach ( array('high', 'sorted', 'core', 'default', 'low') as $priority ) {
765 if ( isset($wp_meta_boxes[$page][$context][$priority]) ) {
766 foreach ( (array) $wp_meta_boxes[$page][$context][$priority] as $box ) {
767 if ( false == $box || ! $box['title'] )
768 continue;
769 $i++;
770 fwp_option_box_opener($box['title'], $box['id'], 'postbox' /*. postbox_classes($box['id'], $page)*/);
771 call_user_func($box['callback'], $object, $box);
772 fwp_option_box_closer();
773
774 if (is_object($object) and method_exists($object, 'interstitial')) :
775 $object->interstitial();
776 else :
777 // Submit button for WP 1.5, early 2.x style
778 fwp_settings_form_periodic_submit();
779 endif;
780 }
781 }
782 }
783 } while(0);
784
785 echo "</div>";
786
787 return $i;
788 endif;
789 } /* function fwp_do_meta_boxes() */
790
791 function fwp_remove_meta_box($id, $page, $context) {
792 if (function_exists('remove_meta_box')) :
793 return remove_meta_box($id, $page, $context);
794 else :
795 /* Re-used as per terms of the GPL from remove_meta_box() in WordPress 2.8.1 wp-admin/includes/template.php */
796 global $wp_meta_boxes;
797
798 if ( !isset($wp_meta_boxes) )
799 $wp_meta_boxes = array();
800 if ( !isset($wp_meta_boxes[$page]) )
801 $wp_meta_boxes[$page] = array();
802 if ( !isset($wp_meta_boxes[$page][$context]) )
803 $wp_meta_boxes[$page][$context] = array();
804
805 foreach ( array('high', 'core', 'default', 'low') as $priority )
806 $wp_meta_boxes[$page][$context][$priority][$id] = false;
807 endif;
808 } /* function fwp_remove_meta_box() */
809
810
811