Index: wp-includes/widgets.php
===================================================================
--- wp-includes/widgets.php	(revision 6181)
+++ wp-includes/widgets.php	(working copy)
@@ -397,13 +397,69 @@
 
 function wp_widget_links($args) {
 	extract($args, EXTR_SKIP);
+	$options = get_option( 'widget_links' );
+	
+	$orderby = empty( $options['orderby'] ) ? 'name' : $options['orderby'];
+	$order = empty( $options['order'] ) ? 'ASC' : $options['order'];
+	
 	wp_list_bookmarks(array(
 		'title_before' => $before_title, 'title_after' => $after_title,
 		'category_before' => $before_widget, 'category_after' => $after_widget,
-		'show_images' => true, 'class' => 'linkcat widget'
+		'show_images' => true, 'class' => 'linkcat widget',
+		'order' => $order, 'orderby' => $orderby,
 	));
 }
 
+function wp_widget_links_control() {
+	$options = $newoptions = get_option('widget_links');
+	if ( $_POST["links-submit"] ) {
+	
+		$orderby = strip_tags(stripslashes($_POST["links-orderby"]));
+		$order = strip_tags(stripslashes($_POST["links-order"]));
+		
+		if ( in_array( $orderby, array( 'id','url','name','target','description','owner','rating','updated','rel','notes','rss','length','rand') ) ) {
+			$newoptions['orderby'] = $orderby;
+		} else {
+			$newoptions['orderby'] = 'name';
+		}
+		
+		if ( in_array( $order, array( 'ASC','DESC' ) ) ) {
+			$newoptions['order'] = $order;
+		} else {
+			$newoptions['order'] = 'ASC';
+		}
+		
+	}
+	if ( $options != $newoptions ) {
+		$options = $newoptions;
+		update_option('widget_links', $options);
+	}
+?>
+			<p><label for="links-orderby"><?php _e('Link Ordering:'); ?>
+			<select name="links-orderby" id="links-orderby">
+				<option value='id'<?php selected( $options['orderby'], 'id' ); ?>><?php _e('ID'); ?></option>
+				<option value='url'<?php selected( $options['orderby'], 'url' ); ?>><?php _e('URL'); ?></option>
+				<option value='name'<?php selected( $options['orderby'], 'name' ); ?>><?php _e('Name'); ?></option>
+				<option value='target'<?php selected( $options['orderby'], 'target' ); ?>><?php _e('Target'); ?></option>
+				<option value='description'<?php selected( $options['orderby'], 'description' ); ?>><?php _e('Description'); ?></option>
+				<option value='owner'<?php selected( $options['orderby'], 'owner' ); ?>><?php _e('Owner'); ?></option>
+				<option value='rating'<?php selected( $options['orderby'], 'rating' ); ?>><?php _e('Rating'); ?></option>
+				<option value='updated'<?php selected( $options['orderby'], 'updated' ); ?>><?php _e('Updated'); ?></option>
+				<option value='rel'<?php selected( $options['orderby'], 'rel' ); ?>><?php _e('Relationship'); ?></option>
+				<option value='notes'<?php selected( $options['orderby'], 'notes' ); ?>><?php _e('Notes'); ?></option>
+				<option value='rss'<?php selected( $options['orderby'], 'rss' ); ?>><?php _e('RSS'); ?></option>
+				<option value='length'<?php selected( $options['orderby'], 'length' ); ?>><?php _e('Length'); ?></option>
+				<option value='rand'<?php selected( $options['orderby'], 'rand' ); ?>><?php _e('Random'); ?></option>
+			</select></label></p>
+			<p><label for="links-order"><?php _e('Link Order:'); ?>
+			<select name="links-order" id="links-order">
+				<option value='ASC'<?php selected( $options['order'], 'ASC' ); ?>><?php _e('Ascending'); ?></option>
+				<option value='DESC'<?php selected( $options['order'], 'DESC' ); ?>><?php _e('Descending'); ?></option>
+			</select></label></p>
+			<input type="hidden" id="links-submit" name="links-submit" value="1" />
+<?php
+}
+
 function wp_widget_search($args) {
 	extract($args);
 ?>
@@ -1138,6 +1194,7 @@
 
 	$class['classname'] = 'widget_links';
 	wp_register_sidebar_widget('links', __('Links'), 'wp_widget_links', $class);
+	wp_register_widget_control('links', __('Links'), 'wp_widget_links_control', $dims150);
 
 	$class['classname'] = 'widget_meta';
 	wp_register_sidebar_widget('meta', __('Meta'), 'wp_widget_meta', $class);
