Changeset 10802
- Timestamp:
- 03/17/2009 03:39:36 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/default-widgets.php
r10801 r10802 283 283 } 284 284 285 286 285 /** 287 286 * Calendar widget class … … 324 323 325 324 /** 326 * Display the Text widget, depending on the widget number. 327 * 328 * Supports multiple text widgets and keeps track of the widget number by using 329 * the $widget_args parameter. The option 'widget_text' is used to store the 330 * content for the widgets. The content and title are passed through the 331 * 'widget_text' and 'widget_title' filters respectively. 332 * 333 * @since 2.2.0 334 * 335 * @param array $args Widget arguments. 336 * @param int $number Widget number. 337 */ 338 function wp_widget_text($args, $widget_args = 1) { 339 extract( $args, EXTR_SKIP ); 340 if ( is_numeric($widget_args) ) 341 $widget_args = array( 'number' => $widget_args ); 342 $widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) ); 343 extract( $widget_args, EXTR_SKIP ); 344 345 $options = get_option('widget_text'); 346 if ( !isset($options[$number]) ) 347 return; 348 349 $title = apply_filters('widget_title', $options[$number]['title']); 350 $text = apply_filters( 'widget_text', $options[$number]['text'] ); 351 ?> 352 <?php echo $before_widget; ?> 353 <?php if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?> 325 * Text widget class 326 * 327 * @since 2.8.0 328 */ 329 class WP_Widget_Text extends WP_Widget { 330 331 function WP_Widget_Text() { 332 $widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML')); 333 $control_ops = array('width' => 400, 'height' => 350); 334 $this->WP_Widget('text', __('Text'), $widget_ops, $control_ops); 335 } 336 337 function widget( $args, $instance ) { 338 extract($args); 339 $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); 340 $text = apply_filters( 'widget_text', $instance['text'] ); 341 echo $before_widget; 342 if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?> 354 343 <div class="textwidget"><?php echo $text; ?></div> 355 <?php echo $after_widget; ?> 356 <?php 357 } 358 359 /** 360 * Display and process text widget options form. 361 * 362 * @since 2.2.0 363 * 364 * @param int $widget_args Widget number. 365 */ 366 function wp_widget_text_control($widget_args) { 367 global $wp_registered_widgets; 368 static $updated = false; 369 370 if ( is_numeric($widget_args) ) 371 $widget_args = array( 'number' => $widget_args ); 372 $widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) ); 373 extract( $widget_args, EXTR_SKIP ); 374 375 $options = get_option('widget_text'); 376 if ( !is_array($options) ) 377 $options = array(); 378 379 if ( !$updated && !empty($_POST['sidebar']) ) { 380 $sidebar = (string) $_POST['sidebar']; 381 382 $sidebars_widgets = wp_get_sidebars_widgets(); 383 if ( isset($sidebars_widgets[$sidebar]) ) 384 $this_sidebar =& $sidebars_widgets[$sidebar]; 344 <?php 345 echo $after_widget; 346 } 347 348 function update( $new_instance, $old_instance ) { 349 $instance = $old_instance; 350 $instance['title'] = strip_tags($new_instance['title']); 351 if ( current_user_can('unfiltered_html') ) 352 $instance['text'] = $new_instance['text']; 385 353 else 386 $this_sidebar = array(); 387 388 foreach ( (array) $this_sidebar as $_widget_id ) { 389 if ( 'wp_widget_text' == $wp_registered_widgets[$_widget_id]['callback'] && isset($wp_registered_widgets[$_widget_id]['params'][0]['number']) ) { 390 $widget_number = $wp_registered_widgets[$_widget_id]['params'][0]['number']; 391 if ( !in_array( "text-$widget_number", $_POST['widget-id'] ) ) // the widget has been removed. 392 unset($options[$widget_number]); 393 } 394 } 395 396 foreach ( (array) $_POST['widget-text'] as $widget_number => $widget_text ) { 397 if ( !isset($widget_text['text']) && isset($options[$widget_number]) ) // user clicked cancel 398 continue; 399 $title = strip_tags(stripslashes($widget_text['title'])); 400 if ( current_user_can('unfiltered_html') ) 401 $text = stripslashes( $widget_text['text'] ); 402 else 403 $text = stripslashes(wp_filter_post_kses( $widget_text['text'] )); 404 $options[$widget_number] = compact( 'title', 'text' ); 405 } 406 407 update_option('widget_text', $options); 408 $updated = true; 409 } 410 411 if ( -1 == $number ) { 412 $title = ''; 413 $text = ''; 414 $number = '%i%'; 415 } else { 416 $title = attribute_escape($options[$number]['title']); 417 $text = format_to_edit($options[$number]['text']); 418 } 419 ?> 420 <p> 421 <input class="widefat" id="text-title-<?php echo $number; ?>" name="widget-text[<?php echo $number; ?>][title]" type="text" value="<?php echo $title; ?>" /> 422 <textarea class="widefat" rows="16" cols="20" id="text-text-<?php echo $number; ?>" name="widget-text[<?php echo $number; ?>][text]"><?php echo $text; ?></textarea> 423 <input type="hidden" name="widget-text[<?php echo $number; ?>][submit]" value="1" /> 424 </p> 425 <?php 426 } 427 428 /** 429 * Register text widget on startup. 430 * 431 * @since 2.2.0 432 */ 433 function wp_widget_text_register() { 434 $options = get_option('widget_text'); 435 if ( !is_array($options) ) 436 $options = array(); 437 438 $widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML')); 439 $control_ops = array('width' => 400, 'height' => 350, 'id_base' => 'text'); 440 $name = __('Text'); 441 442 $id = false; 443 foreach ( (array) array_keys($options) as $o ) { 444 // Old widgets can have null values for some reason 445 if ( !isset($options[$o]['title']) || !isset($options[$o]['text']) ) 446 continue; 447 $id = "text-$o"; // Never never never translate an id 448 wp_register_sidebar_widget($id, $name, 'wp_widget_text', $widget_ops, array( 'number' => $o )); 449 wp_register_widget_control($id, $name, 'wp_widget_text_control', $control_ops, array( 'number' => $o )); 450 } 451 452 // If there are none, we register the widget's existance with a generic template 453 if ( !$id ) { 454 wp_register_sidebar_widget( 'text-1', $name, 'wp_widget_text', $widget_ops, array( 'number' => -1 ) ); 455 wp_register_widget_control( 'text-1', $name, 'wp_widget_text_control', $control_ops, array( 'number' => -1 ) ); 354 $instance['text'] = wp_filter_post_kses( $new_instance['text'] ); 355 return $instance; 356 } 357 358 function form( $instance ) { 359 $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '' ) ); 360 $title = strip_tags($instance['title']); 361 $text = format_to_edit($instance['text']); 362 ?> 363 <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo attribute_escape($title); ?>" /></label></p> 364 <textarea class="widefat" rows="16" cols="20" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>"><?php echo $text; ?></textarea> 365 <input type="hidden" id="<?php echo $this->get_field_id('submit'); ?>" name="<?php echo $this->get_field_name('submit'); ?>" value="1" /> 366 <?php 456 367 } 457 368 } … … 1327 1238 new WP_Widget_Search(); 1328 1239 1240 new WP_Widget_Text(); 1241 1329 1242 $widget_ops = array('classname' => 'widget_recent_entries', 'description' => __( "The most recent posts on your blog") ); 1330 1243 wp_register_sidebar_widget('recent-posts', __('Recent Posts'), 'wp_widget_recent_entries', $widget_ops); … … 1336 1249 1337 1250 wp_widget_categories_register(); 1338 wp_widget_text_register();1339 1251 wp_widget_rss_register(); 1340 1252 wp_widget_recent_comments_register();
Note: See TracChangeset
for help on using the changeset viewer.