.
*/
class sidebar_generator {
function sidebar_generator() {
add_action('init', array('sidebar_generator', 'init'));
add_action('admin_menu', array('sidebar_generator', 'admin_menu'));
add_action('admin_enqueue_scripts', array('sidebar_generator', 'print_admin_scripts'));
add_action('wp_ajax_add_sidebar', array('sidebar_generator', 'add_sidebar'));
add_action('wp_ajax_remove_sidebar', array('sidebar_generator', 'remove_sidebar'));
//edit posts/pages
add_action('edit_form_advanced', array('sidebar_generator', 'edit_form'));
add_action('edit_page_form', array('sidebar_generator', 'edit_form'));
//save posts/pages
add_action('edit_post', array('sidebar_generator', 'save_form'));
add_action('publish_post', array('sidebar_generator', 'save_form'));
add_action('save_post', array('sidebar_generator', 'save_form'));
add_action('edit_page_form', array('sidebar_generator', 'save_form'));
}
static function init() {
// Go through each sidebar and register it
$sidebars = sidebar_generator::get_sidebars();
if (is_array($sidebars)) {
foreach ($sidebars as $sidebar) {
$sidebar_class = sidebar_generator::name_to_class($sidebar['name']);
// Sidebar type = 'normal'
if ($sidebar['type'] == 'normal' || $sidebar['type'] == 'normal_gray' || $sidebar['type'] == 'normal_blue') {
register_sidebar(array(
'name' => $sidebar['name'],
'id' => strtolower($sidebar_class),
'class' => $sidebar_class,
'description' => ucwords($sidebar['type']),
'before_widget' => '
',
'before_title' => '',
'after_title' => '
',
));
// ..else Sidebar type = 'tabbed'
} elseif ($sidebar['type'] == 'tabbed') {
register_sidebar(array(
'name' => $sidebar['name'],
'class' => $sidebar_class,
'description' => ucwords($sidebar['type']),
'before_widget' => '',
'after_widget' => '
',
'before_title' => '',
'after_title' => '
',
));
}
}
}
}
static function print_admin_scripts() {
wp_print_scripts(array('sack'));
?>
Remove]');
//cellLeft.appendChild(textNode)
var cellLeft = row.insertCell(3);
removeLink = document.createElement('a');
linkText = document.createTextNode('remove');
removeLink.setAttribute('onclick', 'remove_sidebar_link(\'$name\')');
removeLink.setAttribute('href', 'javacript:void(0)');
removeLink.appendChild(linkText);
cellLeft.appendChild(removeLink);
";
die("$js");
}
function remove_sidebar() {
$sidebars = sidebar_generator::get_sidebars();
$name = str_replace(array("\n", "\r", "\t"), '', $_POST['sidebar_name']);
$id = sidebar_generator::name_to_class($name);
if (!isset($sidebars[$id])) {
die("alert('Sidebar does not exist.')");
}
$row_number = $_POST['row_number'];
unset($sidebars[$id]);
sidebar_generator::update_sidebars($sidebars);
$js = "
var tbl = document.getElementById('sbg_table');
tbl.deleteRow($row_number)
";
die($js);
}
static function admin_menu() {
add_theme_page('Manage Sidebars', 'Manage Sidebars', 'manage_options', 'multiple_sidebars', array('sidebar_generator', 'admin_page'));
}
static function admin_page() {
?>
Manage Sidebars
| Sidebar Name |
Sidebar Type |
CSS class |
Remove |
|
|
|
remove |
| No Sidebars defined |
ID;
}
$selected_sidebar = get_post_meta($post_id, 'sbg_selected_sidebar', true);
if (!is_array($selected_sidebar)) {
$tmp = $selected_sidebar;
$selected_sidebar = array();
$selected_sidebar[0] = $tmp;
}
$selected_sidebar_replacement = get_post_meta($post_id, 'sbg_selected_sidebar_replacement', true);
if (!is_array($selected_sidebar_replacement)) {
$tmp = $selected_sidebar_replacement;
$selected_sidebar_replacement = array();
$selected_sidebar_replacement[0] = $tmp;
}
?>
get_queried_object();
$selected_sidebar = get_post_meta($post->ID, 'sbg_selected_sidebar');
$selected_sidebar_replacement = get_post_meta($post->ID, 'sbg_selected_sidebar_replacement');
$did_sidebar = false;
//this page uses a generated sidebar
if ($selected_sidebar != '' && $selected_sidebar != "0") {
echo "\n\n\n";
if (isset($selected_sidebar_replacement[0][0]) && $selected_sidebar_replacement[0][0] == "0") {
$selected_sidebar_replacement = array(array(0 => "Normal"));
}
if (is_array($selected_sidebar) && !empty($selected_sidebar)) {
for ($i = 0; $i < sizeof($selected_sidebar_replacement[0]); $i++) {
if ($selected_sidebar_replacement[0][$i] == '0')
continue;
$index = $selected_sidebar_replacement[0][$i];
if (is_int($index)) {
$index = "sidebar-$index";
} else {
$index = sanitize_title($index);
$description = '';
foreach ((array) $wp_registered_sidebars as $key => $value) {
if (sanitize_title($value['name']) == $index) {
$index = $key;
$description = strtolower($value['description']);
break;
}
}
}
$sidebars_widgets = wp_get_sidebars_widgets();
if (!empty($sidebars_widgets[$index]))
echo '
';
if (!empty($sidebars_widgets[$index]) && $description == 'tabbed') {
echo '
';
}
if (!empty($sidebars_widgets[$index])) {
echo '
';
dynamic_sidebar($selected_sidebar_replacement[0][$i]); //default behavior
echo '
';
$did_sidebar = true;
}
}
}
if ($did_sidebar == true) {
echo "\n\n\n";
return;
}
echo "\n\n\n";
return;
}
}
/**
* replaces array of sidebar names
*/
function update_sidebars($sidebar_array) {
$sidebars = update_option('sbg_sidebars', $sidebar_array);
}
/**
* gets the generated sidebars
*/
static function get_sidebars() {
$sidebars = get_option('sbg_sidebars');
return $sidebars;
}
static function name_to_class($name) {
$class = str_replace(array(' ', ',', '.', '"', "'", '/', "\\", '+', '=', ')', '(', '*', '&', '^', '%', '$', '#', '@', '!', '~', '`', '<', '>', '?', '[', ']', '{', '}', '|', ':',), '', $name);
return $class;
}
}
$sbg = new sidebar_generator;
function generated_dynamic_sidebar($name = '0') {
sidebar_generator::get_sidebar($name);
return true;
}
// Register our footer sidebars and widgetized areas.
function vh_widgets_init() {
register_sidebar(array(
'name' => __('Footer Area One', 'vh'),
'id' => 'sidebar-1',
'description' => __('', 'vh'),
'before_widget' => '',
'before_title' => '',
'after_title' => '
',
));
register_sidebar(array(
'name' => __('Footer Area Two', 'vh'),
'id' => 'sidebar-2',
'description' => __('', 'vh'),
'before_widget' => '',
'before_title' => '',
'after_title' => '
',
));
register_sidebar(array(
'name' => __('Footer Area Three', 'vh'),
'id' => 'sidebar-3',
'description' => __('', 'vh'),
'before_widget' => '',
'before_title' => '',
'after_title' => '
',
));
register_sidebar(array(
'name' => __('Footer Area Four', 'vh'),
'id' => 'sidebar-4',
'description' => __('', 'vh'),
'before_widget' => '',
'before_title' => '',
'after_title' => '
',
));
}
// add_action('widgets_init', 'vh_widgets_init');
function change_title ($params) {
global $vh_is_footer;
if ($params[0]['before_title'] == "" && !$vh_is_footer) {
$params[0]['before_title'] = '
';
$params[0]['after_title'] = '
';
}
return $params;
}
add_filter('dynamic_sidebar_params', 'change_title');