Make WordPress Core

Ticket #5112: link-control.diff

File link-control.diff, 3.9 KB (added by Otto42, 19 years ago)

Add control panel to Links widget

  • wp-includes/widgets.php

     
    397397
    398398function wp_widget_links($args) {
    399399        extract($args, EXTR_SKIP);
     400        $options = get_option( 'widget_links' );
     401       
     402        $orderby = empty( $options['orderby'] ) ? 'name' : $options['orderby'];
     403        $order = empty( $options['order'] ) ? 'ASC' : $options['order'];
     404       
    400405        wp_list_bookmarks(array(
    401406                'title_before' => $before_title, 'title_after' => $after_title,
    402407                'category_before' => $before_widget, 'category_after' => $after_widget,
    403                 'show_images' => true, 'class' => 'linkcat widget'
     408                'show_images' => true, 'class' => 'linkcat widget',
     409                'order' => $order, 'orderby' => $orderby,
    404410        ));
    405411}
    406412
     413function wp_widget_links_control() {
     414        $options = $newoptions = get_option('widget_links');
     415        if ( $_POST["links-submit"] ) {
     416       
     417                $orderby = strip_tags(stripslashes($_POST["links-orderby"]));
     418                $order = strip_tags(stripslashes($_POST["links-order"]));
     419               
     420                if ( in_array( $orderby, array( 'id','url','name','target','description','owner','rating','updated','rel','notes','rss','length','rand') ) ) {
     421                        $newoptions['orderby'] = $orderby;
     422                } else {
     423                        $newoptions['orderby'] = 'name';
     424                }
     425               
     426                if ( in_array( $order, array( 'ASC','DESC' ) ) ) {
     427                        $newoptions['order'] = $order;
     428                } else {
     429                        $newoptions['order'] = 'ASC';
     430                }
     431               
     432        }
     433        if ( $options != $newoptions ) {
     434                $options = $newoptions;
     435                update_option('widget_links', $options);
     436        }
     437?>
     438                        <p><label for="links-orderby"><?php _e('Link Ordering:'); ?>
     439                        <select name="links-orderby" id="links-orderby">
     440                                <option value='id'<?php selected( $options['orderby'], 'id' ); ?>><?php _e('ID'); ?></option>
     441                                <option value='url'<?php selected( $options['orderby'], 'url' ); ?>><?php _e('URL'); ?></option>
     442                                <option value='name'<?php selected( $options['orderby'], 'name' ); ?>><?php _e('Name'); ?></option>
     443                                <option value='target'<?php selected( $options['orderby'], 'target' ); ?>><?php _e('Target'); ?></option>
     444                                <option value='description'<?php selected( $options['orderby'], 'description' ); ?>><?php _e('Description'); ?></option>
     445                                <option value='owner'<?php selected( $options['orderby'], 'owner' ); ?>><?php _e('Owner'); ?></option>
     446                                <option value='rating'<?php selected( $options['orderby'], 'rating' ); ?>><?php _e('Rating'); ?></option>
     447                                <option value='updated'<?php selected( $options['orderby'], 'updated' ); ?>><?php _e('Updated'); ?></option>
     448                                <option value='rel'<?php selected( $options['orderby'], 'rel' ); ?>><?php _e('Relationship'); ?></option>
     449                                <option value='notes'<?php selected( $options['orderby'], 'notes' ); ?>><?php _e('Notes'); ?></option>
     450                                <option value='rss'<?php selected( $options['orderby'], 'rss' ); ?>><?php _e('RSS'); ?></option>
     451                                <option value='length'<?php selected( $options['orderby'], 'length' ); ?>><?php _e('Length'); ?></option>
     452                                <option value='rand'<?php selected( $options['orderby'], 'rand' ); ?>><?php _e('Random'); ?></option>
     453                        </select></label></p>
     454                        <p><label for="links-order"><?php _e('Link Order:'); ?>
     455                        <select name="links-order" id="links-order">
     456                                <option value='ASC'<?php selected( $options['order'], 'ASC' ); ?>><?php _e('Ascending'); ?></option>
     457                                <option value='DESC'<?php selected( $options['order'], 'DESC' ); ?>><?php _e('Descending'); ?></option>
     458                        </select></label></p>
     459                        <input type="hidden" id="links-submit" name="links-submit" value="1" />
     460<?php
     461}
     462
    407463function wp_widget_search($args) {
    408464        extract($args);
    409465?>
     
    11381194
    11391195        $class['classname'] = 'widget_links';
    11401196        wp_register_sidebar_widget('links', __('Links'), 'wp_widget_links', $class);
     1197        wp_register_widget_control('links', __('Links'), 'wp_widget_links_control', $dims150);
    11411198
    11421199        $class['classname'] = 'widget_meta';
    11431200        wp_register_sidebar_widget('meta', __('Meta'), 'wp_widget_meta', $class);