__construct($ops); } function __construct(array $ops){ // Setup variables $this->plugin_title = empty($ops['plugin_title']) ? $this->plugin_title : $ops['plugin_title']; $this->menu_title = empty($ops['menu_title']) ? $this->menu_title : $ops['menu_title']; $this->cap = empty($ops['capability']) ? $this->cap : $ops['capability']; $this->slug = empty($ops['slug']) ? $this->prefix.$this->slug : $ops['slug']; $this->options = empty($ops['opData']) ? $this->options : $ops['opData']; $this->icon = empty($ops['icon_url']) ? $this->icon : $ops['icon_url']; $this->pos = empty($ops['menu_pos']) ? $this->pos : $ops['menu_pos']; $this->prefix = empty($ops['prefix']) ? $this->prefix : $ops['prefix']; add_action('admin_init', array(&$this, 'register_admin_deps') ); add_action('admin_menu', array(&$this, 'load_admin_menu') ); add_action('admin_enqueue_scripts', array(&$this, 'load_admin_deps') ); } /** * Builds an array of check boxes. * * @param string $key Option identifier minus prefix. * @param array $data Associative array of data to display. */ public function buildCheckFields($key, $data, $def = false){ $opData = get_option($this->prefix.$key, $def); ?>
$v): ?>
prefix.$key); ?> [+] Add Row $v): ?> $colLabel): ?> $colLabel): ?>
[X]
[X]
prefix.$key); $output = '
'; $output .= ''; $output .= ''; $output .= '
'; return $output; } /** * Builds an array of radio buttons. * * @param string $key Option identifier minus prefix. * @param array $data Associative array of data to display. * @param boolean $def If not false, provide a default value if no option exists. */ public function buildRadioFields($key, $data, $def = false){ $opData = get_option($this->prefix.$key, $def); ?>
$v): ?>
prefix.$key, $def); $output = ''; $output .= ''; return $output; } /** * Builds a timeframe selection that consists of one text input, and one dropdown. * * @param string $key Option identifier minus prefix. * @param mixed $def If not false, provide a default value if no option exists. */ public function buildTimeframe($key, $def = false){ // Should be two fields, one input text, one dropdown. $opData = get_option($this->prefix.$key, $def); if(empty($opData['multiplier'])) $opData['mulitplier'] = $def['multiplier']; if(empty($opData['time'])) $opData['time'] = $def['time']; ?> menu_type){ case 'page': $hook = add_pages_page($this->plugin_title, $this->menu_title, $this->cap, $this->slug, array(&$this, 'render_options_page')); break; case 'link': $hook = add_links_page($this->plugin_title, $this->menu_title, $this->cap, $this->slug, array(&$this, 'render_options_page')); break; case 'comment': $hook = add_comments_page($this->plugin_title, $this->menu_title, $this->cap, $this->slug, array(&$this, 'render_options_page')); break; case 'management': $hook = add_management_page($this->plugin_title, $this->menu_title, $this->cap, $this->slug, array(&$this, 'render_options_page')); break; case 'option': $hook = add_options_page($this->plugin_title, $this->menu_title, $this->cap, $this->slug, array(&$this, 'render_options_page')); break; case 'theme': $hook = add_theme_page($this->plugin_title, $this->menu_title, $this->cap, $this->slug, array(&$this, 'render_options_page')); break; case 'plugin': $hook = add_plugins_page($this->plugin_title, $this->menu_title, $this->cap, $this->slug, array(&$this, 'render_options_page')); break; case 'user': $hook = add_users_page($this->plugin_title, $this->menu_title, $this->cap, $this->slug, array(&$this, 'render_options_page')); break; case 'dashboard': $hook = add_dashboard_page($this->plugin_title, $this->menu_title, $this->cap, $this->slug, array(&$this, 'render_options_page')); break; case 'post': $hook = add_posts_page($this->plugin_title, $this->menu_title, $this->cap, $this->slug, array(&$this, 'render_options_page')); break; case 'media': $hook = add_media_page($this->plugin_title, $this->menu_title, $this->cap, $this->slug, array(&$this, 'render_options_page')); break; default: $hook = add_menu_page($this->plugin_title, $this->menu_title, $this->cap, $this->slug, array(&$this, 'render_options_page'), $this->icon, $this->menu_pos); break; } $this->hook = $hook; } /** * Load up admin dependancies for functionality */ public function load_admin_deps($hook = false){ if($hook == $this->hook && $hook != false){ if(function_exists('wp_enqueue_media')) wp_enqueue_media(); wp_enqueue_style('spectrum'); wp_enqueue_script('spectrum'); wp_enqueue_style($this->prefix.'admin_css'); wp_enqueue_script($this->prefix.'admin_js'); } } /** * Registering Admin information. */ public function register_admin_deps(){ foreach($this->options as $k => $v) register_setting($this->prefix.'options', $this->prefix.$k); if(preg_match('/\/themes\//i', $this->file_data)){ $type = 'theme'; }elseif(preg_match('/\/plugins\//i', $this->file_data)){ $type = 'plugin'; } if('theme' == $type){ $stylesheetDir = get_bloginfo('stylesheet_directory'); $urls = array( $stylesheetDir.'/'.basename( dirname( dirname(__FILE__) ) ).'/jw-simple-options/css', $stylesheetDir.'/'.basename( dirname( dirname(__FILE__) ) ).'/jw-simple-options/js', ); }else{ $urls = array( 'css' => plugins_url('css', __FILE__), 'js' => plugins_url('js', __FILE__) ); } wp_register_style('spectrum', $urls['css'].'/spectrum.css', '', '1.0.9'); wp_register_script('spectrum', $urls['js'].'/spectrum.js', array('jquery'), '1.0.9' ); wp_register_style( $this->prefix.'admin_css', $urls['css'].'/jw_simple_options.css', '', '1.0'); wp_register_script( $this->prefix.'admin_js', $urls['js'].'/jquery.jw_simple_options.js' , '', '1.0'); } /** * Display user-end options page */ public function render_options_page(){ ?>

plugin_title; ?>

Options page powered by: JW Simple Options

prefix.'options'); ?> options as $k => $v){ ?>
render_option_field($k, $v); ?>

'#FFFFFF') */ public function render_color_select($key, $data){ $opData = get_option($this->prefix.$key, $data); $output = ''; foreach($opData as $k => $v){ $output .= ''; } return $output; } /** * Switch between options data types and display them. * * Offload rendering where necessary. */ public function render_option_field($key, $data){ switch($data['type']){ case 'text': $output = ''; break; case 'password': $output = ''; break; case 'number': $output = ''; break; case 'data_array': $output = $this->buildDataArrayFields($key, $data['fields'], $data['showhead']); break; case 'select': $output = $this->buildSelectOptions($key, $data['fields'], $data['def']); break; case 'color': $output = $this->render_color_select($key, $data['fields']); break; case 'media': if(function_exists('wp_enqueue_media')) $output = $this->buildMediaOption($key); break; case 'check': $output = $this->buildCheckFields($key, $data['fields'], $data['def']); break; case 'radio': $output = $this->buildRadioFields($key, $data['fields'], $data['def']); break; case 'textbox': $output = ''; break; case 'timeframe': $output = $this->buildTimeframe($key, $data['def']); break; case 'editor': $opData = get_option($this->prefix.$key, $data['def']); $output = wp_editor($opData, $this->prefix.$key, $data['settings']); default: $output = ''; break; } return $output; } /** * Uninstalls any options. * * Needs to be called from functions.php * @see register_uninstall_hook() */ public function uninstall(){ if( !defined( 'WP_UNINSTALL_PLUGIN' ) ) return false; // Remove options foreach ($this->options as $k => $v) delete_option($this->prefix.$k); } } ?>