__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('
',__('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;
?>