stored = 'qode_sidebars'; $this->title = __('Custom Widget Area','qode'); add_action('load-widgets.php', array(&$this, 'load_assets') , 5 ); add_action('widgets_init', array(&$this, 'register_custom_sidebars') , 1000 ); add_action('wp_ajax_qode_ajax_delete_custom_sidebar', array(&$this, 'delete_sidebar_area') , 1000 ); } //load css, js and add hooks to the widget page function load_assets(){ add_action('admin_print_scripts', array(&$this, 'template_add_widget_field') ); add_action('load-widgets.php', array(&$this, 'add_sidebar_area'), 100); wp_enqueue_script('qode_sidebar' , QODE_ROOT . '/js/admin/qode_sidebar.js'); wp_enqueue_style( 'qode_sidebar' , QODE_ROOT . '/css/admin/qode_sidebar.css'); } //widget form template function template_add_widget_field(){ $nonce = wp_create_nonce ('qode-delete-sidebar'); $nonce = ''; echo "\n\n"; } //add sidebar area to the db function add_sidebar_area(){ if(!empty($_POST['qode-add-widget'])){ $this->sidebars = get_option($this->stored); $name = $this->get_name($_POST['qode-add-widget']); if(empty($this->sidebars)){ $this->sidebars = array($name); } else{ $this->sidebars = array_merge($this->sidebars, array($name)); } update_option($this->stored, $this->sidebars); wp_redirect( admin_url('widgets.php') ); die(); } } //delete sidebar area from the db function delete_sidebar_area(){ check_ajax_referer('qode-delete-sidebar'); if(!empty($_POST['name'])){ $name = stripslashes($_POST['name']); $this->sidebars = get_option($this->stored); if(($key = array_search($name, $this->sidebars)) !== false){ unset($this->sidebars[$key]); update_option($this->stored, $this->sidebars); echo "sidebar-deleted"; } } die(); } //checks the user submitted name and makes sure that there are no colitions function get_name($name){ if(empty($GLOBALS['wp_registered_sidebars'])) return $name; $taken = array(); foreach ( $GLOBALS['wp_registered_sidebars'] as $sidebar ){ $taken[] = $sidebar['name']; } if(empty($this->sidebars)) $this->sidebars = array(); $taken = array_merge($taken, $this->sidebars); if(in_array($name, $taken)){ $counter = substr($name, -1); $new_name = ""; if(!is_numeric($counter)){ $new_name = $name . " 1"; } else{ $new_name = substr($name, 0, -1) . ((int) $counter + 1); } $name = $this->get_name($new_name); } return $name; } //register custom sidebar areas function register_custom_sidebars(){ if(empty($this->sidebars)) $this->sidebars = get_option($this->stored); $args = array( 'before_widget' => '
', 'before_title' => '