PluginProbe
FeedWordPress / 2010.0531
FeedWordPress v2010.0531
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.0531, at admin-ui.php

819 lines 27.2 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 esc_html($field); ?>" 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 !important; background-color: #333 !important;
137 background:#797979 url(<?php bloginfo('url') ?>/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('url') ?>/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 esc_html($ddlink->link_name); ?></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 esc_html(WP_PLUGIN_URL.'/'.$GLOBALS['fwp_path'].'/feedwordpress.png'); ?>" alt="" /></div>
194 <?php
195 endif;
196 ?>
197
198 <h2><?php print esc_html(__($pagename.($all ? '' : ' Settings'))); ?><?php if ($this->for_feed_settings()) : ?>: <?php echo esc_html($this->link->link->link_name); ?><?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 esc_html($mesg); ?></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 esc_html($this->link->link->link_name); ?></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 if (is_wp_error($added)) :
512 $mesgs = $added->get_error_messages();
513 foreach ($mesgs as $mesg) :
514 echo "<br/><strong>Feed error:</strong> <code>$mesg</code>";
515 endforeach;
516 echo "</li>\n";
517 else :
518 echo " completed in $dt second".(($dt==1)?'':'s')."</li>\n";
519 endif;
520 }
521
522 function fwp_author_list () {
523 global $wpdb;
524 $ret = array();
525
526 // display_name introduced in WP 2.0
527 if (fwp_test_wp_version(FWP_SCHEMA_20)) :
528 $name_column = 'display_name';
529 else :
530 $name_column = 'user_nickname';
531 endif;
532
533 $users = $wpdb->get_results("SELECT * FROM $wpdb->users ORDER BY {$name_column}");
534 if (is_array($users)) :
535 foreach ($users as $user) :
536 $id = (int) $user->ID;
537 $ret[$id] = $user->{$name_column};
538 if (strlen(trim($ret[$id])) == 0) :
539 $ret[$id] = $user->user_login;
540 endif;
541 endforeach;
542 endif;
543 return $ret;
544 }
545
546 class FeedWordPressSettingsUI {
547 function instead_of_posts_box ($link_id = null) {
548 if (!is_null($link_id)) :
549 $from_this_feed = 'from this feed';
550 $by_default = '';
551 $id_param = "&amp;link_id=".$link_id;
552 else :
553 $from_this_feed = 'from syndicated feeds';
554 $by_default = " by default";
555 $id_param = "";
556 endif;
557 ?>
558 <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>
559 settings page to set up how new posts <?php print $from_this_feed; ?> will be published<?php $by_default; ?>, whether they will accept
560 comments and pings, any custom fields that should be set on each post, etc.</p>
561 <?php
562 } /* FeedWordPressSettingsUI::instead_of_posts_box () */
563
564 function instead_of_authors_box ($link_id = null) {
565 if (!is_null($link_id)) :
566 $from_this_feed = 'from this feed';
567 $by_default = '';
568 $id_param = "&amp;link_id=".$link_id;
569 else :
570 $from_this_feed = 'from syndicated feeds';
571 $by_default = " by default";
572 $id_param = "";
573 endif;
574
575 ?>
576 <p>Use the <a
577 href="admin.php?page=<?php print $GLOBALS['fwp_path']
578 ?>/authors-page.php<?php print $id_param; ?>"><?php _e('Authors');
579 ?></a> settings page to set up how new posts
580 <?php print $from_this_feed; ?> will be assigned to
581 authors.</p>
582 <?php
583 } /* FeedWordPressSettingsUI::instead_of_authors_box () */
584
585 function instead_of_categories_box ($link_id = null) {
586 if (!is_null($link_id)) :
587 $from_this_feed = 'from this feed';
588 $by_default = '';
589 $id_param = "&amp;link_id=".$link_id;
590 else :
591 $from_this_feed = 'from syndicated feeds';
592 $by_default = " by default";
593 $id_param = "";
594 endif;
595
596 ?>
597 <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>
598 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>
599 <?php
600 } /* FeedWordPressSettingsUI::instead_of_categories_box () */
601
602 /*static*/ function ajax_nonce_fields () {
603 if (function_exists('wp_nonce_field')) :
604 echo "<form style='display: none' method='get' action=''>\n<p>\n";
605 wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
606 wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
607 echo "</p>\n</form>\n";
608 endif;
609 } /* FeedWordPressSettingsUI::ajax_nonce_fields () */
610
611 /*static*/ function fix_toggles_js ($context) {
612 ?>
613 <script type="text/javascript">
614 jQuery(document).ready( function($) {
615 <?php if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_29)) : ?>
616 if ( $('#post_tag').length ) {
617 tagBox.init();
618 }
619 <?php endif; ?>
620 <?php if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_25, FWP_SCHEMA_27)) : ?>
621 // In case someone got here first...
622 jQuery('.postbox h3').unbind('click');
623
624 add_postbox_toggles('<?php print $context; ?>');
625 <?php elseif (FeedWordPressCompatibility::test_version(FWP_SCHEMA_27)) : ?>
626 // In case someone got here first...
627 $('.postbox h3, .postbox .handlediv').unbind('click');
628 $('.postbox h3 a').unbind('click');
629 $('.hide-postbox-tog').unbind('click');
630 $('.columns-prefs input[type="radio"]').unbind('click');
631 $('.meta-box-sortables').sortable('destroy');
632
633 postboxes.add_postbox_toggles('<?php print $context; ?>');
634 <?php endif; ?>
635 } );
636 </script>
637 <?php
638 } /* FeedWordPressSettingsUI::fix_toggles_js () */
639
640 function magic_input_tip_js ($id) {
641 if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_25)) :
642 ?>
643 <script type="text/javascript">
644 jQuery(document).ready( function () {
645 var inputBox = jQuery("#<?php print $id; ?>");
646 var boxEl = inputBox.get(0);
647 if (boxEl.value==boxEl.defaultValue) { inputBox.addClass('form-input-tip'); }
648 inputBox.focus(function() {
649 if ( this.value == this.defaultValue )
650 jQuery(this).val( '' ).removeClass( 'form-input-tip' );
651 });
652 inputBox.blur(function() {
653 if ( this.value == '' )
654 jQuery(this).val( this.defaultValue ).addClass( 'form-input-tip' );
655 });
656 } );
657 </script>
658 <?php
659 endif;
660 } /* FeedWordPressSettingsUI::magic_input_tip_js () */
661 } /* class FeedWordPressSettingsUI */
662
663 function fwp_insert_new_user ($newuser_name) {
664 global $wpdb;
665
666 $ret = null;
667 if (strlen($newuser_name) > 0) :
668 $userdata = array();
669 $userdata['ID'] = NULL;
670
671 $userdata['user_login'] = sanitize_user($newuser_name);
672 $userdata['user_login'] = apply_filters('pre_user_login', $userdata['user_login']);
673
674 $userdata['user_nicename'] = sanitize_title($newuser_name);
675 $userdata['user_nicename'] = apply_filters('pre_user_nicename', $userdata['user_nicename']);
676
677 $userdata['display_name'] = $wpdb->escape($newuser_name);
678
679 $newuser_id = wp_insert_user($userdata);
680 if (is_numeric($newuser_id)) :
681 $ret = $newuser_id;
682 else :
683 // TODO: Add some error detection and reporting
684 endif;
685 else :
686 // TODO: Add some error reporting
687 endif;
688 return $ret;
689 } /* fwp_insert_new_user () */
690
691 function fwp_add_meta_box ($id, $title, $callback, $page, $context = 'advanced', $priority = 'default', $callback_args = null) {
692 if (function_exists('add_meta_box')) :
693 return add_meta_box($id, $title, $callback, $page, $context, $priority, $callback_args);
694 else :
695 /* Re-used as per terms of the GPL from add_meta_box() in WordPress 2.8.1 wp-admin/includes/template.php. */
696 global $wp_meta_boxes;
697
698 if ( !isset($wp_meta_boxes) )
699 $wp_meta_boxes = array();
700 if ( !isset($wp_meta_boxes[$page]) )
701 $wp_meta_boxes[$page] = array();
702 if ( !isset($wp_meta_boxes[$page][$context]) )
703 $wp_meta_boxes[$page][$context] = array();
704
705 foreach ( array_keys($wp_meta_boxes[$page]) as $a_context ) {
706 foreach ( array('high', 'core', 'default', 'low') as $a_priority ) {
707 if ( !isset($wp_meta_boxes[$page][$a_context][$a_priority][$id]) )
708 continue;
709
710 // If a core box was previously added or removed by a plugin, don't add.
711 if ( 'core' == $priority ) {
712 // If core box previously deleted, don't add
713 if ( false === $wp_meta_boxes[$page][$a_context][$a_priority][$id] )
714 return;
715 // If box was added with default priority, give it core priority to maintain sort order
716 if ( 'default' == $a_priority ) {
717 $wp_meta_boxes[$page][$a_context]['core'][$id] = $wp_meta_boxes[$page][$a_context]['default'][$id];
718 unset($wp_meta_boxes[$page][$a_context]['default'][$id]);
719 }
720 return;
721 }
722 // If no priority given and id already present, use existing priority
723 if ( empty($priority) ) {
724 $priority = $a_priority;
725 // 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.
726 } elseif ( 'sorted' == $priority ) {
727 $title = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['title'];
728 $callback = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['callback'];
729 $callback_args = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['args'];
730 }
731 // An id can be in only one priority and one context
732 if ( $priority != $a_priority || $context != $a_context )
733 unset($wp_meta_boxes[$page][$a_context][$a_priority][$id]);
734 }
735 }
736
737 if ( empty($priority) )
738 $priority = 'low';
739
740 if ( !isset($wp_meta_boxes[$page][$context][$priority]) )
741 $wp_meta_boxes[$page][$context][$priority] = array();
742
743 $wp_meta_boxes[$page][$context][$priority][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $callback_args);
744 endif;
745 } /* function fwp_add_meta_box () */
746
747 function fwp_do_meta_boxes($page, $context, $object) {
748 if (function_exists('do_meta_boxes')) :
749 $ret = do_meta_boxes($page, $context, $object);
750
751 // Avoid JavaScript error from WordPress 2.5 bug
752 ?>
753 <div style="display: none">
754 <div id="tags-input"></div> <!-- avoid JS error from WP 2.5 bug -->
755 </div>
756 <?php
757 return $ret;
758 else :
759 /* Derived as per terms of the GPL from do_meta_boxes() in WordPress 2.8.1 wp-admin/includes/template.php. */
760 global $wp_meta_boxes;
761 static $already_sorted = false;
762
763 //do_action('do_meta_boxes', $page, $context, $object);
764
765 echo "<div id='$context-sortables' class='meta-box-sortables'>\n";
766
767 $i = 0;
768 do {
769 if ( !isset($wp_meta_boxes) || !isset($wp_meta_boxes[$page]) || !isset($wp_meta_boxes[$page][$context]) )
770 break;
771
772 foreach ( array('high', 'sorted', 'core', 'default', 'low') as $priority ) {
773 if ( isset($wp_meta_boxes[$page][$context][$priority]) ) {
774 foreach ( (array) $wp_meta_boxes[$page][$context][$priority] as $box ) {
775 if ( false == $box || ! $box['title'] )
776 continue;
777 $i++;
778 fwp_option_box_opener($box['title'], $box['id'], 'postbox' /*. postbox_classes($box['id'], $page)*/);
779 call_user_func($box['callback'], $object, $box);
780 fwp_option_box_closer();
781
782 if (is_object($object) and method_exists($object, 'interstitial')) :
783 $object->interstitial();
784 else :
785 // Submit button for WP 1.5, early 2.x style
786 fwp_settings_form_periodic_submit();
787 endif;
788 }
789 }
790 }
791 } while(0);
792
793 echo "</div>";
794
795 return $i;
796 endif;
797 } /* function fwp_do_meta_boxes() */
798
799 function fwp_remove_meta_box($id, $page, $context) {
800 if (function_exists('remove_meta_box')) :
801 return remove_meta_box($id, $page, $context);
802 else :
803 /* Re-used as per terms of the GPL from remove_meta_box() in WordPress 2.8.1 wp-admin/includes/template.php */
804 global $wp_meta_boxes;
805
806 if ( !isset($wp_meta_boxes) )
807 $wp_meta_boxes = array();
808 if ( !isset($wp_meta_boxes[$page]) )
809 $wp_meta_boxes[$page] = array();
810 if ( !isset($wp_meta_boxes[$page][$context]) )
811 $wp_meta_boxes[$page][$context] = array();
812
813 foreach ( array('high', 'core', 'default', 'low') as $priority )
814 $wp_meta_boxes[$page][$context][$priority][$id] = false;
815 endif;
816 } /* function fwp_remove_meta_box() */
817
818
819