/** * * Adds Category Group form * @WordPress action category_edit_form * * @param unknown_type $term * @param unknown_type $taxonomy */ function displayCategoryGroupForm($term, $taxonomy) { $current_selection = ''; $tax_meta = get_option($this->core->db_options_tax_meta); if (isset($tax_meta[$taxonomy][$term->term_id])) { $tax_meta = $tax_meta[$taxonomy][$term->term_id]; $current_selection = $tax_meta['category_group_term_id']; } if (empty($current_selection)) { $current_group = $this->catgrp->getGroupByCategoryID($term->term_id); $current_selection = $current_group->term_id; } $cat_groups = get_terms($this->catgrp->taxonomy_name, array('hide_empty' => FALSE)); foreach ($cat_groups as $group) { $temp_cat = get_term($group->term_id, $this->catgrp->taxonomy_name, OBJECT, 'edit'); $dropdown_value[] = $group->term_id; $dropdown_text[] = $temp_cat->name; } foreach ($dropdown_value as $key => $sel) { $seldata .= '<option value="' . esc_attr($sel) . '" ' . ($current_selection == $sel ? 'selected="selected"' : '') . ' >' . esc_html(ucfirst($dropdown_text[$key])) . '</option>' . "\n"; } echo '<h3>AVH Extended Categories - Category Group Widget</h3>'; echo '<table class="form-table"><tbody>'; echo '<tr class="form-field">'; echo '<th valign="top" scope="row">'; echo '<label for="avhec_categorygroup">Category Group</label></th>'; echo '<td>'; echo '<select id="avhec_categorygroup" name="avhec_categorygroup">'; echo $seldata; echo '</select>'; echo '<p class="description">Select the category group to show on the archive page.</p>'; echo '</td>'; echo '</tr>'; echo '</tbody></table>'; }
/** * Display the widget * * @param unknown_type $args * @param unknown_type $instance */ public function widget($args, $instance) { global $post, $wp_query; $catgrp =& AVH_EC_Singleton::getInstance('AVH_EC_Category_Group'); $options = $this->core->getOptions(); $row = array(); if (is_home()) { $special_page = 'home_group'; } elseif (is_category()) { $special_page = 'category_group'; } elseif (is_day()) { $special_page = 'day_group'; } elseif (is_month()) { $special_page = 'month_group'; } elseif (is_year()) { $special_page = 'year_group'; } elseif (is_author()) { $special_page = 'author_group'; } elseif (is_search()) { $special_page = 'search_group'; } else { $special_page = 'none'; } $toDisplay = false; if ('none' == $special_page) { $terms = wp_get_object_terms($post->ID, $catgrp->taxonomy_name); if (!empty($terms)) { $selected_catgroups = unserialize($instance['post_group_category']); foreach ($terms as $key => $value) { if ($selected_catgroups === false || array_key_exists($value->term_id, $selected_catgroups)) { if (!$this->getWidgetDoneCatGroup($value->term_id)) { $row = $value; $group_found = true; break; } } } } else { $options = $this->core->options; $no_cat_group = $options['cat_group']['no_group']; $row = get_term_by('id', $no_cat_group, $catgrp->taxonomy_name); $group_found = true; } } else { if ('category_group' == $special_page) { $tax_meta = get_option($this->core->db_options_tax_meta); $term = $wp_query->get_queried_object(); if (isset($tax_meta[$term->taxonomy][$term->term_id]['category_group_term_id'])) { $sp_category_group_id = $tax_meta[$term->taxonomy][$term->term_id]['category_group_term_id']; } else { $sp_category_group = $this->catgrp->getGroupByCategoryID($term->term_id); $sp_category_group_id = $sp_category_group->term_id; } } else { $sp_category_group_id = $options['sp_cat_group'][$special_page]; } $row = get_term_by('id', $sp_category_group_id, $catgrp->taxonomy_name); // Returns false when non-existance. (empty(false)=true) $group_found = true; } if ($group_found) { $toDisplay = true; $category_group_id_none = $this->catgrp->getTermIDBy('slug', 'none'); $selected_catgroups = unserialize($instance['post_group_category']); if ($category_group_id_none == $row->term_id) { $toDisplay = false; } elseif (!(false == $selected_catgroups || array_key_exists($row->term_id, $selected_catgroups))) { $toDisplay = false; } elseif ($special_page != 'none' && $this->getWidgetDoneCatGroup($sp_category_group_id)) { $toDisplay = false; } } if ($toDisplay) { extract($args); $c = $instance['count']; $e = $instance['hide_empty']; $h = $instance['hierarchical']; $use_desc_for_title = $instance['use_desc_for_title']; $s = isset($instance['sort_column']) ? $instance['sort_column'] : 'name'; $o = isset($instance['sort_order']) ? $instance['sort_order'] : 'asc'; $r = $instance['rssfeed'] ? 'RSS' : ''; $i = $instance['rssimage'] ? $instance['rssimage'] : ''; if (empty($r)) { $i = ''; } $style = empty($instance['style']) ? 'list' : $instance['style']; $group_id = $row->term_id; $cats = $catgrp->getCategoriesFromGroup($group_id); if (empty($instance['title'])) { $title = $catgrp->getWidgetTitleForGroup($group_id); if (!$title) { $title = __('Categories', 'avh-ec'); } } else { $title = $instance['title']; } $title = apply_filters('widget_title', $title); $included_cats = implode(',', $cats); $show_option_none = __('Select Category', 'avh-ec'); if ($options['general']['alternative_name_select_category']) { $show_option_none = $options['general']['alternative_name_select_category']; } $cat_args = array('include' => $included_cats, 'orderby' => $s, 'order' => $o, 'show_count' => $c, 'use_desc_for_title' => $use_desc_for_title, 'hide_empty' => $e, 'hierarchical' => $h, 'title_li' => '', 'show_option_none' => $show_option_none, 'feed' => $r, 'feed_image' => $i, 'name' => 'extended-categories-select-group-' . $this->number); echo $before_widget; echo $this->core->comment; echo $before_title . $title . $after_title; if ($style == 'list') { echo '<ul>'; $this->core->avh_wp_list_categories($cat_args, true); echo '</ul>'; } else { $this->core->avh_wp_dropdown_categories($cat_args, true); echo '<script type=\'text/javascript\'>' . "\n"; echo '/* <![CDATA[ */' . "\n"; echo ' var ec_dropdown_' . $this->number . ' = document.getElementById("extended-categories-select-group-' . $this->number . '");' . "\n"; echo ' function ec_onCatChange_' . $this->number . '() {' . "\n"; echo ' if (ec_dropdown_' . $this->number . '.options[ec_dropdown_' . $this->number . '.selectedIndex].value > 0) {' . "\n"; echo ' location.href = "' . get_option('home') . '/?cat="+ec_dropdown_' . $this->number . '.options[ec_dropdown_' . $this->number . '.selectedIndex].value;' . "\n"; echo ' }' . "\n"; echo ' }' . "\n"; echo ' ec_dropdown_' . $this->number . '.onchange = ec_onCatChange_' . $this->number . ';' . "\n"; echo '/* ]]> */' . "\n"; echo '</script>' . "\n"; } echo $after_widget; } }