Skip to content

Instantly share code, notes, and snippets.

@dovy
Created October 31, 2013 20:00
Show Gist options
  • Save dovy/7256102 to your computer and use it in GitHub Desktop.
Save dovy/7256102 to your computer and use it in GitHub Desktop.
<?php
/*
*
* Set the text domain for the theme or plugin.
*
*/
define('Redux_TEXT_DOMAIN', 'atd-opts');
/*
*
* Require the framework class before doing anything else, so we can use the defined URLs and directories.
* If you are running on Windows you may have URL problems which can be fixed by defining the framework url first.
*
*/
//define('Redux_OPTIONS_URL', site_url('path the options folder'));
if(!class_exists('ReduxFramework')){
require_once(dirname(__FILE__) . '/Redux/framework.php');
}
/*
*
* Custom function for filtering the sections array. Good for child themes to override or add to the sections.
* Simply include this function in the child themes functions.php file.
*
* NOTE: the defined constansts for URLs, and directories will NOT be available at this point in a child theme,
* so you must use get_template_directory_uri() if you want to use any of the built in icons
*
*/
function add_another_section($sections){
//$sections = array();
$sections[] = array(
'title' => __('A Section added by hook', Redux_TEXT_DOMAIN),
'desc' => __('<p class="description">This is a section created by adding a filter to the sections array. Can be used by child themes to add/remove sections from the options.</p>', Redux_TEXT_DOMAIN),
'icon' => 'paper-clip',
'icon_class' => 'icon-large',
// Leave this as a blank section, no options just some intro text set above.
'fields' => array()
);
return $sections;
}
//add_filter('redux-opts-sections-twenty_eleven', 'add_another_section');
/*
*
* Custom function for filtering the args array given by a theme, good for child themes to override or add to the args array.
*
*/
function change_framework_args($args){
//$args['dev_mode'] = false;
return $args;
}
//add_filter('redux-opts-args-twenty_eleven', 'change_framework_args');
/*
*
* Most of your editing will be done in this section.
*
* Here you can override default values, uncomment args and change their values.
* No $args are required, but they can be over ridden if needed.
*
*/
$args = array();
// Setting dev mode to true allows you to view the class settings/info in the panel.
// Default: true
$args['dev_mode'] = false;
$args['dev_mode_icon_class'] = 'icon-large';
$args['page_cap'] = 'manage_options';
$args['page_type'] = 'menu';
$args['allow_sub_menu'] = true;
// If you want to use Google Webfonts, you MUST define the api key.
//$args['google_api_key'] = 'xxxx';
//$args['admin_stylesheet'] = 'custom';
// Add HTML before the form.
$args['intro_text'] = __('<p>From here will set the options for Landing pages, including: Logo, First page SEO, Banners</p>', Redux_TEXT_DOMAIN);
// Set footer/credit line.
$args['footer_credit'] = __('ATD Option Panel - v. 1.1.7', Redux_TEXT_DOMAIN);
$args['import_icon_class'] = 'icon-large';
// Set a custom option name. Don't forget to replace spaces with underscores!
$args['opt_name'] = 'atd_landing_options';
// Set a custom menu icon.
//$args['menu_icon'] = Redux_OPTIONS_URL . 'img/infinity-loop.png';
$args['menu_title'] = __('Landing', Redux_TEXT_DOMAIN);
$args['page_title'] = __('Landing pages options', Redux_TEXT_DOMAIN);
$args['page_slug'] = 'atd_options';
//$args['icon_type'] = 'image';
// Disable the panel sections showing as submenu items.
// Default: true
$args['allow_sub_menu'] = false;
// **** SECTIONS *** //
$sections = array();
$sample_patterns_path = REDUX_DIR . '../sample/patterns/';
$sample_patterns_url = REDUX_URL . '../sample/patterns/';
$sample_patterns = array();
if ( is_dir( $sample_patterns_path ) ) :
if ( $sample_patterns_dir = opendir( $sample_patterns_path ) ) :
$sample_patterns = array();
while ( ( $sample_patterns_file = readdir( $sample_patterns_dir ) ) !== false ) {
if( stristr( $sample_patterns_file, '.png' ) !== false || stristr( $sample_patterns_file, '.jpg' ) !== false ) {
$name = explode(".", $sample_patterns_file);
$name = str_replace('.'.end($name), '', $sample_patterns_file);
$sample_patterns[] = array( 'alt'=>$name,'img' => $sample_patterns_url . $sample_patterns_file );
}
}
endif;
endif;
$sections[] = array(
'title' => __('Home Settings', 'redux-framework-demo'),
'header' => __('Welcome to the Simple Options Framework Demo', 'redux-framework-demo'),
'desc' => __('Redux Framework was created with the developer in mind. It allows for any theme developer to have an advanced theme panel with most of the features a developer would need. For more information check out the Github repo at: <a href="https://github.com/ReduxFramework/Redux-Framework">https://github.com/ReduxFramework/Redux-Framework</a>', 'redux-framework-demo'),
'icon_class' => 'icon-large',
// 'submenu' => false, // Setting submenu to false on a given section will hide it from the WordPress sidebar menu!
'fields' => array(
array(
'id'=>'media',
'type' => 'media',
'url'=> true,
'title' => __('Media w/ URL', 'redux-framework-demo'),
'compiler' => 'true',
'desc'=> __('Basic media uploader with disabled URL input field.', 'redux-framework-demo'),
'subtitle' => __('Upload any media using the Wordpress native uploader', 'redux-framework-demo'),
),
array(
'id'=>'media-nourl',
'type' => 'media',
'title' => __('Media w/o URL', 'redux-framework-demo'),
'desc'=> __('This represents the minimalistic view. It does not have the preview box or the display URL in an input box. ', 'redux-framework-demo'),
'subtitle' => __('Upload any media using the Wordpress native uploader', 'redux-framework-demo'),
),
array(
'id'=>'media-nopreview',
'type' => 'media',
'preview'=> false,
'title' => __('Media No Preview', 'redux-framework-demo'),
'desc'=> __('This represents the minimalistic view. It does not have the preview box or the display URL in an input box. ', 'redux-framework-demo'),
'subtitle' => __('Upload any media using the Wordpress native uploader', 'redux-framework-demo'),
),
array(
'id' => 'gallery',
'type' => 'gallery',
'title' => __('Add/Edit Gallery', 'so-panels'),
'subtitle' => __('Create a new Gallery by selecting existing or uploading new images using the Wordpress native uploader', 'so-panels'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'slider1',
'type' => 'slider',
'title' => __('JQuery UI Slider Example 1', 'redux-framework-demo'),
'desc'=> __('JQuery UI slider description. Min: 1, max: 500, step: 3, default value: 45', 'redux-framework-demo'),
"default" => "45",
"min" => "1",
"step" => "3",
"max" => "500",
),
array(
'id'=>'slider2',
'type' => 'slider',
'title' => __('JQuery UI Slider Example 2 w/ Steps (5)', 'redux-framework-demo'),
'desc'=> __('JQuery UI slider description. Min: 0, max: 300, step: 5, default value: 75', 'redux-framework-demo'),
"default" => "75",
"min" => "0",
"step" => "5",
"max" => "300",
),
array(
'id'=>'spinner1',
'type' => 'spinner',
'title' => __('JQuery UI Spinner Example 1', 'redux-framework-demo'),
'desc'=> __('JQuery UI spinner description. Min:20, max: 100, step:20, default value: 40', 'redux-framework-demo'),
"default" => "40",
"min" => "20",
"step" => "20",
"max" => "100",
),
array(
'id'=>'switch-on',
'type' => 'switch',
'title' => __('Switch On', 'redux-framework-demo'),
'subtitle'=> __('Look, it\'s on!', 'redux-framework-demo'),
"default" => 1,
),
array(
'id'=>'switch-off',
'type' => 'switch',
'title' => __('Switch Off', 'redux-framework-demo'),
'subtitle'=> __('Look, it\'s on!', 'redux-framework-demo'),
"default" => 0,
),
array(
'id'=>'switch-custom',
'type' => 'switch',
'title' => __('Switch - Custom Titles', 'redux-framework-demo'),
'subtitle'=> __('Look, it\'s on! Also hidden child elements!', 'redux-framework-demo'),
"default" => 0,
'on' => 'Enabled',
'off' => 'Disabled',
),
array(
'id'=>'switch-fold',
'type' => 'switch',
'required' => array('switch-custom','=','1'),
'title' => __('Switch - With Hidden Items (NESTED!)', 'redux-framework-demo'),
'subtitle'=> __('Also called a "fold" parent.', 'redux-framework-demo'),
'desc' => __('Items set with a fold to this ID will hide unless this is set to the appropriate value.', 'redux-framework-demo'),
'default' => 0,
),
array(
'id'=>'patterns',
'type' => 'image_select',
'tiles' => true,
'required' => array('switch-fold','equals','0'),
'title' => __('Images Option (with pattern=>true)', 'redux-framework-demo'),
'subtitle'=> __('Select a background pattern.', 'redux-framework-demo'),
'default' => 0,
'options' => $sample_patterns
,
),
array(
"id" => "homepage_blocks",
"type" => "sorter",
"title" => "Homepage Layout Manager",
"desc" => "Organize how you want the layout to appear on the homepage",
"compiler"=>'true',
'required' => array('switch-fold','equals','0'),
'options' => array(
"enabled" => array(
"placebo" => "placebo", //REQUIRED!
"highlights" => "Highlights",
"slider" => "Slider",
"staticpage" => "Static Page",
"services" => "Services"
),
"disabled" => array(
"placebo" => "placebo", //REQUIRED!
)
),
),
array(
'id'=>'slides',
'type' => 'slides',
'title' => __('Slides Options', 'redux-framework-demo'),
'subtitle'=> __('Unlimited slides with drag and drop sortings.', 'redux-framework-demo'),
'desc' => __('This field will store all slides values into a multidimensional array to use into a foreach loop.', 'redux-framework-demo')
),
array(
'id'=>'presets',
'type' => 'image_select',
'presets' => true,
'title' => __('Preset', 'redux-framework-demo'),
'subtitle'=> __('This allows you to set a json string or array to override multiple preferences in your theme.', 'redux-framework-demo'),
'default' => 0,
'desc'=> __('This allows you to set a json string or array to override multiple preferences in your theme.', 'redux-framework-demo'),
'options' => array(
'1' => array('alt' => 'Preset 1', 'img' => REDUX_URL.'../sample/presets/preset1.png', 'presets'=>array('switch-on'=>1,'switch-off'=>1, 'switch-custom'=>1)),
'2' => array('alt' => 'Preset 2', 'img' => REDUX_URL.'../sample/presets/preset2.png', 'presets'=>'{"slider1":"1", "slider2":"0", "switch-on":"0"}'),
),
),
array(
'id'=>'typography6',
'type' => 'typography',
'title' => __('Typography', 'redux-framework-demo'),
//'compiler'=>true, // Use if you want to hook in your own CSS compiler
'google'=>true, // Disable google fonts. Won't work if you haven't defined your google api key
'font-backup'=>true, // Select a backup non-google font in addition to a google font
//'font-style'=>false, // Includes font-style and weight. Can use font-style or font-weight to declare
//'subsets'=>false, // Only appears if google is true and subsets not set to false
//'font-size'=>false,
//'line-height'=>false,
//'word-spacing'=>true, // Defaults to false
//'letter-spacing'=>true, // Defaults to false
//'color'=>false,
//'preview'=>false, // Disable the previewer
'output' => array('h2.site-description'), // An array of CSS selectors to apply this font style to dynamically
'units'=>'px', // Defaults to px
'subtitle'=> __('Typography option with each property can be called individually.', 'redux-framework-demo'),
'default'=> array(
'color'=>"#333",
'font-style'=>'700',
'font-family'=>'Courier, monospace',
'font-size'=>'33px',
'line-height'=>'40'),
),
),
);
$sections[] = array(
'type' => 'divide',
);
$sections[] = array(
'icon_class' => 'icon-large',
'title' => __('General Settings', 'redux-framework-demo'),
'fields' => array(
array(
'id'=>'layout',
'type' => 'image_select',
'compiler'=>true,
'title' => __('Main Layout', 'redux-framework-demo'),
'subtitle' => __('Select main content and sidebar alignment. Choose between 1, 2 or 3 column layout.', 'redux-framework-demo'),
'options' => array(
'1' => array('alt' => '1 Column', 'img' => REDUX_URL.'assets/img/1col.png'),
'2' => array('alt' => '2 Column Left', 'img' => REDUX_URL.'assets/img/2cl.png'),
'3' => array('alt' => '2 Column Right', 'img' => REDUX_URL.'assets/img/2cr.png'),
'4' => array('alt' => '3 Column Middle', 'img' => REDUX_URL.'assets/img/3cm.png'),
'5' => array('alt' => '3 Column Left', 'img' => REDUX_URL.'assets/img/3cl.png'),
'6' => array('alt' => '3 Column Right', 'img' => REDUX_URL.'assets/img/3cr.png')
),
'default' => '2'
),
array(
'id'=>'tracking-code',
'type' => 'textarea',
'required' => array('layout','equals','1'),
'title' => __('Tracking Code', 'redux-framework-demo'),
'subtitle' => __('Paste your Google Analytics (or other) tracking code here. This will be added into the footer template of your theme.', 'redux-framework-demo'),
'validate' => 'js',
'desc' => 'Validate that it\'s javascript!',
),
array(
'id'=>'footer-text',
'type' => 'editor',
'title' => __('Footer Text', 'redux-framework-demo'),
'subtitle' => __('You can use the following shortcodes in your footer text: [wp-url] [site-url] [theme-url] [login-url] [logout-url] [site-title] [site-tagline] [current-year]', 'redux-framework-demo'),
'default' => 'Powered by [wp-url]. Built on the [theme-url].',
),
)
);
$sections[] = array(
'icon_class' => 'icon-large',
'title' => __('Styling Options', 'redux-framework-demo'),
'fields' => array(
array(
'id'=>'stylesheet',
'type' => 'select',
'title' => __('Theme Stylesheet', 'redux-framework-demo'),
'subtitle' => __('Select your themes alternative color scheme.', 'redux-framework-demo'),
'options' => array('default.css'=>'default.css', 'color1.css'=>'color1.css'),
'default' => 'default.css',
),
array(
'id'=>'color-background',
'type' => 'color',
'title' => __('Body Background Color', 'redux-framework-demo'),
'subtitle' => __('Pick a background color for the theme (default: #fff).', 'redux-framework-demo'),
'default' => '#FFFFFF',
'validate' => 'color',
),
array(
'id'=>'color-footer',
'type' => 'color',
'title' => __('Footer Background Color', 'redux-framework-demo'),
'subtitle' => __('Pick a background color for the footer (default: #dd9933).', 'redux-framework-demo'),
'default' => '#dd9933',
'validate' => 'color',
),
array(
'id'=>'color-header',
'type' => 'color_gradient',
'title' => __('Header Gradient Color Option', 'redux-framework-demo'),
'subtitle' => __('Only color validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'default' => array('from' => '#1e73be', 'to' => '#00897e')
),
array(
'id'=>'link-color',
'type' => 'link_color',
'title' => __('Links Color Option', 'redux-framework-demo'),
'subtitle' => __('Only color validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'default' => array(
'show_regular' => true,
'show_hover' => true,
'show_active' => true
)
),
array(
'id'=>'header-border',
'type' => 'border',
'title' => __('Header Border Option', 'redux-framework-demo'),
'subtitle' => __('Only color validation can be done on this field type', 'redux-framework-demo'),
'output' => array('.site-header'), // An array of CSS selectors to apply this font style to
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'default' => array('color' => '#1e73be', 'style' => 'solid', 'width'=>'3')
),
array(
'id'=>'spacing',
'type' => 'spacing',
'output' => array('.site-header'), // An array of CSS selectors to apply this font style to
'mode'=>'margin', // absolute, padding, margin, defaults to padding
//'units' => 'em', // You can specify a unit value. Possible: px, em, %
//'units_extended' => 'true', // Allow users to select any type of unit
'title' => __('Padding/Margin Option', 'redux-framework-demo'),
'subtitle' => __('Allow your users to choose the spacing or margin they want.', 'redux-framework-demo'),
'desc' => __('You can enable or diable any piece of this field. Top, Right, Bottom, Left, or Units.', 'redux-framework-demo'),
'default' => array('top' => 5, 'bottom' => 6, 'left'=>2, 'right'=>4)
),
array(
'id'=>'dimensions',
'type' => 'dimensions',
//'units' => 'em', // You can specify a unit value. Possible: px, em, %
//'units_extended' => 'true', // Allow users to select any type of unit
'title' => __('Dimensions (Width/Height) Option', 'redux-framework-demo'),
'subtitle' => __('Allow your users to choose width, height, and/or unit.', 'redux-framework-demo'),
'desc' => __('You can enable or diable any piece of this field. Width, Height, or Units.', 'redux-framework-demo'),
'default' => array('width' => 200, 'height'=>'100', )
),
array(
'id'=>'body-font2',
'type' => 'typography',
'title' => __('Body Font', 'redux-framework-demo'),
'subtitle' => __('Specify the body font properties.', 'redux-framework-demo'),
'google'=>true,
'default' => array(
'color'=>'#dd9933',
'font-size'=>'30px',
'font-family'=>'Arial, Helvetica, sans-serif',
'font-weight'=>'Normal',
),
),
array(
'id'=>'custom-css',
'type' => 'textarea',
'title' => __('Custom CSS', 'redux-framework-demo'),
'subtitle' => __('Quickly add some CSS to your theme by adding it to this block.', 'redux-framework-demo'),
'desc' => __('This field is even CSS validated!', 'redux-framework-demo'),
'validate' => 'css',
),
)
);
$sections[] = array(
'icon_class' => 'icon-large',
'title' => __('Field Validation', 'redux-framework-demo'),
'desc' => __('<p class="description">This is the Description. Again HTML is allowed2</p>', 'redux-framework-demo'),
'fields' => array(
array(
'id'=>'2',
'type' => 'text',
'title' => __('Text Option - Email Validated', 'redux-framework-demo'),
'subtitle' => __('This is a little space under the Field Title in the Options table, additonal info is good in here.', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'validate' => 'email',
'msg' => 'custom error message',
'default' => '[email protected]'
),
array(
'id'=>'multi_text',
'type' => 'multi_text',
'title' => __('Multi Text Option', 'redux-framework-demo'),
'subtitle' => __('This is a little space under the Field Title in the Options table, additonal info is good in here.', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo')
),
array(
'id'=>'3',
'type' => 'text',
'title' => __('Text Option - URL Validated', 'redux-framework-demo'),
'subtitle' => __('This must be a URL.', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'validate' => 'url',
'default' => 'http://no-half-pixels.com'
),
array(
'id'=>'4',
'type' => 'text',
'title' => __('Text Option - Numeric Validated', 'redux-framework-demo'),
'subtitle' => __('This must be numeric.', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'validate' => 'numeric',
'default' => '0',
'class' => 'small-text'
),
array(
'id'=>'comma_numeric',
'type' => 'text',
'title' => __('Text Option - Comma Numeric Validated', 'redux-framework-demo'),
'subtitle' => __('This must be a comma seperated string of numerical values.', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'validate' => 'comma_numeric',
'default' => '0',
'class' => 'small-text'
),
array(
'id'=>'no_special_chars',
'type' => 'text',
'title' => __('Text Option - No Special Chars Validated', 'redux-framework-demo'),
'subtitle' => __('This must be a alpha numeric only.', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'validate' => 'no_special_chars',
'default' => '0'
),
array(
'id'=>'str_replace',
'type' => 'text',
'title' => __('Text Option - Str Replace Validated', 'redux-framework-demo'),
'subtitle' => __('You decide.', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'validate' => 'str_replace',
'str' => array('search' => ' ', 'replacement' => 'thisisaspace'),
'default' => '0'
),
array(
'id'=>'preg_replace',
'type' => 'text',
'title' => __('Text Option - Preg Replace Validated', 'redux-framework-demo'),
'subtitle' => __('You decide.', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'validate' => 'preg_replace',
'preg' => array('pattern' => '/[^a-zA-Z_ -]/s', 'replacement' => 'no numbers'),
'default' => '0'
),
array(
'id'=>'custom_validate',
'type' => 'text',
'title' => __('Text Option - Custom Callback Validated', 'redux-framework-demo'),
'subtitle' => __('You decide.', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'validate_callback' => 'validate_callback_function',
'default' => '0'
),
array(
'id'=>'5',
'type' => 'textarea',
'title' => __('Textarea Option - No HTML Validated', 'redux-framework-demo'),
'subtitle' => __('All HTML will be stripped', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'validate' => 'no_html',
'default' => 'No HTML is allowed in here.'
),
array(
'id'=>'6',
'type' => 'textarea',
'title' => __('Textarea Option - HTML Validated', 'redux-framework-demo'),
'subtitle' => __('HTML Allowed (wp_kses)', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'validate' => 'html', //see http://codex.wordpress.org/Function_Reference/wp_kses_post
'default' => 'HTML is allowed in here.'
),
array(
'id'=>'7',
'type' => 'textarea',
'title' => __('Textarea Option - HTML Validated Custom', 'redux-framework-demo'),
'subtitle' => __('Custom HTML Allowed (wp_kses)', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'validate' => 'html_custom',
'default' => '<p>Some HTML is allowed in here.</p>',
'allowed_html' => array('') //see http://codex.wordpress.org/Function_Reference/wp_kses
),
array(
'id'=>'8',
'type' => 'textarea',
'title' => __('Textarea Option - JS Validated', 'redux-framework-demo'),
'subtitle' => __('JS will be escaped', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'validate' => 'js'
),
)
);
$sections[] = array(
'icon' => 'check',
'icon_class' => 'icon-large',
'title' => __('Radio/Checkbox Fields', 'redux-framework-demo'),
'desc' => __('<p class="description">This is the Description. Again HTML is allowed</p>', 'redux-framework-demo'),
'fields' => array(
array(
'id'=>'10',
'type' => 'checkbox',
'title' => __('Checkbox Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'default' => '1'// 1 = on | 0 = off
),
array(
'id'=>'11',
'type' => 'checkbox',
'title' => __('Multi Checkbox Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'options' => array('1' => 'Opt 1','2' => 'Opt 2','3' => 'Opt 3'),//Must provide key => value pairs for multi checkbox options
'default' => array('1' => '1', '2' => '0', '3' => '0')//See how std has changed? you also dont need to specify opts that are 0.
),
array(
'id'=>'checkbox-data',
'type' => 'checkbox',
'title' => __('Multi Checkbox Option (with menu data)', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'data' => "menu"
),
array(
'id'=>'12',
'type' => 'radio',
'title' => __('Radio Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'options' => array('1' => 'Opt 1', '2' => 'Opt 2', '3' => 'Opt 3'),//Must provide key => value pairs for radio options
'default' => '2'
),
array(
'id'=>'radio-data',
'type' => 'radio',
'title' => __('Multi Checkbox Option (with menu data)', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'data' => "menu"
),
array(
'id'=>'13',
'type' => 'image_select',
'title' => __('Images Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'options' => array(
'1' => array('title' => 'Opt 1', 'img' => 'images/align-none.png'),
'2' => array('title' => 'Opt 2', 'img' => 'images/align-left.png'),
'3' => array('title' => 'Opt 3', 'img' => 'images/align-center.png'),
'4' => array('title' => 'Opt 4', 'img' => 'images/align-right.png')
),//Must provide key => value(array:title|img) pairs for radio options
'default' => '2'
),
array(
'id'=>'image_select',
'type' => 'image_select',
'title' => __('Images Option for Layout', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This uses some of the built in images, you can use them for layout options.', 'redux-framework-demo'),
'options' => array(
'1' => array('alt' => '1 Column', 'img' => REDUX_URL.'assets/img/1col.png'),
'2' => array('alt' => '2 Column Left', 'img' => REDUX_URL.'assets/img/2cl.png'),
'3' => array('alt' => '2 Column Right', 'img' => REDUX_URL.'assets/img/2cr.png'),
'4' => array('alt' => '3 Column Middle', 'img' => REDUX_URL.'assets/img/3cm.png'),
'5' => array('alt' => '3 Column Left', 'img' => REDUX_URL.'assets/img/3cl.png'),
'6' => array('alt' => '3 Column Right', 'img' => REDUX_URL.'assets/img/3cr.png')
),//Must provide key => value(array:title|img) pairs for radio options
'default' => '2'
),
array(
'id' => 'text_sortable',
'type' => 'sortable',
'title' => __('Sortable Text Option', 'redux-framework-demo'),
'sub_desc' => __('Define and reorder these however you want.', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'options' => array(
'si1' => 'Item 1',
'si2' => 'Item 2',
'si3' => 'Item 3',
)
),
array(
'id' => 'check_sortable',
'type' => 'sortable',
'mode' => 'checkbox', // checkbox or text
'title' => __('Sortable Text Option', 'redux-framework-demo'),
'sub_desc' => __('Define and reorder these however you want.', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'options' => array(
'si1' => 'Item 1',
'si2' => 'Item 2',
'si3' => 'Item 3',
)
),
)
);
$sections[] = array(
'icon' => 'list-alt',
'icon_class' => 'icon-large',
'title' => __('Select Fields', 'redux-framework-demo'),
'desc' => __('<p class="description">This is the Description. Again HTML is allowed</p>', 'redux-framework-demo'),
'fields' => array(
array(
'id'=>'select',
'type' => 'select',
'title' => __('Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'options' => array('1' => 'Opt 1','2' => 'Opt 2','3' => 'Opt 3'),//Must provide key => value pairs for select options
'default' => '2'
),
array(
'id'=>'15',
'type' => 'select',
'multi' => true,
'title' => __('Multi Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'options' => array('1' => 'Opt 1','2' => 'Opt 2','3' => 'Opt 3'),//Must provide key => value pairs for radio options
'required' => array('select','equals',array('1','3')),
'default' => array('2','3')
),
array(
'id'=>'multi-info',
'type' => 'info',
'desc' => __('You can easily add a variety of data from wordpress.', 'redux-framework-demo'),
),
array(
'id'=>'select-categories',
'type' => 'select',
'data' => 'categories',
'title' => __('Categories Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'select-categories-multi',
'type' => 'select',
'data' => 'categories',
'multi' => true,
'title' => __('Categories Multi Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'select-pages',
'type' => 'select',
'data' => 'pages',
'title' => __('Pages Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'pages-multi_select',
'type' => 'select',
'data' => 'pages',
'multi' => true,
'title' => __('Pages Multi Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'select-tags',
'type' => 'select',
'data' => 'tags',
'title' => __('Tags Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'tags-multi_select',
'type' => 'select',
'data' => 'tags',
'multi' => true,
'title' => __('Tags Multi Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'select-menus',
'type' => 'select',
'data' => 'menus',
'title' => __('Menus Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'menus-multi_select',
'type' => 'select',
'data' => 'menu',
'multi' => true,
'title' => __('Menus Multi Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'select-post-type',
'type' => 'select',
'data' => 'post_type',
'title' => __('Post Type Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'post-type-multi_select',
'type' => 'select',
'data' => 'post_type',
'multi' => true,
'title' => __('Post Type Multi Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'select-posts',
'type' => 'select',
'data' => 'post',
'title' => __('Posts Select Option2', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'select-posts-multi',
'type' => 'select',
'data' => 'post',
'multi' => true,
'title' => __('Posts Multi Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
),
array(
'id'=>'select-elusive',
'type' => 'select',
'data' => 'elusive-icons',
'title' => __('Elusive Icons Select Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('Here\'s a list of all the elusive icons by name and icon.', 'redux-framework-demo'),
),
)
);
$tabs = array();
if (function_exists('wp_get_theme')){
$theme_data = wp_get_theme();
$theme_uri = $theme_data->get('ThemeURI');
$description = $theme_data->get('Description');
$author = $theme_data->get('Author');
$version = $theme_data->get('Version');
$tags = $theme_data->get('Tags');
}else{
$theme_data = get_theme_data(trailingslashit(get_stylesheet_directory()).'style.css');
$theme_uri = $theme_data['URI'];
$description = $theme_data['Description'];
$author = $theme_data['Author'];
$version = $theme_data['Version'];
$tags = $theme_data['Tags'];
}
$theme_info = '<div class="redux-framework-section-desc">';
$theme_info .= '<p class="redux-framework-theme-data description theme-uri">'.__('<strong>Theme URL:</strong> ', 'redux-framework-demo').'<a href="'.$theme_uri.'" target="_blank">'.$theme_uri.'</a></p>';
$theme_info .= '<p class="redux-framework-theme-data description theme-author">'.__('<strong>Author:</strong> ', 'redux-framework-demo').$author.'</p>';
$theme_info .= '<p class="redux-framework-theme-data description theme-version">'.__('<strong>Version:</strong> ', 'redux-framework-demo').$version.'</p>';
$theme_info .= '<p class="redux-framework-theme-data description theme-description">'.$description.'</p>';
$theme_info .= '<p class="redux-framework-theme-data description theme-tags">'.__('<strong>Tags:</strong> ', 'redux-framework-demo').implode(', ', $tags).'</p>';
$theme_info .= '</div>';
if(file_exists(dirname(__FILE__).'/README.md')){
$tabs['theme_docs'] = array(
'icon' => REDUX_URL.'assets/img/glyphicons/glyphicons_071_book.png',
'title' => __('Documentation', 'redux-framework-demo'),
'content' => file_get_contents(dirname(__FILE__).'/README.md')
);
}//if
// You can append a new section at any time.
$sections[] = array(
'icon' => 'eye-open',
'icon_class' => 'icon-large',
'title' => __('Additional Fields', 'redux-framework-demo'),
'desc' => __('<p class="description">This is the Description. Again HTML is allowed</p>', 'redux-framework-demo'),
'fields' => array(
array(
'id'=>'17',
'type' => 'date',
'title' => __('Date Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo')
),
array(
'id'=>'21',
'type' => 'divide'
),
array(
'id'=>'18',
'type' => 'button_set',
'title' => __('Button Set Option', 'redux-framework-demo'),
'subtitle' => __('No validation can be done on this field type', 'redux-framework-demo'),
'desc' => __('This is the description field, again good for additional info.', 'redux-framework-demo'),
'options' => array('1' => 'Opt 1','2' => 'Opt 2','3' => 'Opt 3'),//Must provide key => value pairs for radio options
'default' => '2'
),
array(
'id'=>'23',
'type' => 'info',
'required' => array('18','equals',array('1','2')),
'desc' => __('This is the info field, if you want to break sections up.', 'redux-framework-demo')
),
array(
'id'=>'info_warning',
'type'=>'info',
'style'=>'warning',
'header'=> __( 'This is a header.', 'redux-framework-demo' ),
'desc' => __( 'This is an info field with the warning style applied and a header.', 'redux-framework-demo')
),
array(
'id'=>'info_success',
'type'=>'info',
'style'=>'success',
'icon'=>'info-sign',
'header'=> __( 'This is a header.', 'redux-framework-demo' ),
'desc' => __( 'This is an info field with the success style applied, a header and an icon.', 'redux-framework-demo')
),
array(
'id'=>'raw_info',
'type' => 'info',
'required' => array('18','equals',array('1','2')),
'raw_html'=>true,
'desc' => $sampleHTML,
),
array(
'id'=>"custom_callback",
//'type' => 'nothing',//doesnt need to be called for callback fields
'title' => __('Custom Field Callback', 'redux-framework-demo'),
'subtitle' => __('This is a completely unique field type', 'redux-framework-demo'),
'desc' => __('This is created with a callback function, so anything goes in this field. Make sure to define the function though.', 'redux-framework-demo'),
'callback' => 'my_custom_field'
),
array(
'id'=>"group",
'type' => 'group',//doesnt need to be called for callback fields
'title' => __('Group', 'redux-framework-demo'),
'subtitle' => __('Group any items together.', 'redux-framework-demo'),
'desc' => __('No limit as to what you can group. Just don\'t try to group a group.', 'redux-framework-demo'),
'groupname' => __('Group', 'redux-framework-demo'), // Group name
'subfields' =>
array(
array(
'id'=>'switch-fold',
'type' => 'switch',
'title' => __('testing fold with Group', 'redux-framework-demo'),
'subtitle'=> __('Look, it\'s on!', 'redux-framework-demo'),
"default" => 1,
),
array(
'id'=>'text-group',
'type' => 'text',
'title' => __('Text', 'redux-framework-demo'),
'subtitle' => __('Here you put your subtitle', 'redux-framework-demo'),
'required' => array('switch-fold', '=' , '1'),
),
array(
'id'=>'select-group',
'type' => 'select',
'title' => __('Testing select', 'redux-framework-demo'),
'subtitle' => __('Select your themes alternative color scheme.', 'redux-framework-demo'),
'options' => array('default.css'=>'default.css', 'color1.css'=>'color1.css'),
'default' => 'default.css',
),
),
),
)
);
$tabs['item_info'] = array(
'icon' => 'info-sign',
'icon_class' => 'icon-large',
'title' => __('Theme Information', 'redux-framework-demo'),
'content' => $item_info
);
if(file_exists(trailingslashit(dirname(__FILE__)) . 'README.html')) {
$tabs['docs'] = array(
'icon' => 'book',
'icon_class' => 'icon-large',
'title' => __('Documentation', 'redux-framework-demo'),
'content' => nl2br(file_get_contents(trailingslashit(dirname(__FILE__)) . 'README.html'))
);
}
global $ReduxFramework;
$ReduxFramework = new ReduxFramework($sections, $args, $tabs);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment