PluginProbe
FeedWordPress / 2009.1111
FeedWordPress v2009.1111
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 2009.1111, at admin-ui.php

783 lines 25.5 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_28)) : // WordPress 2.8+
393 ?>
394 <?php print $desc; ?>
395 <div class="tagsdiv" id="post_tag">
396 <div class="jaxtag">
397 <div class="nojs-tags hide-if-js">
398 <p><?php _e('Add or remove tags'); ?></p>
399 <textarea name="tax_input[post_tag]" class="the-tags" id="tax-input[post_tag]"><?php echo implode(",", $tags); ?></textarea>
400 </div>
401
402 <span class="ajaxtag hide-if-no-js">
403 <label class="screen-reader-text" for="new-tag-post_tag"><?php _e('Tags'); ?></label>
404 <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'); ?>" />
405 <input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" />
406 </span>
407 </div>
408 <p class="howto"><?php echo __('Separate tags with commas.'); ?></p>
409 <div class="tagchecklist"></div>
410 </div>
411 <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>
412 </div>
413 </div>
414 <?php
415 else :
416 ?>
417 <?php print $desc; ?>
418 <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>
419 <div id="tagchecklist"></div>
420 </div>
421 </div>
422 <?php
423 endif;
424 }
425
426 function fwp_category_box ($checked, $object, $tags = array()) {
427 global $wp_db_version;
428
429 if (fwp_test_wp_version(FWP_SCHEMA_25)) : // WordPress 2.5.x
430 ?>
431 <div id="category-adder" class="wp-hidden-children">
432 <h4><a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a></h4>
433 <p id="category-add" class="wp-hidden-child">
434 <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php _e( 'New category name' ); ?>" tabindex="3" />
435 <?php wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?>
436 <input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php _e( 'Add' ); ?>" tabindex="3" />
437 <?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
438 <span id="category-ajax-response"></span>
439 </p>
440 </div>
441
442 <ul id="category-tabs">
443 <?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... */ ?>
444 <li class="ui-tabs-selected tabs"><a href="#categories-all" tabindex="3"><?php _e( 'All posts' ); ?></a>
445 <p style="font-size:smaller;font-style:bold;margin:0">Give <?php print $object; ?> these categories</p>
446 </li>
447 </ul>
448
449 <?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... */ ?>
450 <div id="categories-all" class="ui-tabs-panel tabs-panel">
451 <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
452 <?php fwp_category_checklist(NULL, false, $checked) ?>
453 </ul>
454 </div>
455 <?php
456 elseif (fwp_test_wp_version(FWP_SCHEMA_20)) : // WordPress 2.x
457 ?>
458 <div id="moremeta" style="position: relative; right: auto">
459 <div id="grabit" class="dbx-group">
460 <fieldset id="categorydiv" class="dbx-box">
461 <h3 class="dbx-handle"><?php _e('Categories') ?></h3>
462 <div class="dbx-content">
463 <p style="font-size:smaller;font-style:bold;margin:0">Place <?php print $object; ?> under...</p>
464 <p id="jaxcat"></p>
465 <div id="categorychecklist"><?php fwp_category_checklist(NULL, false, $checked); ?></div>
466 </div>
467 </fieldset>
468 </div>
469 </div>
470 <?php
471 else : // WordPress 1.5
472 ?>
473 <fieldset style="width: 60%;">
474 <legend><?php _e('Categories') ?></legend>
475 <p style="font-size:smaller;font-style:bold;margin:0">Place <?php print $object; ?> under...</p>
476 <div style="height: 10em; overflow: scroll;"><?php fwp_category_checklist(NULL, false, $checked); ?></div>
477 </fieldset>
478 <?php
479 endif;
480 }
481
482 function update_feeds_mention ($feed) {
483 echo "<li>Updating <cite>".$feed['link/name']."</cite> from &lt;<a href=\""
484 .$feed['link/uri']."\">".$feed['link/uri']."</a>&gt; ...";
485 flush();
486 }
487 function update_feeds_finish ($feed, $added, $dt) {
488 echo " completed in $dt second".(($dt==1)?'':'s')."</li>\n";
489 }
490
491 function fwp_author_list () {
492 global $wpdb;
493 $ret = array();
494
495 // display_name introduced in WP 2.0
496 if (fwp_test_wp_version(FWP_SCHEMA_20)) :
497 $name_column = 'display_name';
498 else :
499 $name_column = 'user_nickname';
500 endif;
501
502 $users = $wpdb->get_results("SELECT * FROM $wpdb->users ORDER BY {$name_column}");
503 if (is_array($users)) :
504 foreach ($users as $user) :
505 $id = (int) $user->ID;
506 $ret[$id] = $user->{$name_column};
507 if (strlen(trim($ret[$id])) == 0) :
508 $ret[$id] = $user->user_login;
509 endif;
510 endforeach;
511 endif;
512 return $ret;
513 }
514
515 class FeedWordPressSettingsUI {
516 function instead_of_posts_box ($link_id = null) {
517 if (!is_null($link_id)) :
518 $from_this_feed = 'from this feed';
519 $by_default = '';
520 $id_param = "&amp;link_id=".$link_id;
521 else :
522 $from_this_feed = 'from syndicated feeds';
523 $by_default = " by default";
524 $id_param = "";
525 endif;
526 ?>
527 <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>
528 settings page to set up how new posts <?php print $from_this_feed; ?> will be published<?php $by_default; ?>, whether they will accept
529 comments and pings, any custom fields that should be set on each post, etc.</p>
530 <?php
531 } /* FeedWordPressSettingsUI::instead_of_posts_box () */
532
533 function instead_of_authors_box ($link_id = null) {
534 if (!is_null($link_id)) :
535 $from_this_feed = 'from this feed';
536 $by_default = '';
537 $id_param = "&amp;link_id=".$link_id;
538 else :
539 $from_this_feed = 'from syndicated feeds';
540 $by_default = " by default";
541 $id_param = "";
542 endif;
543
544 ?>
545 <p>Use the <a
546 href="admin.php?page=<?php print $GLOBALS['fwp_path']
547 ?>/authors-page.php<?php print $id_param; ?>"><?php _e('Authors');
548 ?></a> settings page to set up how new posts
549 <?php print $from_this_feed; ?> will be assigned to
550 authors.</p>
551 <?php
552 } /* FeedWordPressSettingsUI::instead_of_authors_box () */
553
554 function instead_of_categories_box ($link_id = null) {
555 if (!is_null($link_id)) :
556 $from_this_feed = 'from this feed';
557 $by_default = '';
558 $id_param = "&amp;link_id=".$link_id;
559 else :
560 $from_this_feed = 'from syndicated feeds';
561 $by_default = " by default";
562 $id_param = "";
563 endif;
564
565 ?>
566 <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>
567 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>
568 <?php
569 } /* FeedWordPressSettingsUI::instead_of_categories_box () */
570
571 /*static*/ function ajax_nonce_fields () {
572 if (function_exists('wp_nonce_field')) :
573 echo "<form style='display: none' method='get' action=''>\n<p>\n";
574 wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
575 wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
576 echo "</p>\n</form>\n";
577 endif;
578 } /* FeedWordPressSettingsUI::ajax_nonce_fields () */
579
580 /*static*/ function fix_toggles_js ($context) {
581 ?>
582 <script type="text/javascript">
583 jQuery(document).ready( function($) {
584 <?php if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_25, FWP_SCHEMA_27)) : ?>
585 // In case someone got here first...
586 jQuery('.postbox h3').unbind('click');
587
588 add_postbox_toggles('<?php print $context; ?>');
589 <?php elseif (FeedWordPressCompatibility::test_version(FWP_SCHEMA_27)) : ?>
590 // In case someone got here first...
591 $('.postbox h3, .postbox .handlediv').unbind('click');
592 $('.postbox h3 a').unbind('click');
593 $('.hide-postbox-tog').unbind('click');
594 $('.columns-prefs input[type="radio"]').unbind('click');
595 $('.meta-box-sortables').sortable('destroy');
596
597 postboxes.add_postbox_toggles('<?php print $context; ?>');
598 <?php endif; ?>
599 } );
600 </script>
601 <?php
602 } /* FeedWordPressSettingsUI::fix_toggles_js () */
603
604 function magic_input_tip_js ($id) {
605 if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_25)) :
606 ?>
607 <script type="text/javascript">
608 jQuery(document).ready( function () {
609 var inputBox = jQuery("#<?php print $id; ?>");
610 var boxEl = inputBox.get(0);
611 if (boxEl.value==boxEl.defaultValue) { inputBox.addClass('form-input-tip'); }
612 inputBox.focus(function() {
613 if ( this.value == this.defaultValue )
614 jQuery(this).val( '' ).removeClass( 'form-input-tip' );
615 });
616 inputBox.blur(function() {
617 if ( this.value == '' )
618 jQuery(this).val( this.defaultValue ).addClass( 'form-input-tip' );
619 });
620 } );
621 </script>
622 <?php
623 endif;
624 } /* FeedWordPressSettingsUI::magic_input_tip_js () */
625 } /* class FeedWordPressSettingsUI */
626
627 function fwp_insert_new_user ($newuser_name) {
628 global $wpdb;
629
630 $ret = null;
631 if (strlen($newuser_name) > 0) :
632 $userdata = array();
633 $userdata['ID'] = NULL;
634
635 $userdata['user_login'] = sanitize_user($newuser_name);
636 $userdata['user_login'] = apply_filters('pre_user_login', $userdata['user_login']);
637
638 $userdata['user_nicename'] = sanitize_title($newuser_name);
639 $userdata['user_nicename'] = apply_filters('pre_user_nicename', $userdata['user_nicename']);
640
641 $userdata['display_name'] = $wpdb->escape($newuser_name);
642
643 $newuser_id = wp_insert_user($userdata);
644 if (is_numeric($newuser_id)) :
645 $ret = $newuser_id;
646 else :
647 // TODO: Add some error detection and reporting
648 endif;
649 else :
650 // TODO: Add some error reporting
651 endif;
652 return $ret;
653 } /* fwp_insert_new_user () */
654
655 function fwp_add_meta_box ($id, $title, $callback, $page, $context = 'advanced', $priority = 'default', $callback_args = null) {
656 if (function_exists('add_meta_box')) :
657 return add_meta_box($id, $title, $callback, $page, $context, $priority, $callback_args);
658 else :
659 /* Re-used as per terms of the GPL from add_meta_box() in WordPress 2.8.1 wp-admin/includes/template.php. */
660 global $wp_meta_boxes;
661
662 if ( !isset($wp_meta_boxes) )
663 $wp_meta_boxes = array();
664 if ( !isset($wp_meta_boxes[$page]) )
665 $wp_meta_boxes[$page] = array();
666 if ( !isset($wp_meta_boxes[$page][$context]) )
667 $wp_meta_boxes[$page][$context] = array();
668
669 foreach ( array_keys($wp_meta_boxes[$page]) as $a_context ) {
670 foreach ( array('high', 'core', 'default', 'low') as $a_priority ) {
671 if ( !isset($wp_meta_boxes[$page][$a_context][$a_priority][$id]) )
672 continue;
673
674 // If a core box was previously added or removed by a plugin, don't add.
675 if ( 'core' == $priority ) {
676 // If core box previously deleted, don't add
677 if ( false === $wp_meta_boxes[$page][$a_context][$a_priority][$id] )
678 return;
679 // If box was added with default priority, give it core priority to maintain sort order
680 if ( 'default' == $a_priority ) {
681 $wp_meta_boxes[$page][$a_context]['core'][$id] = $wp_meta_boxes[$page][$a_context]['default'][$id];
682 unset($wp_meta_boxes[$page][$a_context]['default'][$id]);
683 }
684 return;
685 }
686 // If no priority given and id already present, use existing priority
687 if ( empty($priority) ) {
688 $priority = $a_priority;
689 // 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.
690 } elseif ( 'sorted' == $priority ) {
691 $title = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['title'];
692 $callback = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['callback'];
693 $callback_args = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['args'];
694 }
695 // An id can be in only one priority and one context
696 if ( $priority != $a_priority || $context != $a_context )
697 unset($wp_meta_boxes[$page][$a_context][$a_priority][$id]);
698 }
699 }
700
701 if ( empty($priority) )
702 $priority = 'low';
703
704 if ( !isset($wp_meta_boxes[$page][$context][$priority]) )
705 $wp_meta_boxes[$page][$context][$priority] = array();
706
707 $wp_meta_boxes[$page][$context][$priority][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $callback_args);
708 endif;
709 } /* function fwp_add_meta_box () */
710
711 function fwp_do_meta_boxes($page, $context, $object) {
712 if (function_exists('do_meta_boxes')) :
713 $ret = do_meta_boxes($page, $context, $object);
714
715 // Avoid JavaScript error from WordPress 2.5 bug
716 ?>
717 <div style="display: none">
718 <div id="tags-input"></div> <!-- avoid JS error from WP 2.5 bug -->
719 </div>
720 <?php
721 return $ret;
722 else :
723 /* Derived as per terms of the GPL from do_meta_boxes() in WordPress 2.8.1 wp-admin/includes/template.php. */
724 global $wp_meta_boxes;
725 static $already_sorted = false;
726
727 //do_action('do_meta_boxes', $page, $context, $object);
728
729 echo "<div id='$context-sortables' class='meta-box-sortables'>\n";
730
731 $i = 0;
732 do {
733 if ( !isset($wp_meta_boxes) || !isset($wp_meta_boxes[$page]) || !isset($wp_meta_boxes[$page][$context]) )
734 break;
735
736 foreach ( array('high', 'sorted', 'core', 'default', 'low') as $priority ) {
737 if ( isset($wp_meta_boxes[$page][$context][$priority]) ) {
738 foreach ( (array) $wp_meta_boxes[$page][$context][$priority] as $box ) {
739 if ( false == $box || ! $box['title'] )
740 continue;
741 $i++;
742 fwp_option_box_opener($box['title'], $box['id'], 'postbox' /*. postbox_classes($box['id'], $page)*/);
743 call_user_func($box['callback'], $object, $box);
744 fwp_option_box_closer();
745
746 if (is_object($object) and method_exists($object, 'interstitial')) :
747 $object->interstitial();
748 else :
749 // Submit button for WP 1.5, early 2.x style
750 fwp_settings_form_periodic_submit();
751 endif;
752 }
753 }
754 }
755 } while(0);
756
757 echo "</div>";
758
759 return $i;
760 endif;
761 } /* function fwp_do_meta_boxes() */
762
763 function fwp_remove_meta_box($id, $page, $context) {
764 if (function_exists('remove_meta_box')) :
765 return remove_meta_box($id, $page, $context);
766 else :
767 /* Re-used as per terms of the GPL from remove_meta_box() in WordPress 2.8.1 wp-admin/includes/template.php */
768 global $wp_meta_boxes;
769
770 if ( !isset($wp_meta_boxes) )
771 $wp_meta_boxes = array();
772 if ( !isset($wp_meta_boxes[$page]) )
773 $wp_meta_boxes[$page] = array();
774 if ( !isset($wp_meta_boxes[$page][$context]) )
775 $wp_meta_boxes[$page][$context] = array();
776
777 foreach ( array('high', 'core', 'default', 'low') as $priority )
778 $wp_meta_boxes[$page][$context][$priority][$id] = false;
779 endif;
780 } /* function fwp_remove_meta_box() */
781
782
783