Add dropdown option to archives and categories widgets. Props Joseph Scott. fixes #4194 for 2.2

git-svn-id: http://svn.automattic.com/wordpress/trunk@5319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2007-04-26 17:17:30 +00:00
parent 85902939a7
commit 6a307367a8
1 changed files with 50 additions and 13 deletions

View File

@ -334,21 +334,32 @@ function wp_widget_archives($args) {
extract($args); extract($args);
$options = get_option('widget_archives'); $options = get_option('widget_archives');
$c = $options['count'] ? '1' : '0'; $c = $options['count'] ? '1' : '0';
$d = $options['dropdown'] ? '1' : '0';
$title = empty($options['title']) ? __('Archives') : $options['title']; $title = empty($options['title']) ? __('Archives') : $options['title'];
echo $before_widget;
echo $before_title . $title . $after_title;
if($d) {
?>
<select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'> <?php wp_get_archives('type=monthly&format=option'); ?> </select>
<?php
} else {
?> ?>
<?php echo $before_widget; ?>
<?php echo $before_title . $title . $after_title; ?>
<ul> <ul>
<?php wp_get_archives("type=monthly&show_post_count=$c"); ?> <?php wp_get_archives("type=monthly&show_post_count=$c"); ?>
</ul> </ul>
<?php echo $after_widget; ?>
<?php <?php
}
echo $after_widget;
} }
function wp_widget_archives_control() { function wp_widget_archives_control() {
$options = $newoptions = get_option('widget_archives'); $options = $newoptions = get_option('widget_archives');
if ( $_POST["archives-submit"] ) { if ( $_POST["archives-submit"] ) {
$newoptions['count'] = isset($_POST['archives-count']); $newoptions['count'] = isset($_POST['archives-count']);
$newoptions['dropdown'] = isset($_POST['archives-dropdown']);
$newoptions['title'] = strip_tags(stripslashes($_POST["archives-title"])); $newoptions['title'] = strip_tags(stripslashes($_POST["archives-title"]));
} }
if ( $options != $newoptions ) { if ( $options != $newoptions ) {
@ -356,10 +367,12 @@ function wp_widget_archives_control() {
update_option('widget_archives', $options); update_option('widget_archives', $options);
} }
$count = $options['count'] ? 'checked="checked"' : ''; $count = $options['count'] ? 'checked="checked"' : '';
$dropdown = $options['dropdown'] ? 'checked="checked"' : '';
$title = htmlspecialchars($options['title'], ENT_QUOTES); $title = htmlspecialchars($options['title'], ENT_QUOTES);
?> ?>
<p><label for="archives-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="archives-title" name="archives-title" type="text" value="<?php echo $title; ?>" /></label></p> <p><label for="archives-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="archives-title" name="archives-title" type="text" value="<?php echo $title; ?>" /></label></p>
<p style="text-align:right;margin-right:40px;"><label for="archives-count">Show post counts <input class="checkbox" type="checkbox" <?php echo $count; ?> id="archives-count" name="archives-count" /></label></p> <p style="text-align:right;margin-right:40px;"><label for="archives-count">Show post counts <input class="checkbox" type="checkbox" <?php echo $count; ?> id="archives-count" name="archives-count" /></label></p>
<p style="text-align:right;margin-right:40px;"><label for="archives-dropdown">Use drop down format <input class="checkbox" type="checkbox" <?php echo $dropdown; ?> id="archives-dropdown" name="archives-dropdown" /></label></p>
<input type="hidden" id="archives-submit" name="archives-submit" value="1" /> <input type="hidden" id="archives-submit" name="archives-submit" value="1" />
<?php <?php
} }
@ -515,15 +528,36 @@ function wp_widget_categories($args) {
$options = get_option('widget_categories'); $options = get_option('widget_categories');
$c = $options['count'] ? '1' : '0'; $c = $options['count'] ? '1' : '0';
$h = $options['hierarchical'] ? '1' : '0'; $h = $options['hierarchical'] ? '1' : '0';
$d = $options['dropdown'] ? '1' : '0';
$title = empty($options['title']) ? __('Categories') : $options['title']; $title = empty($options['title']) ? __('Categories') : $options['title'];
echo $before_widget;
echo $before_title . $title . $after_title;
$cat_args = "sort_column=name&optioncount={$c}&hierarchical={$h}";
if($d) {
wp_dropdown_categories($cat_args);
?> ?>
<?php echo $before_widget; ?>
<?php echo $before_title . $title . $after_title; ?> <script lang='javascript'><!--
<ul> var dropdown = document.getElementById("cat");
<?php wp_list_cats("sort_column=name&optioncount=$c&hierarchical=$h"); ?> function onCatChange() {
</ul> location.href = "?cat="+dropdown.options[dropdown.selectedIndex].value;
<?php echo $after_widget; ?> }
dropdown.onchange = onCatChange;
--></script>
<?php <?php
} else {
?>
<ul>
<?php wp_list_cats($cat_args); ?>
</ul>
<?php
}
echo $after_widget;
} }
function wp_widget_categories_control() { function wp_widget_categories_control() {
@ -531,6 +565,7 @@ function wp_widget_categories_control() {
if ( $_POST['categories-submit'] ) { if ( $_POST['categories-submit'] ) {
$newoptions['count'] = isset($_POST['categories-count']); $newoptions['count'] = isset($_POST['categories-count']);
$newoptions['hierarchical'] = isset($_POST['categories-hierarchical']); $newoptions['hierarchical'] = isset($_POST['categories-hierarchical']);
$newoptions['dropdown'] = isset($_POST['categories-dropdown']);
$newoptions['title'] = strip_tags(stripslashes($_POST['categories-title'])); $newoptions['title'] = strip_tags(stripslashes($_POST['categories-title']));
} }
if ( $options != $newoptions ) { if ( $options != $newoptions ) {
@ -539,11 +574,13 @@ function wp_widget_categories_control() {
} }
$count = $options['count'] ? 'checked="checked"' : ''; $count = $options['count'] ? 'checked="checked"' : '';
$hierarchical = $options['hierarchical'] ? 'checked="checked"' : ''; $hierarchical = $options['hierarchical'] ? 'checked="checked"' : '';
$dropdown = $options['dropdown'] ? 'checked="checked"' : '';
$title = wp_specialchars($options['title']); $title = wp_specialchars($options['title']);
?> ?>
<p><label for="categories-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="categories-title" name="categories-title" type="text" value="<?php echo $title; ?>" /></label></p> <p><label for="categories-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="categories-title" name="categories-title" type="text" value="<?php echo $title; ?>" /></label></p>
<p style="text-align:right;margin-right:40px;"><label for="categories-count"><?php _e('Show post counts'); ?> <input class="checkbox" type="checkbox" <?php echo $count; ?> id="categories-count" name="categories-count" /></label></p> <p style="text-align:right;margin-right:40px;"><label for="categories-count"><?php _e('Show post counts'); ?> <input class="checkbox" type="checkbox" <?php echo $count; ?> id="categories-count" name="categories-count" /></label></p>
<p style="text-align:right;margin-right:40px;"><label for="categories-hierarchical" style="text-align:right;"><?php _e('Show hierarchy'); ?> <input class="checkbox" type="checkbox" <?php echo $hierarchical; ?> id="categories-hierarchical" name="categories-hierarchical" /></label></p> <p style="text-align:right;margin-right:40px;"><label for="categories-hierarchical" style="text-align:right;"><?php _e('Show hierarchy'); ?> <input class="checkbox" type="checkbox" <?php echo $hierarchical; ?> id="categories-hierarchical" name="categories-hierarchical" /></label></p>
<p style="text-align:right;margin-right:40px;"><label for="categories-dropdown" style="text-align:right;"><?php _e('Use drop down format'); ?> <input class="checkbox" type="checkbox" <?php echo $dropdown; ?> id="categories-dropdown" name="categories-dropdown" /></label></p>
<input type="hidden" id="categories-submit" name="categories-submit" value="1" /> <input type="hidden" id="categories-submit" name="categories-submit" value="1" />
<?php <?php
} }