__NAMESPACE__, // defines which pages settings will appear on. Either bespoke or media/discussion/reading etc 'title' => "OB Slideshow", // page title that is displayed 'intro_text' => "This allows you to configure the slideshow exactly the way you want it", // text below title 'nav_title' => "OB Slideshow" // how page is listed on left-hand Settings panel ); var $sections = array( 'slideshow' => array( 'title' => "Display options", 'description' => "Settings to do with how the plugin is displayed", 'fields' => array ( 'width' => array ( 'label' => "Width", 'description' => "Width of the slideshow", 'length' => "3", 'suffix' => "px", 'default_value' => "640" ), 'height' => array ( 'label' => "Height", 'description' => "Height of the slideshow", 'length' => "3", 'suffix' => "px", 'default_value' => "240" ), 'effect' => array ( 'label' => "Effect", 'description' => "Which effect would you like on the slideshow?", 'default_value' => "random", 'dropdown' => "dd_effect" ), 'slices' => array ( 'label' => "Number of Slides", 'description' => "How many slides do you want to appear?", 'default_value' => "5" ) ) ) ); var $dropdown_options = array ( 'dd_effect' => array ( 'random' => "Random", 'sliceDown' => "sliceDown", 'sliceDownLeft' => "sliceDownLeft", 'sliceUp' => "sliceUp", 'sliceUpLeft' => "sliceUpLeft", 'sliceUpDown' => "sliceUpDown", 'sliceUpDownLeft' => "sliceUpDownLeft", 'fold' => "fold", 'fade' => "fade" ) ); // end class }; class settings { var $settingsConfig = NULL; function __CONSTRUCT() { $this->settingsConfig = get_class_vars(sprintf('\%s\settings_config',__NAMESPACE__)); if (function_exists('add_action')) : add_action('admin_init', array( &$this, 'admin_init')); add_action('admin_menu', array( &$this, 'admin_add_page')); endif; } function admin_add_page() { extract($this->settingsConfig['menu']); add_options_page($title,$nav_title, 'manage_options', $page_name, array( &$this,'options_page')); } function options_page() { printf('

%s

%s
',$this->settingsConfig['menu']['title'],$this->settingsConfig['menu']['intro_text']); settings_fields($this->settingsConfig['group']); do_settings_sections($this->settingsConfig['menu']['page_name']); printf('
',__('Save Changes'));
	}
 
function admin_init(){
  foreach ($this->settingsConfig["sections"] AS $section_key=>$section_value) :
    add_settings_section($section_key, $section_value['title'], array( &$this, 'section_text'), $this->settingsConfig['menu']['page_name'], $section_value);
    foreach ($section_value['fields'] AS $field_key=>$field_value) :
      $function = (!empty($field_value['dropdown'])) ? array( &$this, 'setting_dropdown' ) : array( &$this, 'setting_string' );
      $function = (!empty($field_value['function'])) ? $field_value['function'] : $function;
      $callback = (!empty($field_value['callback'])) ? $field_value['callback'] : NULL;
      add_settings_field($this->settingsConfig['group'].'_'.$field_key, $field_value['label'], $function, $this->settingsConfig['menu']['page_name'], 
		$section_key,array_merge($field_value,array('name' => $this->settingsConfig['group'].'_'.$field_key)));
      register_setting($this->settingsConfig['group'], $this->settingsConfig['group'].'_'.$field_key,$callback);
      endforeach;
    endforeach;
  }
 
function section_text($value = NULL) {
	printf("%s",$this->settingsConfig['sections'][$value['id']]['description']);
	}
 
function setting_string($value = NULL) {
  $options = get_option($value['name']);
  $default_value = (!empty ($value['default_value'])) ? $value['default_value'] : NULL;
  printf(' %3$s%4$s',
    $value['name'],
    (!empty ($options['text_string'])) ? $options['text_string'] : $default_value,
    (!empty ($value['suffix'])) ? $value['suffix'] : NULL,
    (!empty ($value['description'])) ? sprintf("
%s",$value['description']) : NULL); } function setting_dropdown($value = NULL) { $options = get_option($value['name']); $default_value = (!empty ($value['default_value'])) ? $value['default_value'] : NULL; $current_value = ($options['text_string']) ? $options['text_string'] : $default_value; $chooseFrom = array(); $choices = $this->settingsConfig['dropdown_options'][$value['dropdown']]; foreach($choices AS $key=>$option) $chooseFrom[]= sprintf('',$key,($current_value == $key ) ? ' selected="selected"' : NULL,$option); printf('%3$s',$value['name'],implode("",$chooseFrom),(!empty ($value['description'])) ? sprintf("
%s",$value['description']) : NULL); } //end class } $a = (sprintf('\%s\settings',__NAMESPACE__)); $b = (sprintf("%s_init",__NAMESPACE__)); $$b = new $a; ?>