'2Cero Menu Widget','description' => 'Menu widget.'); $control_ops = array('width' => 700,'height' => 350,'id_base' => 'doscero_menu_widget'); parent::__construct('doscero_menu_widget', '2Cero Menu Widget', $widget_ops, $control_ops); add_action('wp_print_styles', array($this,'renderWidgetExternalFiles')); } public static function getUrl($url) { return WP_PLUGIN_URL . $url; } public static function getFile($file) { return WP_PLUGIN_DIR . $file; } function renderWidgetExternalFiles() { if ( file_exists(DosCeroMenuMenuWidget::getFile(DosCeroMenuMenuWidget::CSS)) ) { wp_register_style('dosceroMenuWidgetCSS', DosCeroMenuMenuWidget::getUrl(DosCeroMenuMenuWidget::CSS)); wp_enqueue_style( 'dosceroMenuWidgetCSS'); } if ( file_exists(DosCeroMenuMenuWidget::getFile(DosCeroMenuMenuWidget::CSSTHEME)) ) { wp_register_style('dosceroMenuWidgetCSSTheme', DosCeroMenuMenuWidget::getUrl(DosCeroMenuMenuWidget::CSSTHEME)); wp_enqueue_style( 'dosceroMenuWidgetCSSTheme'); } if ( file_exists(DosCeroMenuMenuWidget::getFile(DosCeroMenuMenuWidget::JS)) ) { wp_enqueue_script('dosceroMenuWidgetJS', DosCeroMenuMenuWidget::getUrl(DosCeroMenuMenuWidget::JS), array('jquery')); } } function widget( $args, $instance ) { extract( $args ); include_once dirname( __FILE__ ) . '/DosCero.Menu.HtmlOutput.php'; $i = new DosCeroMenuMenuBarOutput(new DosCeroMenuMenuBar($instance)); $i->Render(); } private function filterEmptyValues($val) { return (!empty($val) || is_numeric($val)); } function update( $new_instance, $old_instance ) { $instance = $new_instance; $keysToCheck = array('title'); // Get only used values foreach($instance as $key => $subarr) if (is_array($subarr)) $instance[$key] = array_filter($subarr, array($this,"filterEmptyValues")); // Get used keys $usedKeys = array(); foreach($instance as $subarrKey => $subarr) { if (is_array($subarr) && in_array($subarrKey, $keysToCheck)) { foreach($subarr as $k => $v) if (!array_key_exists($k, $usedKeys)) $usedKeys[] = $k; } } // Insert used keys where they don't exist foreach($instance as $arrKey => $subarr) { if (is_array($subarr)) { foreach($usedKeys as $k) if (!array_key_exists($k, $subarr)) $instance[$arrKey][$k] = null; } } $instance['lastId'] = $instance['lastId']+1; return $instance; } function getFilteredParents($parents, $itm) { $ret = array(); foreach($parents as $k => $v) { if ($k != $itm->mid) $ret[$k] = $v; } return $ret; } function getDefaultArgs() { return array( 'title' => array(), 'mid' => array(), 'lastId' => 1, 'htmlid' => 'dos0_m'.date('_dis')); } function form( $instance ) { include_once dirname( __FILE__ ) . '/DosCero.Menu.HtmlInput.php'; $instance = wp_parse_args( (array) $instance, $this->getDefaultArgs() ); $menubar = new DosCeroMenuMenuBar($instance); $parents = array(0 => ''); foreach($menubar->items as $item) { $parents = $parents + $item->getIdsAndTitles(); } $menubarItems = array(); foreach($menubar->items as $item) { $menubarItems = $menubarItems + $item->getIdsAndItems(); } $menubarItems['wontexistever'] = null; $contentTypes = array(DosCeroMenuMenuWidget::EMPTYCONTENT => '' , DosCeroMenuMenuWidget::PAGE => __('Page', DosCeroMenuPlugin::DOMAIN) , DosCeroMenuMenuWidget::POST => __('Post', DosCeroMenuPlugin::DOMAIN) , DosCeroMenuMenuWidget::CATEGORY => __('Category', DosCeroMenuPlugin::DOMAIN)); $pageslist = get_pages(); $pages = new DosCeroMenuSelectOptions(array()); foreach($pageslist as $page) $pages->options[$page->ID]=$page->post_title; $postslist = get_posts(array('order'=> 'ASC', 'orderby' => 'title' )); $posts = new DosCeroMenuSelectOptions(array()); foreach ($postslist as $post) $posts->options[$post->ID]=get_the_title($post->ID); $categorieslist = get_categories(); $categories = new DosCeroMenuSelectOptions(array()); foreach ($categorieslist as $cat) $categories->options[$cat->cat_ID]=$cat->cat_name; $empty = new DosCeroMenuSelectOptions(array(''=>'')); $positionOptions = array('0' => 'Horizontal', '1' => 'Vertical'); $righttoleftOptions = array('0' => __('Left to right', DosCeroMenuPlugin::DOMAIN), '1' => __('Right to left', DosCeroMenuPlugin::DOMAIN)); $lastOrder = 0; ?>