\n"
- ) );
-
- }
-
-}
-
-/**
- * Use custom sidebars.
- *
- * Remove the default sidebars, run some conditional logic,
- * use alternate sidebars if necessary, else fallback on default sidebars.
- *
- * @since 0.9.0
- */
-function ss_sidebars_init() {
-
- remove_action( 'genesis_sidebar', 'genesis_do_sidebar' );
- remove_action( 'genesis_sidebar_alt', 'genesis_do_sidebar_alt' );
- add_action( 'genesis_sidebar', 'ss_do_sidebar' );
- add_action( 'genesis_sidebar_alt', 'ss_do_sidebar_alt' );
-
-}
-
-/**
- * Display primary sidebar.
- *
- * Display custom sidebar if one exists, else display default primary sidebar.
- *
- * @since 0.9.0
- */
-function ss_do_sidebar() {
-
- if ( ! ss_do_one_sidebar( '_ss_sidebar' ) )
- genesis_do_sidebar();
-
-}
-
-/**
- * Display secondary sidebar.
- *
- * Display custom sidebar if one exists, else display default secondary sidebar.
- *
- * @since 0.9.0
- */
-function ss_do_sidebar_alt() {
-
- if ( ! ss_do_one_sidebar( '_ss_sidebar_alt' ) )
- genesis_do_sidebar_alt();
-
-}
-
-/**
- * Sidebar widget area output.
- *
- * Helper function to show widgets in a particular sidebar.
- *
- * @param string $sidebar_key sidebar id you wish to output.
- *
- * @since 0.9.0
- *
- */
-function ss_do_one_sidebar( $sidebar_key = '_ss_sidebar' ) {
-
- static $taxonomies = null;
-
- if ( is_singular() && $sidebar_key = genesis_get_custom_field( $sidebar_key ) ) {
- if ( dynamic_sidebar( $sidebar_key ) ) return true;
- }
-
- if ( is_category() ) {
- $term = get_term( get_query_var( 'cat' ), 'category' );
- if ( isset( $term->meta[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true;
- }
-
- if ( is_tag() ) {
- $term = get_term( get_query_var( 'tag_id' ), 'post_tag' );
- if ( isset( $term->meta[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true;
- }
-
- if ( is_tax() ) {
- if ( null === $taxonomies )
- $taxonomies = ss_get_taxonomies();
-
- foreach ( $taxonomies as $tax ) {
- if ( 'post_tag' == $tax || 'category' == $tax )
- continue;
-
- if ( is_tax( $tax ) ) {
- $obj = get_queried_object();
- $term = get_term( $obj->term_id, $tax );
- if ( isset( $term->meta[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true;
- break;
- }
- }
- }
-
- return false;
-
-}
-
-/**
- * Return taxonomy ids.
- *
- * Helper function to return the array keys from a taxonomy query.
- *
- * @since 0.9.0
- */
-function ss_get_taxonomies() {
-
- $taxonomies = get_taxonomies( array( 'show_ui' => true, 'public' => true ) );
- return apply_filters( 'genesis_simple_sidebars_taxonomies', array_keys( $taxonomies ) );
-
-}
-
-/**
- * Does this Genesis install have the 3 column layouts deactivated?
- *
- * This function checks to see if the Genesis install still has active 3 column layouts. Since
- * child themes and plugins can deregister layouts, we need to know if they have deregistered the 3 column layouts.
- *
- * @since 0.9.2
- */
-function ss_has_3_column_layouts() {
-
- $_layouts = (array) genesis_get_layouts();
- $_layouts = array_keys( $_layouts );
- $_3_column = array_intersect( $_layouts, array( 'content-sidebar-sidebar', 'sidebar-content-sidebar', 'sidebar-sidebar-content' ) );
-
- return ! empty( $_3_column );
-
-}
diff --git a/readme.txt b/readme.txt
deleted file mode 100644
index 08bb20a..0000000
--- a/readme.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-=== Plugin Name ===
-Contributors: nathanrice, wpmuguru
-Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5553118
-Tags: hooks, genesis, genesiswp, studiopress
-Requires at least: 3.3
-Tested up to: 3.4.1
-Stable tag: 1.0.0
-
-This plugin allows you to create multiple, dynamic widget areas, and assign those widget areas to sidebar locations within the Genesis Theme Framework on a per post, per page, or per tag/category archive basis.
-
-== Description ==
-
-This plugin allows you to create multiple, dynamic widget areas, and assign those widget areas to sidebar locations within the Genesis Theme Framework on a per post, per page, or per tag/category archive basis.
-
-Creating widget areas programmatically, then using conditional logic to properly assign them to sidebar locations can be a complex task for a beginner. This plugin allows you to do all this from a simple administration menu, and assign widget areas to sidebar locations with simple drop-down menus within the post/page edit screens, or when editing a tag or category.
-
-== Installation ==
-
-1. Upload the entire `genesis-simple-sidebars` folder to the `/wp-content/plugins/` directory
-1. DO NOT change the name of the `genesis-simple-sidebars` folder
-1. Activate the plugin through the 'Plugins' menu in WordPress
-1. Navigate to the `Genesis > Simple Sidebars` menu
-1. Create as many new sidebar widget areas as you need
-1. Choose the widget area you want to display by choosing it from the drop-down menu in the post/page or category/tag edit screen.
-
-== Frequently Asked Questions ==
-
-= Can I assign widget areas to locations other than the sidebars? =
-
-No. You can only assign them to the primary and secondary sidebars, using the plugin.
-
-However, once a widget area has been created, you can use hooks to programmatically display those widget areas throughout the theme. But if you're going to do that, it's very unlikely that you would want to use the plugin to create the widget areas. You might as well just create the widget areas programmatically too.
-
-= Does this plugin give me the option of creating an entirely NEW sidebar? =
-
-Not in the way you're probably thinking. The markup surrounding the widget area never changes. The only thing that changes is the dynamic content that displays within the pre-existing sidebar locations.
-
-== Changelog ==
-
-= 0.1 =
-* Initial Alpha Release
-
-= 0.9 =
-* Fixed "is not array" errors reported by users
-* Added nonce verification for security purposes
-* Added error and success messages
-* Bump to pre-release 0.9 branch
-
-= 0.9.1 =
-* Added support for custom post types
-
-= 0.9.2 =
-* Added support for custom taxonomies
-* Added translation support
-* bug fix to prevent invalid sidebar creation
-
-= 0.9.2.1 =
-* Restore default tag/category support
-* Default custom taxonomy support to on for public taxonomies
-* Remove secondary selection when no 3 column layouts are enabled
-
-= 1.0.0 =
-* Increase requirement to WordPress 3.3 and Genesis 1.8.0
-* Switch to Genesis Admin class to build admin menu.
\ No newline at end of file
From 4e6fc0b8934b3358445143c32922b675ae15235a Mon Sep 17 00:00:00 2001
From: Nathan Rice
Date: Fri, 9 Aug 2013 13:05:55 -0400
Subject: [PATCH 02/13] Tagging 0.9.0.
---
admin.php | 181 ++++++++++++++++++++++++++++++++++++++++++++++++++
functions.php | 181 ++++++++++++++++++++++++++++++++++++++++++++++++++
inpost.php | 84 +++++++++++++++++++++++
plugin.php | 118 ++++++++++++++++++++++++++++++++
readme.txt | 47 +++++++++++++
term.php | 53 +++++++++++++++
6 files changed, 664 insertions(+)
create mode 100644 admin.php
create mode 100644 functions.php
create mode 100644 inpost.php
create mode 100644 plugin.php
create mode 100644 readme.txt
create mode 100644 term.php
diff --git a/admin.php b/admin.php
new file mode 100644
index 0000000..0225cbd
--- /dev/null
+++ b/admin.php
@@ -0,0 +1,181 @@
+
+
+
+
+ID;
+
+ // don't try to save the data under autosave, ajax, or future post.
+ if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;
+ if ( defined('DOING_AJAX') && DOING_AJAX ) return;
+ if ( defined('DOING_CRON') && DOING_CRON ) return;
+
+ // is the user allowed to edit the post or page?
+ if ( ( 'page' == $_POST['post_type'] && !current_user_can('edit_page', $post->ID) ) || !current_user_can('edit_post', $post->ID ) )
+ return $post->ID;
+
+ $_sidebars = array(
+ '_ss_sidebar' => $_POST['_ss_sidebar'],
+ '_ss_sidebar_alt' => $_POST['_ss_sidebar_alt']
+ );
+
+ // store the custom fields
+ foreach ( $_sidebars as $key => $value ) {
+
+ if ( $post->post_type == 'revision' ) return; // don't try to store data during revision save
+
+ if ( $value ) {
+ // save/update
+ update_post_meta($post->ID, $key, $value);
+ } else {
+ // delete if blank
+ delete_post_meta($post->ID, $key);
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/plugin.php b/plugin.php
new file mode 100644
index 0000000..9676111
--- /dev/null
+++ b/plugin.php
@@ -0,0 +1,118 @@
+Genesis', 'ss'), 'http://www.studiopress.com/themes/genesis' ) );
+ }
+
+ if( version_compare( $theme_info['Version'], $latest, '<' ) ) {
+ deactivate_plugins(plugin_basename(__FILE__)); // Deactivate ourself
+ wp_die( sprintf( __('Sorry, you cannot activate without Genesis %s or greater', 'ss'), 'http://www.studiopress.com/support/showthread.php?t=19576', $latest ) );
+ }
+
+}
+
+// Define our constants
+define('SS_SETTINGS_FIELD', 'ss-settings');
+define('SS_PLUGIN_DIR', dirname(__FILE__));
+
+// Include files
+require_once(SS_PLUGIN_DIR . '/admin.php');
+require_once(SS_PLUGIN_DIR . '/functions.php');
+require_once(SS_PLUGIN_DIR . '/inpost.php');
+require_once(SS_PLUGIN_DIR . '/term.php');
+
+/**
+ * This function registers the created sidebars
+ */
+add_action('widgets_init', 'ss_register_sidebars');
+function ss_register_sidebars() {
+
+ $_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) );
+ if ( !$_sidebars ) return;
+
+ foreach ( (array)$_sidebars as $id => $info ) {
+
+ register_sidebar(array(
+ 'name' => esc_html( $info['name'] ),
+ 'id' => $id,
+ 'description' => esc_html( $info['description'] ),
+ 'editable' => 1,
+
+ 'before_widget' => '
',
+ 'after_widget' => "
\n",
+ 'before_title' => '
',
+ 'after_title' => "
\n"
+ ));
+
+ }
+
+}
+
+
+/**
+ * Remove the default sidebars, run some conditional logic,
+ * use alternate sidebars if necessary, else fallback on default sidebars.
+ */
+add_action('get_header', 'ss_sidebars_init');
+function ss_sidebars_init() {
+ remove_action('genesis_sidebar', 'genesis_do_sidebar');
+ remove_action('genesis_sidebar_alt', 'genesis_do_sidebar_alt');
+ add_action('genesis_sidebar', 'ss_do_sidebar');
+ add_action('genesis_sidebar_alt', 'ss_do_sidebar_alt');
+}
+
+function ss_do_sidebar() {
+
+ if ( is_singular() && $_sidebar = genesis_get_custom_field('_ss_sidebar') ) {
+ if ( dynamic_sidebar($_sidebar) ) return;
+ }
+
+ if ( is_category() ) {
+ $term = get_term( get_query_var('cat'), 'category' );
+ if( isset( $term->meta['_ss_sidebar'] ) && dynamic_sidebar( $term->meta['_ss_sidebar'] ) ) return;
+ }
+
+ if ( is_tag() ) {
+ $term = get_term( get_query_var('tag_id'), 'post_tag' );
+ if( isset( $term->meta['_ss_sidebar'] ) && dynamic_sidebar( $term->meta['_ss_sidebar'] ) ) return;
+ }
+
+ genesis_do_sidebar();
+
+}
+function ss_do_sidebar_alt() {
+
+ if ( is_singular() && $_sidebar_alt = genesis_get_custom_field('_ss_sidebar_alt') ) {
+ if ( dynamic_sidebar($_sidebar_alt) ) return;
+ }
+
+ if ( is_category() ) {
+ $term = get_term( get_query_var('cat'), 'category' );
+ if( isset( $term->meta['_ss_sidebar_alt'] ) && dynamic_sidebar( $term->meta['_ss_sidebar_alt'] ) ) return;
+ }
+
+ if ( is_tag() ) {
+ $term = get_term( get_query_var('tag_id'), 'post_tag' );
+ if( isset( $term->meta['_ss_sidebar_alt'] ) && dynamic_sidebar( $term->meta['_ss_sidebar_alt'] ) ) return;
+ }
+
+ genesis_do_sidebar_alt();
+
+}
\ No newline at end of file
diff --git a/readme.txt b/readme.txt
new file mode 100644
index 0000000..986db2b
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1,47 @@
+=== Plugin Name ===
+Contributors: nathanrice
+Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5553118
+Tags: hooks, genesis, genesiswp, studiopress
+Requires at least: 2.9
+Tested up to: 3.0
+Stable tag: 0.9
+
+This plugin allows you to create multiple, dynamic widget areas, and assign those widget areas to sidebar locations within the Genesis Theme Framework on a per post, per page, or per tag/category archive basis.
+
+== Description ==
+
+This plugin allows you to create multiple, dynamic widget areas, and assign those widget areas to sidebar locations within the Genesis Theme Framework on a per post, per page, or per tag/category archive basis.
+
+Creating widget areas programmatically, then using conditional logic to properly assign them to sidebar locations can be a complex task for a beginner. This plugin allows you to do all this from a simple administration menu, and assign widget areas to sidebar locations with simple drop-down menus within the post/page edit screens, or when editing a tag or category.
+
+== Installation ==
+
+1. Upload the entire `genesis-simple-sidebars` folder to the `/wp-content/plugins/` directory
+1. DO NOT change the name of the `genesis-simple-sidebars` folder
+1. Activate the plugin through the 'Plugins' menu in WordPress
+1. Navigate to the `Genesis > Simple Sidebars` menu
+1. Create as many new sidebar widget areas as you need
+1. Choose the widget area you want to display by choosing it from the drop-down menu in the post/page or category/tag edit screen.
+
+== Frequently Asked Questions ==
+
+= Can I assign widget areas to locations other than the sidebars? =
+
+No. You can only assign them to the primary and secondary sidebars, using the plugin.
+
+However, once a widget area has been created, you can use hooks to programmatically display those widget areas throughout the theme. But if you're going to do that, it's very unlikely that you would want to use the plugin to create the widget areas. You might as well just create the widget areas programmatically too.
+
+= Does this plugin give me the option of creating an entirely NEW sidebar? =
+
+Not in the way you're probably thinking. The markup surrounding the widget area never changes. The only thing that changes is the dynamic content that displays within the pre-existing sidebar locations.
+
+== Changelog ==
+
+= 0.1 =
+* Initial Alpha Release
+
+= 0.9 =
+* Fixed "is not array" errors reported by users
+* Added nonce verification for security purposes
+* Added error and success messages
+* Bump to pre-release 0.9 branch
\ No newline at end of file
diff --git a/term.php b/term.php
new file mode 100644
index 0000000..8c79ed8
--- /dev/null
+++ b/term.php
@@ -0,0 +1,53 @@
+meta = wp_parse_args( $tag->meta, array( '_ss_sidebar' => '', '_ss_sidebar_alt' => '' ) );
+
+ // Pull custom sidebars
+ $_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) );
+
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Date: Fri, 9 Aug 2013 13:06:39 -0400
Subject: [PATCH 03/13] Tagging 0.9.1.
---
inpost.php | 9 ++++++---
plugin.php | 2 +-
readme.txt | 11 +++++++----
3 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/inpost.php b/inpost.php
index c3bc3c7..b8317a2 100644
--- a/inpost.php
+++ b/inpost.php
@@ -4,9 +4,12 @@
* so that users can choose what sidebar to use.
*/
add_action('admin_menu', 'ss_add_inpost_metabox');
-function ss_add_inpost_metabox() {
- add_meta_box('ss_inpost_metabox', __('Sidebar Selection', 'genesis'), 'ss_inpost_metabox', 'post', 'side', 'low');
- add_meta_box('ss_inpost_metabox', __('Sidebar Selection', 'genesis'), 'ss_inpost_metabox', 'page', 'side', 'low');
+function ss_add_inpost_metabox() {
+ foreach ( (array)get_post_types( array( 'public' => true ) ) as $type ) {
+ if ( post_type_supports( $type, 'genesis-simple-sidebars' ) || $type == 'post' || $type == 'page' ) {
+ add_meta_box('ss_inpost_metabox', __('Sidebar Selection', 'genesis'), 'ss_inpost_metabox', $type, 'side', 'low');
+ }
+ }
}
function ss_inpost_metabox() {
diff --git a/plugin.php b/plugin.php
index 9676111..816b6c0 100644
--- a/plugin.php
+++ b/plugin.php
@@ -3,7 +3,7 @@
Plugin Name: Genesis Simple Sidebars
Plugin URI: http://www.studiopress.com/plugins/simple-sidebars
Description: Genesis Simple Sidebars allows you to easily create and use new sidebar widget areas.
-Version: 0.9
+Version: 0.9.1
Author: Nathan Rice
Author URI: http://www.nathanrice.net/
*/
diff --git a/readme.txt b/readme.txt
index 986db2b..ef74bb9 100644
--- a/readme.txt
+++ b/readme.txt
@@ -2,9 +2,9 @@
Contributors: nathanrice
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5553118
Tags: hooks, genesis, genesiswp, studiopress
-Requires at least: 2.9
-Tested up to: 3.0
-Stable tag: 0.9
+Requires at least: 3.0
+Tested up to: 3.0.1
+Stable tag: 0.9.1
This plugin allows you to create multiple, dynamic widget areas, and assign those widget areas to sidebar locations within the Genesis Theme Framework on a per post, per page, or per tag/category archive basis.
@@ -44,4 +44,7 @@ Not in the way you're probably thinking. The markup surrounding the widget area
* Fixed "is not array" errors reported by users
* Added nonce verification for security purposes
* Added error and success messages
-* Bump to pre-release 0.9 branch
\ No newline at end of file
+* Bump to pre-release 0.9 branch
+
+= 0.9.1 =
+* Added support for custom post types
\ No newline at end of file
From 78faae2bbd638832f9ffc546020fd0a88fc826fc Mon Sep 17 00:00:00 2001
From: Nathan Rice
Date: Fri, 9 Aug 2013 13:07:35 -0400
Subject: [PATCH 04/13] Tagging 0.9.2.
---
admin.php | 4 +-
functions.php | 10 +-
inpost.php | 11 +-
languages/ss-de_DE.mo | Bin 0 -> 4651 bytes
languages/ss-de_DE.po | 226 ++++++++++++++++++++++++++++++++++++++++++
languages/ss.po | 148 +++++++++++++++++++++++++++
plugin.php | 99 +++++++++++-------
readme.txt | 13 ++-
term.php | 10 +-
9 files changed, 474 insertions(+), 47 deletions(-)
create mode 100644 languages/ss-de_DE.mo
create mode 100644 languages/ss-de_DE.po
create mode 100644 languages/ss.po
diff --git a/admin.php b/admin.php
index 0225cbd..b10cd86 100644
--- a/admin.php
+++ b/admin.php
@@ -5,7 +5,7 @@
add_action('admin_init', 'register_ss_settings');
function register_ss_settings() {
register_setting(SS_SETTINGS_FIELD, SS_SETTINGS_FIELD);
- add_option(SS_SETTINGS_FIELD, '__return_empty_array', '', 'yes');
+ add_option(SS_SETTINGS_FIELD, array(), '', 'yes');
}
/**
@@ -96,7 +96,7 @@ function ss_settings_admin() { ?>
-
+
diff --git a/functions.php b/functions.php
index c12f5bc..ede9528 100644
--- a/functions.php
+++ b/functions.php
@@ -50,6 +50,10 @@ function ss_create_sidebar( $args = array() ) {
// nonce verification
check_admin_referer('simple-sidebars-action_create-sidebar');
+ // WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
+ if ( is_numeric( $args['id'] ) )
+ $args['id'] = sanitize_title_with_dashes( $args['name'] );
+
$db = (array)get_option(SS_SETTINGS_FIELD);
$new = array(
sanitize_title_with_dashes( $args['id'] ) => array(
@@ -81,6 +85,10 @@ function ss_edit_sidebar( $args = array() ) {
// nonce verification
check_admin_referer('simple-sidebars-action_edit-sidebar');
+ // WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
+ if ( is_numeric( $args['id'] ) )
+ $args['id'] = sanitize_title_with_dashes( $args['name'] );
+
$db = (array)get_option(SS_SETTINGS_FIELD);
$new = array(
sanitize_title_with_dashes( $args['id'] ) => array(
@@ -137,7 +145,7 @@ function ss_error_message( $error = false ) {
return __('Oops! Please choose a valid Name and ID for this sidebar', 'ss');
break;
case 2:
- return __('Oops! That sidebar ID already exists');
+ return __('Oops! That sidebar ID already exists', 'ss');
break;
case 3:
return __('Oops! You are trying to edit a sidebar that does not exist, or is not editable', 'ss');
diff --git a/inpost.php b/inpost.php
index b8317a2..78a65ad 100644
--- a/inpost.php
+++ b/inpost.php
@@ -7,7 +7,7 @@ add_action('admin_menu', 'ss_add_inpost_metabox');
function ss_add_inpost_metabox() {
foreach ( (array)get_post_types( array( 'public' => true ) ) as $type ) {
if ( post_type_supports( $type, 'genesis-simple-sidebars' ) || $type == 'post' || $type == 'page' ) {
- add_meta_box('ss_inpost_metabox', __('Sidebar Selection', 'genesis'), 'ss_inpost_metabox', $type, 'side', 'low');
+ add_meta_box('ss_inpost_metabox', __('Sidebar Selection', 'ss'), 'ss_inpost_metabox', $type, 'side', 'low');
}
}
}
@@ -29,7 +29,14 @@ function ss_inpost_metabox() {
?>
-
+
diff --git a/plugin.php b/plugin.php
index 5c5fe00..bea01c0 100644
--- a/plugin.php
+++ b/plugin.php
@@ -3,7 +3,7 @@
Plugin Name: Genesis Simple Sidebars
Plugin URI: http://www.studiopress.com/plugins/simple-sidebars
Description: Genesis Simple Sidebars allows you to easily create and use new sidebar widget areas.
-Version: 0.9.2
+Version: 0.9.2.1
Author: Nathan Rice
Author URI: http://www.nathanrice.net/
Text Domain: ss
@@ -125,7 +125,7 @@ function ss_do_one_sidebar( $bar = '_ss_sidebar' ) {
if ( is_tax() ) {
if( $taxonomies === null )
- $taxonomies = (array)apply_filters( 'genesis_simple_sidebars_taxonomies', array() );
+ $taxonomies = ss_get_taxonomies();
foreach( $taxonomies as $tax ) {
if( $tax == 'post_tag' || $tax == 'category' )
@@ -143,3 +143,19 @@ function ss_do_one_sidebar( $bar = '_ss_sidebar' ) {
return false;
}
+
+function ss_get_taxonomies() {
+
+ $taxonomies = get_taxonomies( array( 'show_ui' => true, 'public' => true ) );
+ return apply_filters( 'genesis_simple_sidebars_taxonomies', array_keys( $taxonomies ) );
+
+}
+
+function ss_has_3_column_layouts() {
+
+ $_layouts = (array) genesis_get_layouts();
+ $_layouts = array_keys( $_layouts );
+ $_3_column = array_intersect( $_layouts, array( 'content-sidebar-sidebar', 'sidebar-content-sidebar', 'sidebar-sidebar-content' ) );
+ return ! empty( $_3_column );
+
+}
diff --git a/readme.txt b/readme.txt
index 44312cf..7a4ccf2 100644
--- a/readme.txt
+++ b/readme.txt
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
Tags: hooks, genesis, genesiswp, studiopress
Requires at least: 3.0
Tested up to: 3.3
-Stable tag: 0.9.2
+Stable tag: 0.9.2.1
This plugin allows you to create multiple, dynamic widget areas, and assign those widget areas to sidebar locations within the Genesis Theme Framework on a per post, per page, or per tag/category archive basis.
@@ -53,3 +53,9 @@ Not in the way you're probably thinking. The markup surrounding the widget area
* Added support for custom taxonomies
* Added translation support
* bug fix to prevent invalid sidebar creation
+
+= 0.9.2.1 =
+* Restore default tag/category support
+* Default custom taxonomy support to on for public taxonomies
+* Remove secondary selection when no 3 column layouts are enabled
+
diff --git a/term.php b/term.php
index 3613af6..924a6f3 100644
--- a/term.php
+++ b/term.php
@@ -5,7 +5,7 @@
* are passed via the hook so that we can use them.
*/
function ss_term_edit_init() {
- $taxonomies = apply_filters( 'genesis_simple_sidebars_taxonomies', array() );
+ $taxonomies = ss_get_taxonomies();
if( !empty( $taxonomies ) && is_admin() && is_array( $taxonomies ) ) {
foreach( $taxonomies as $tax )
add_action( "{$tax}_edit_form", 'ss_term_sidebar', 9, 2 );
@@ -38,7 +38,10 @@ function ss_term_sidebar($tag, $taxonomy) {
-
+
@@ -52,7 +55,9 @@ function ss_term_sidebar($tag, $taxonomy) {
+
+ create_sidebar( $_POST['new_sidebar'] );
+ }
+
+ /**
+ * This section will handle the data if a sidebar is deleted
+ */
+ if ( isset( $_REQUEST['action'] ) && 'delete' == $_REQUEST['action'] && isset( $_REQUEST['id'] ) ) {
+ $this->delete_sidebar( $_REQUEST['id'] );
+ }
+
+ /**
+ * This section will handle the data if a sidebar is to be modified
+ */
+ if ( isset( $_REQUEST['action'] ) && 'edit' == $_REQUEST['action'] && ! isset( $_REQUEST['id'] ) ) {
+ $this->edit_sidebar( $_POST['edit_sidebar'] );
+ }
+
+ }
+
+ /**
+ * Add custom notices that display when you successfully create, edit, or delete a sidebar.
+ *
+ * @since 1.0.0
+ *
+ * @return null Returns null if not on the correct admin page.
+ */
+ public function notices() {
+
+ if ( ! genesis_is_menu_page( 'simple-sidebars' ) )
+ return;
+
+ $pattern = '
%s
';
+
+ if ( isset( $_REQUEST['created'] ) && 'true' === $_REQUEST['created'] ) {
+ printf( $pattern, __( 'New sidebar successfully created!', 'ss' ) );
+ return;
+ }
+
+ if ( isset( $_REQUEST['edited'] ) && 'true' === $_REQUEST['edited'] ) {
+ printf( $pattern, __( 'Sidebar successfully edited!', 'ss' ) );
+ return;
+ }
+
+ if ( isset( $_REQUEST['deleted'] ) && 'true' === $_REQUEST['deleted'] ) {
+ printf( $pattern, __( 'Sidebar successfully deleted.', 'ss' ) );
+ return;
+ }
+
+ return;
+
+ }
+
+ /**
+ * Create a sidebar.
+ *
+ * @since 1.0.0
+ *
+ */
+ protected function create_sidebar( $args = array() ) {
+
+ if ( empty( $args['name'] ) || empty( $args['id'] ) ) {
+ wp_die( $this->error( 1 ) );
+ exit;
+ }
+
+ // nonce verification
+ check_admin_referer( 'simple-sidebars-action_create-sidebar' );
+
+ // WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
+ if ( is_numeric( $args['id'] ) )
+ $args['id'] = sanitize_title_with_dashes( $args['name'] );
+
+ $db = (array) get_option( SS_SETTINGS_FIELD );
+ $new = array(
+ sanitize_title_with_dashes( $args['id'] ) => array(
+ 'name' => esc_html( $args['name'] ),
+ 'description' => esc_html( $args['description'] )
+ )
+ );
+
+ if ( array_key_exists( $args['id'], $db ) ) {
+ wp_die( $this->error( 2 ) );
+ exit;
+ }
+
+ $_sidebars = wp_parse_args( $new, $db );
+
+ update_option( SS_SETTINGS_FIELD, $_sidebars );
+ wp_redirect( admin_url( 'admin.php?page=simple-sidebars&created=true' ) );
+ exit;
+
+ }
+
+ /**
+ * Edit a sidebar.
+ *
+ * @since 1.0.0
+ *
+ */
+ protected function edit_sidebar( $args = array() ) {
+
+ if ( empty( $args['name'] ) || empty( $args['id'] ) ) {
+ wp_die( $this->error( 3 ) );
+ exit;
+ }
+
+ // nonce verification
+ check_admin_referer( 'simple-sidebars-action_edit-sidebar' );
+
+ // WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
+ if ( is_numeric( $args['id'] ) )
+ $args['id'] = sanitize_title_with_dashes( $args['name'] );
+
+ $db = (array) get_option( SS_SETTINGS_FIELD );
+ $new = array(
+ sanitize_title_with_dashes( $args['id'] ) => array(
+ 'name' => esc_html( $args['name'] ),
+ 'description' => esc_html( $args['description'] )
+ )
+ );
+
+ if ( ! array_key_exists( $args['id'], $db ) ) {
+ wp_die( $this->error( 3 ) );
+ exit;
+ }
+
+ $_sidebars = wp_parse_args( $new, $db );
+
+ update_option( SS_SETTINGS_FIELD, $_sidebars );
+ wp_redirect( admin_url( 'admin.php?page=simple-sidebars&edited=true' ) );
+ exit;
+
+ }
+
+ /**
+ * Delete a sidebar.
+ *
+ * @since 1.0.0
+ *
+ */
+ protected function delete_sidebar( $id = '' ) {
+
+ if ( empty( $id ) ) {
+ wp_die( $this->error( 4 ) );
+ exit;
+ }
+
+ // nonce verification
+ check_admin_referer( 'simple-sidebars-action_delete-sidebar' );
+
+ $_sidebars = (array) get_option( SS_SETTINGS_FIELD );
+
+ if ( ! isset( $_sidebars[$id] ) ) {
+ wp_die( $this->error( 4 ) );
+ exit;
+ }
+
+ unset( $_sidebars[$id] );
+
+ update_option( SS_SETTINGS_FIELD, $_sidebars );
+ wp_redirect( admin_url( 'admin.php?page=simple-sidebars&deleted=true' ) );
+ exit;
+
+ }
+
+ /**
+ * Returns an error message by ID.
+ *
+ * @since 1.0.0
+ *
+ * @return string Returns an error string based on an error ID.
+ */
+ protected function error( $error = false ) {
+
+ if ( ! $error )
+ return false;
+
+ switch( (int) $error ) {
+
+ case 1:
+ return __( 'Oops! Please choose a valid Name and ID for this sidebar', 'ss' );
+ break;
+ case 2:
+ return __( 'Oops! That sidebar ID already exists', 'ss' );
+ break;
+ case 3:
+ return __( 'Oops! You are trying to edit a sidebar that does not exist, or is not editable', 'ss' );
+ break;
+ case 4:
+ return __( 'Oops! You are trying to delete a sidebar that does not exist, or cannot be deleted', 'ss' );
+ break;
+ default:
+ return __( 'Oops! Something went wrong. Try again.', 'ss' );
+
+ }
+
+ }
+
+}
+
+add_action( 'genesis_admin_menu', 'simplesidebars_settings_menu' );
+/**
+ * Instantiate the class to create the menu.
+ *
+ * @since 1.0.0
+ */
+function simplesidebars_settings_menu() {
+
+ new Genesis_Simple_Sidebars_Admin;
+
+}
\ No newline at end of file
diff --git a/inpost.php b/includes/inpost.php
similarity index 95%
rename from inpost.php
rename to includes/inpost.php
index 735b68f..4012419 100644
--- a/inpost.php
+++ b/includes/inpost.php
@@ -4,20 +4,26 @@
* so that users can choose what sidebar to use.
*/
add_action('admin_menu', 'ss_add_inpost_metabox');
-function ss_add_inpost_metabox() {
+function ss_add_inpost_metabox() {
+
foreach ( (array)get_post_types( array( 'public' => true ) ) as $type ) {
+
if ( post_type_supports( $type, 'genesis-simple-sidebars' ) || $type == 'post' || $type == 'page' ) {
add_meta_box('ss_inpost_metabox', __('Sidebar Selection', 'ss'), 'ss_inpost_metabox', $type, 'side', 'low');
- }
+ }
+
}
+
}
-function ss_inpost_metabox() {
+function ss_inpost_metabox() {
+
$_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) );
+
?>
-
+
-
+
@@ -45,8 +51,8 @@ function ss_inpost_metabox() {
?>
-
-ID;
-
+
// don't try to save the data under autosave, ajax, or future post.
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;
if ( defined('DOING_AJAX') && DOING_AJAX ) return;
@@ -67,17 +73,17 @@ function ss_inpost_metabox_save( $post_id, $post ) {
// is the user allowed to edit the post or page?
if ( ( 'page' == $_POST['post_type'] && !current_user_can('edit_page', $post->ID) ) || !current_user_can('edit_post', $post->ID ) )
return $post->ID;
-
+
$_sidebars = array(
'_ss_sidebar' => $_POST['_ss_sidebar'],
'_ss_sidebar_alt' => $_POST['_ss_sidebar_alt']
);
-
+
// store the custom fields
foreach ( $_sidebars as $key => $value ) {
-
+
if ( $post->post_type == 'revision' ) return; // don't try to store data during revision save
-
+
if ( $value ) {
// save/update
update_post_meta($post->ID, $key, $value);
@@ -87,5 +93,5 @@ function ss_inpost_metabox_save( $post_id, $post ) {
}
}
-
+
}
\ No newline at end of file
diff --git a/term.php b/includes/term.php
similarity index 95%
rename from term.php
rename to includes/term.php
index 924a6f3..abbc6b4 100644
--- a/term.php
+++ b/includes/term.php
@@ -5,26 +5,31 @@
* are passed via the hook so that we can use them.
*/
function ss_term_edit_init() {
+
$taxonomies = ss_get_taxonomies();
- if( !empty( $taxonomies ) && is_admin() && is_array( $taxonomies ) ) {
+
+ if ( ! empty( $taxonomies ) && is_admin() && is_array( $taxonomies ) ) {
+
foreach( $taxonomies as $tax )
add_action( "{$tax}_edit_form", 'ss_term_sidebar', 9, 2 );
+
}
+
}
function ss_term_sidebar($tag, $taxonomy) {
-
+
// Merge Defaults to prevent notices
$tag->meta = wp_parse_args( $tag->meta, array( '_ss_sidebar' => '', '_ss_sidebar_alt' => '' ) );
// Pull custom sidebars
$_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) );
-
+
?>
-
+
@@ -41,7 +46,7 @@ function ss_term_sidebar($tag, $taxonomy) {
+?>
@@ -59,6 +64,6 @@ function ss_term_sidebar($tag, $taxonomy) {
}
?>
-
+
+
+
+
\ No newline at end of file
diff --git a/includes/views/main.php b/includes/views/main.php
new file mode 100644
index 0000000..d3e3501
--- /dev/null
+++ b/includes/views/main.php
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ table_rows(); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin.php b/plugin.php
index bea01c0..13be297 100644
--- a/plugin.php
+++ b/plugin.php
@@ -3,102 +3,159 @@
Plugin Name: Genesis Simple Sidebars
Plugin URI: http://www.studiopress.com/plugins/simple-sidebars
Description: Genesis Simple Sidebars allows you to easily create and use new sidebar widget areas.
-Version: 0.9.2.1
Author: Nathan Rice
Author URI: http://www.nathanrice.net/
+
Text Domain: ss
Domain Path: /languages/
+
+Version: 1.0.0
+
+License: GNU General Public License v2.0 (or later)
+License URI: http://www.opensource.org/licenses/gpl-license.php
*/
-// require Genesis 1.2 upon activation
-register_activation_hook(__FILE__, 'ss_activation_check');
+/** Define our constants */
+define( 'SS_SETTINGS_FIELD', 'ss-settings' );
+define( 'SS_PLUGIN_DIR', dirname( __FILE__ ) );
+
+register_activation_hook( __FILE__, 'ss_activation_check' );
+/**
+ * Activation hook callback.
+ *
+ * This functions runs when the plugin is activated. It checks to make sure the user is running
+ * a minimum Genesis version, so there are no conflicts or fatal errors.
+ *
+ * @since 0.9.0
+ */
function ss_activation_check() {
- $latest = '1.2';
-
- $theme_info = get_theme_data(TEMPLATEPATH.'/style.css');
-
- if( basename(TEMPLATEPATH) != 'genesis' ) {
- load_plugin_textdomain( 'ss', false, 'genesis-simple-sidebars/languages' );
- deactivate_plugins(plugin_basename(__FILE__)); // Deactivate ourself
- wp_die( sprintf( __('Sorry, you can\'t activate unless you have installed Genesis', 'ss'), 'http://www.studiopress.com/themes/genesis' ) );
- }
-
- if( version_compare( $theme_info['Version'], $latest, '<' ) ) {
- deactivate_plugins(plugin_basename(__FILE__)); // Deactivate ourself
- wp_die( sprintf( __('Sorry, you cannot activate without Genesis %s or greater', 'ss'), 'http://www.studiopress.com/support/showthread.php?t=19576', $latest ) );
- }
+ if ( 'genesis' != basename( TEMPLATEPATH ) ) {
+ ss_deactivate( '1.8.0', '3.3' );
+ }
}
/**
- * Hook into Genesis
+ * Deactivate Simple Sidebars.
+ *
+ * This function deactivates Simple Sidebars.
+ *
+ * @since 1.0.0
*/
-add_action( 'genesis_init', 'ss_genesis_init', 12 );
-function ss_genesis_init() {
- // Define our constants
- define( 'SS_SETTINGS_FIELD', 'ss-settings' );
- define( 'SS_PLUGIN_DIR', dirname( __FILE__ ) );
+function ss_deactivate( $genesis_version = '1.8.0', $wp_version = '3.3' ) {
- // required hooks
+ deactivate_plugins( plugin_basename( __FILE__ ) );
+ wp_die( sprintf( __( 'Sorry, you cannot run Simple Sidebars without WordPress %s and Genesis %s, or greater.', 'ss' ), $wp_version, 'http://www.studiopress.com/support/showthread.php?t=19576', $genesis_version ) );
+
+}
+
+add_action( 'genesis_init', 'ss_genesis_init', 12 );
+/**
+ * Plugin initialization.
+ *
+ * Initialize the plugin, set the constants, hook callbacks to actions, and include the plugin library.
+ *
+ * @since 0.9.0
+ */
+function ss_genesis_init() {
+
+ /** Deactivate if not running Genesis 1.8.0 or greater */
+ if ( ! class_exists( 'Genesis_Admin_Boxes' ) )
+ add_action( 'admin_init', 'ss_deactivate', 10, 0 );
+
+ /** Load translations */
+ load_plugin_textdomain( 'ss', false, 'genesis-simple-sidebars/languages' );
+
+ /** required hooks */
add_action( 'get_header', 'ss_sidebars_init' );
add_action( 'widgets_init', 'ss_register_sidebars' );
- if ( !is_admin() )
+
+ /** The rest is admin stuff, so load only if we're in the admin area */
+ if ( ! is_admin() )
return;
- // Include admin files
- load_plugin_textdomain( 'ss', false, 'genesis-simple-sidebars/languages' );
- require_once( SS_PLUGIN_DIR . '/admin.php' );
- require_once( SS_PLUGIN_DIR . '/functions.php' );
- require_once( SS_PLUGIN_DIR . '/inpost.php' );
- require_once( SS_PLUGIN_DIR . '/term.php' );
- // let the child theme hook the genesis_simple_sidebars_taxonomies filter before hooking term edit
+ /** Include admin files */
+ require_once( SS_PLUGIN_DIR . '/includes/admin.php' );
+ require_once( SS_PLUGIN_DIR . '/includes/inpost.php' );
+ require_once( SS_PLUGIN_DIR . '/includes/term.php' );
+
+ /** let the child theme hook the genesis_simple_sidebars_taxonomies filter before hooking term edit */
add_action( 'init', 'ss_term_edit_init' );
+
}
/**
- * This function registers the created sidebars
+ * Register widget areas.
+ *
+ * This function registers the created sidebars as widget areas
+ *
+ * @since 0.9.0
*/
function ss_register_sidebars() {
-
+
$_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) );
- if ( !$_sidebars ) return;
-
- foreach ( (array)$_sidebars as $id => $info ) {
-
- register_sidebar(array(
+
+ /** If no sidebars have been created, do nothing */
+ if ( ! $_sidebars )
+ return;
+
+ /** Cycle through created sidebars, register them as widget areas */
+ foreach ( (array) $_sidebars as $id => $info ) {
+
+ register_sidebar( array(
'name' => esc_html( $info['name'] ),
'id' => $id,
'description' => esc_html( $info['description'] ),
'editable' => 1,
-
+
'before_widget' => '
',
'after_widget' => "
\n",
'before_title' => '
',
'after_title' => "
\n"
- ));
-
- }
-
-}
+ ) );
+ }
+
+}
/**
+ * Use custom sidebars.
+ *
* Remove the default sidebars, run some conditional logic,
* use alternate sidebars if necessary, else fallback on default sidebars.
+ *
+ * @since 0.9.0
*/
function ss_sidebars_init() {
- remove_action('genesis_sidebar', 'genesis_do_sidebar');
- remove_action('genesis_sidebar_alt', 'genesis_do_sidebar_alt');
- add_action('genesis_sidebar', 'ss_do_sidebar');
- add_action('genesis_sidebar_alt', 'ss_do_sidebar_alt');
+
+ remove_action( 'genesis_sidebar', 'genesis_do_sidebar' );
+ remove_action( 'genesis_sidebar_alt', 'genesis_do_sidebar_alt' );
+ add_action( 'genesis_sidebar', 'ss_do_sidebar' );
+ add_action( 'genesis_sidebar_alt', 'ss_do_sidebar_alt' );
+
}
+/**
+ * Display primary sidebar.
+ *
+ * Display custom sidebar if one exists, else display default primary sidebar.
+ *
+ * @since 0.9.0
+ */
function ss_do_sidebar() {
if ( ! ss_do_one_sidebar( '_ss_sidebar' ) )
genesis_do_sidebar();
}
+
+/**
+ * Display secondary sidebar.
+ *
+ * Display custom sidebar if one exists, else display default secondary sidebar.
+ *
+ * @since 0.9.0
+ */
function ss_do_sidebar_alt() {
if ( ! ss_do_one_sidebar( '_ss_sidebar_alt' ) )
@@ -106,44 +163,62 @@ function ss_do_sidebar_alt() {
}
-function ss_do_one_sidebar( $bar = '_ss_sidebar' ) {
+/**
+ * Sidebar widget area output.
+ *
+ * Helper function to show widgets in a particular sidebar.
+ *
+ * @param string $sidebar_key sidebar id you wish to output.
+ *
+ * @since 0.9.0
+ *
+ */
+function ss_do_one_sidebar( $sidebar_key = '_ss_sidebar' ) {
+
static $taxonomies = null;
-
- if ( is_singular() && $_bar = genesis_get_custom_field( $bar ) ) {
- if ( dynamic_sidebar( $_bar ) ) return true;
+
+ if ( is_singular() && $sidebar_key = genesis_get_custom_field( $sidebar_key ) ) {
+ if ( dynamic_sidebar( $sidebar_key ) ) return true;
}
-
+
if ( is_category() ) {
- $term = get_term( get_query_var('cat'), 'category' );
- if( isset( $term->meta[$bar] ) && dynamic_sidebar( $term->meta[$bar] ) ) return true;
+ $term = get_term( get_query_var( 'cat' ), 'category' );
+ if ( isset( $term->meta[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true;
}
-
+
if ( is_tag() ) {
- $term = get_term( get_query_var('tag_id'), 'post_tag' );
- if( isset( $term->meta[$bar] ) && dynamic_sidebar( $term->meta[$bar] ) ) return true;
+ $term = get_term( get_query_var( 'tag_id' ), 'post_tag' );
+ if ( isset( $term->meta[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true;
}
-
+
if ( is_tax() ) {
- if( $taxonomies === null )
+ if ( null === $taxonomies )
$taxonomies = ss_get_taxonomies();
-
- foreach( $taxonomies as $tax ) {
- if( $tax == 'post_tag' || $tax == 'category' )
+
+ foreach ( $taxonomies as $tax ) {
+ if ( 'post_tag' == $tax || 'category' == $tax )
continue;
-
- if( is_tax( $tax ) ) {
+
+ if ( is_tax( $tax ) ) {
$obj = get_queried_object();
$term = get_term( $obj->term_id, $tax );
- if( isset( $term->meta[$bar] ) && dynamic_sidebar( $term->meta[$bar] ) ) return true;
+ if ( isset( $term->meta[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true;
break;
}
}
}
-
+
return false;
-
+
}
+/**
+ * Return taxonomy ids.
+ *
+ * Helper function to return the array keys from a taxonomy query.
+ *
+ * @since 0.9.0
+ */
function ss_get_taxonomies() {
$taxonomies = get_taxonomies( array( 'show_ui' => true, 'public' => true ) );
@@ -151,11 +226,20 @@ function ss_get_taxonomies() {
}
+/**
+ * Does this Genesis install have the 3 column layouts deactivated?
+ *
+ * This function checks to see if the Genesis install still has active 3 column layouts. Since
+ * child themes and plugins can deregister layouts, we need to know if they have deregistered the 3 column layouts.
+ *
+ * @since 0.9.2
+ */
function ss_has_3_column_layouts() {
$_layouts = (array) genesis_get_layouts();
$_layouts = array_keys( $_layouts );
$_3_column = array_intersect( $_layouts, array( 'content-sidebar-sidebar', 'sidebar-content-sidebar', 'sidebar-sidebar-content' ) );
+
return ! empty( $_3_column );
}
From 718dfd9a556ca87189951508457bde6c97eac649 Mon Sep 17 00:00:00 2001
From: Nathan Rice
Date: Fri, 9 Aug 2013 13:35:43 -0400
Subject: [PATCH 07/13] Genesis 2.0 compatibility, standards.
---
includes/admin.php | 18 +++++++--------
includes/inpost.php | 50 ++++++++++++++++++++---------------------
includes/term.php | 16 ++++++-------
includes/views/edit.php | 20 ++++++++---------
includes/views/main.php | 34 ++++++++++++++--------------
plugin.php | 31 +++++++++++--------------
readme.txt | 6 ++---
7 files changed, 85 insertions(+), 90 deletions(-)
diff --git a/includes/admin.php b/includes/admin.php
index 01cf047..d55d0bb 100644
--- a/includes/admin.php
+++ b/includes/admin.php
@@ -34,14 +34,14 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
)
);
- /** Empty, as we'll be building the page manually */
+ //* Empty, as we'll be building the page manually
$page_ops = array();
$settings_field = SS_SETTINGS_FIELD;
$this->create( $page_id, $menu_ops, $page_ops, $settings_field );
- /** Simpe Sidebar actions (create, edit, or delete) */
+ //* Simpe Sidebar actions (create, edit, or delete)
add_action( 'admin_init', array( $this, 'actions' ) );
}
@@ -123,7 +123,7 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
* Action handler.
*
* Depending on what action was intended by the user, this method calls the appropriate action method.
- *
+ *
* @since 1.0.0
*
*/
@@ -201,10 +201,10 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
exit;
}
- // nonce verification
+ //* nonce verification
check_admin_referer( 'simple-sidebars-action_create-sidebar' );
- // WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
+ //* WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
if ( is_numeric( $args['id'] ) )
$args['id'] = sanitize_title_with_dashes( $args['name'] );
@@ -242,10 +242,10 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
exit;
}
- // nonce verification
+ //* nonce verification
check_admin_referer( 'simple-sidebars-action_edit-sidebar' );
- // WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
+ //* WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
if ( is_numeric( $args['id'] ) )
$args['id'] = sanitize_title_with_dashes( $args['name'] );
@@ -283,7 +283,7 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
exit;
}
- // nonce verification
+ //* nonce verification
check_admin_referer( 'simple-sidebars-action_delete-sidebar' );
$_sidebars = (array) get_option( SS_SETTINGS_FIELD );
@@ -346,4 +346,4 @@ function simplesidebars_settings_menu() {
new Genesis_Simple_Sidebars_Admin;
-}
\ No newline at end of file
+}
diff --git a/includes/inpost.php b/includes/inpost.php
index 4012419..e639cff 100644
--- a/includes/inpost.php
+++ b/includes/inpost.php
@@ -1,15 +1,15 @@
true ) ) as $type ) {
+ foreach ( (array) get_post_types( array( 'public' => true ) ) as $type ) {
if ( post_type_supports( $type, 'genesis-simple-sidebars' ) || $type == 'post' || $type == 'page' ) {
- add_meta_box('ss_inpost_metabox', __('Sidebar Selection', 'ss'), 'ss_inpost_metabox', $type, 'side', 'low');
+ add_meta_box( 'ss_inpost_metabox', __( 'Sidebar Selection', 'ss' ), 'ss_inpost_metabox', $type, 'side', 'low' );
}
}
@@ -22,31 +22,31 @@ function ss_inpost_metabox() {
?>
-
+
-
+
-
+
@@ -55,43 +55,43 @@ function ss_inpost_metabox() {
ID;
- // don't try to save the data under autosave, ajax, or future post.
+ //* don't try to save the data under autosave, ajax, or future post.
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;
if ( defined('DOING_AJAX') && DOING_AJAX ) return;
if ( defined('DOING_CRON') && DOING_CRON ) return;
- // is the user allowed to edit the post or page?
- if ( ( 'page' == $_POST['post_type'] && !current_user_can('edit_page', $post->ID) ) || !current_user_can('edit_post', $post->ID ) )
+ //* is the user allowed to edit the post or page?
+ if ( ( 'page' == $_POST['post_type'] && ! current_user_can( 'edit_page', $post->ID ) ) || ! current_user_can( 'edit_post', $post->ID ) )
return $post->ID;
$_sidebars = array(
- '_ss_sidebar' => $_POST['_ss_sidebar'],
- '_ss_sidebar_alt' => $_POST['_ss_sidebar_alt']
+ '_ss_sidebar' => $_POST['_ss_sidebar'],
+ '_ss_sidebar_alt' => $_POST['_ss_sidebar_alt'],
);
- // store the custom fields
+ //* store the custom fields
foreach ( $_sidebars as $key => $value ) {
- if ( $post->post_type == 'revision' ) return; // don't try to store data during revision save
+ //* don't try to store data during revision save
+ if ( 'revision' === $post->post_type )
+ return;
if ( $value ) {
- // save/update
update_post_meta($post->ID, $key, $value);
} else {
- // delete if blank
delete_post_meta($post->ID, $key);
}
}
-}
\ No newline at end of file
+}
diff --git a/includes/term.php b/includes/term.php
index abbc6b4..c4a2c0f 100644
--- a/includes/term.php
+++ b/includes/term.php
@@ -27,16 +27,16 @@ function ss_term_sidebar($tag, $taxonomy) {
?>
-
+
-
+
-
+screen_icon( 'themes' ); ?>
+
\ No newline at end of file
+
diff --git a/includes/views/main.php b/includes/views/main.php
index d3e3501..721676e 100644
--- a/includes/views/main.php
+++ b/includes/views/main.php
@@ -1,26 +1,26 @@
-
-
+
+
-
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -39,29 +39,29 @@
-
+
diff --git a/plugin.php b/plugin.php
index 13be297..15a4e5e 100644
--- a/plugin.php
+++ b/plugin.php
@@ -9,7 +9,7 @@ Author URI: http://www.nathanrice.net/
Text Domain: ss
Domain Path: /languages/
-Version: 1.0.0
+Version: 2.0.0-dev
License: GNU General Public License v2.0 (or later)
License URI: http://www.opensource.org/licenses/gpl-license.php
@@ -60,27 +60,27 @@ add_action( 'genesis_init', 'ss_genesis_init', 12 );
*/
function ss_genesis_init() {
- /** Deactivate if not running Genesis 1.8.0 or greater */
+ //* Deactivate if not running Genesis 1.8.0 or greater
if ( ! class_exists( 'Genesis_Admin_Boxes' ) )
add_action( 'admin_init', 'ss_deactivate', 10, 0 );
- /** Load translations */
+ //* Load translations
load_plugin_textdomain( 'ss', false, 'genesis-simple-sidebars/languages' );
- /** required hooks */
+ //* required hooks
add_action( 'get_header', 'ss_sidebars_init' );
add_action( 'widgets_init', 'ss_register_sidebars' );
- /** The rest is admin stuff, so load only if we're in the admin area */
+ //* The rest is admin stuff, so load only if we're in the admin area
if ( ! is_admin() )
return;
- /** Include admin files */
+ //* Include admin files
require_once( SS_PLUGIN_DIR . '/includes/admin.php' );
require_once( SS_PLUGIN_DIR . '/includes/inpost.php' );
require_once( SS_PLUGIN_DIR . '/includes/term.php' );
- /** let the child theme hook the genesis_simple_sidebars_taxonomies filter before hooking term edit */
+ //* let the child theme hook the genesis_simple_sidebars_taxonomies filter before hooking term edit
add_action( 'init', 'ss_term_edit_init' );
}
@@ -95,23 +95,18 @@ function ss_register_sidebars() {
$_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) );
- /** If no sidebars have been created, do nothing */
+ //* If no sidebars have been created, do nothing
if ( ! $_sidebars )
return;
- /** Cycle through created sidebars, register them as widget areas */
+ //* Cycle through created sidebars, register them as widget areas
foreach ( (array) $_sidebars as $id => $info ) {
- register_sidebar( array(
- 'name' => esc_html( $info['name'] ),
- 'id' => $id,
+ genesis_register_sidebar( array(
+ 'name' => esc_html( $info['name'] ),
+ 'id' => $id,
'description' => esc_html( $info['description'] ),
- 'editable' => 1,
-
- 'before_widget' => '
',
- 'after_widget' => "
\n",
- 'before_title' => '
',
- 'after_title' => "
\n"
+ 'editable' => 1,
) );
}
diff --git a/readme.txt b/readme.txt
index 7a4ccf2..52100d1 100644
--- a/readme.txt
+++ b/readme.txt
@@ -4,13 +4,13 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
Tags: hooks, genesis, genesiswp, studiopress
Requires at least: 3.0
Tested up to: 3.3
-Stable tag: 0.9.2.1
+Stable tag: 1.0.0
-This plugin allows you to create multiple, dynamic widget areas, and assign those widget areas to sidebar locations within the Genesis Theme Framework on a per post, per page, or per tag/category archive basis.
+This plugin allows you to create multiple, dynamic widget areas, and assign those widget areas to sidebar locations within the Genesis Framework on a per post, per page, or per tag/category archive basis.
== Description ==
-This plugin allows you to create multiple, dynamic widget areas, and assign those widget areas to sidebar locations within the Genesis Theme Framework on a per post, per page, or per tag/category archive basis.
+This plugin allows you to create multiple, dynamic widget areas, and assign those widget areas to sidebar locations within the Genesis Framework on a per post, per page, or per tag/category archive basis.
Creating widget areas programmatically, then using conditional logic to properly assign them to sidebar locations can be a complex task for a beginner. This plugin allows you to do all this from a simple administration menu, and assign widget areas to sidebar locations with simple drop-down menus within the post/page edit screens, or when editing a tag or category.
From 39f21130f4f08173343523f68a3d607bf0669576 Mon Sep 17 00:00:00 2001
From: Nathan Rice
Date: Fri, 9 Aug 2013 13:38:26 -0400
Subject: [PATCH 08/13] Better Genesis version detection.
---
plugin.php | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/plugin.php b/plugin.php
index 15a4e5e..3cafa00 100644
--- a/plugin.php
+++ b/plugin.php
@@ -30,9 +30,8 @@ register_activation_hook( __FILE__, 'ss_activation_check' );
*/
function ss_activation_check() {
- if ( 'genesis' != basename( TEMPLATEPATH ) ) {
- ss_deactivate( '1.8.0', '3.3' );
- }
+ if ( ! defined( 'PARENT_THEME_VERSION' ) || ! version_compare( PARENT_THEME_VERSION, '2.0.0', '>=' ) )
+ ss_deactivate( '2.0.0', '3.6' );
}
@@ -46,7 +45,7 @@ function ss_activation_check() {
function ss_deactivate( $genesis_version = '1.8.0', $wp_version = '3.3' ) {
deactivate_plugins( plugin_basename( __FILE__ ) );
- wp_die( sprintf( __( 'Sorry, you cannot run Simple Sidebars without WordPress %s and Genesis %s, or greater.', 'ss' ), $wp_version, 'http://www.studiopress.com/support/showthread.php?t=19576', $genesis_version ) );
+ wp_die( sprintf( __( 'Sorry, you cannot run Simple Sidebars without WordPress %s and Genesis %s, or greater.', 'simplehooks' ), $wp_version, 'http://my.studiopress.com/?download_id=91046d629e74d525b3f2978e404e7ffa', $genesis_version ) );
}
From c47dd22e9272808596a1e08ddc225d0f73647c44 Mon Sep 17 00:00:00 2001
From: Nathan Rice
Date: Fri, 9 Aug 2013 13:43:39 -0400
Subject: [PATCH 09/13] Tagging 2.0.0.
---
plugin.php | 2 +-
readme.txt | 13 ++++++++++---
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/plugin.php b/plugin.php
index 3cafa00..290877f 100644
--- a/plugin.php
+++ b/plugin.php
@@ -9,7 +9,7 @@ Author URI: http://www.nathanrice.net/
Text Domain: ss
Domain Path: /languages/
-Version: 2.0.0-dev
+Version: 2.0.0
License: GNU General Public License v2.0 (or later)
License URI: http://www.opensource.org/licenses/gpl-license.php
diff --git a/readme.txt b/readme.txt
index 52100d1..99f8a1e 100644
--- a/readme.txt
+++ b/readme.txt
@@ -2,9 +2,9 @@
Contributors: nathanrice, wpmuguru
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5553118
Tags: hooks, genesis, genesiswp, studiopress
-Requires at least: 3.0
-Tested up to: 3.3
-Stable tag: 1.0.0
+Requires at least: 3.6
+Tested up to: 3.6
+Stable tag: 2.0.0
This plugin allows you to create multiple, dynamic widget areas, and assign those widget areas to sidebar locations within the Genesis Framework on a per post, per page, or per tag/category archive basis.
@@ -59,3 +59,10 @@ Not in the way you're probably thinking. The markup surrounding the widget area
* Default custom taxonomy support to on for public taxonomies
* Remove secondary selection when no 3 column layouts are enabled
+= 1.0.0 =
+* Reorganize theme files
+* Standards
+
+= 2.0.0 =
+* Compatibility with Genesis 2.0
+* Standards
\ No newline at end of file
From f84db05c75c5c574bb5e30bed4e3a19941ab8223 Mon Sep 17 00:00:00 2001
From: Bill Erickson
Date: Fri, 9 Aug 2013 18:44:30 -0500
Subject: [PATCH 10/13] use sidebar name rather than hardcoded labels
---
includes/inpost.php | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/includes/inpost.php b/includes/inpost.php
index e639cff..c1fb2ce 100644
--- a/includes/inpost.php
+++ b/includes/inpost.php
@@ -19,13 +19,18 @@ function ss_add_inpost_metabox() {
function ss_inpost_metabox() {
$_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) );
+ global $wp_registered_sidebars;
?>
+
+
-
+
-
+
Date: Tue, 20 Aug 2013 03:40:55 +0100
Subject: [PATCH 11/13] Fix incorrect text domain
---
plugin.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugin.php b/plugin.php
index 290877f..bb75b0e 100644
--- a/plugin.php
+++ b/plugin.php
@@ -45,7 +45,7 @@ function ss_activation_check() {
function ss_deactivate( $genesis_version = '1.8.0', $wp_version = '3.3' ) {
deactivate_plugins( plugin_basename( __FILE__ ) );
- wp_die( sprintf( __( 'Sorry, you cannot run Simple Sidebars without WordPress %s and Genesis %s, or greater.', 'simplehooks' ), $wp_version, 'http://my.studiopress.com/?download_id=91046d629e74d525b3f2978e404e7ffa', $genesis_version ) );
+ wp_die( sprintf( __( 'Sorry, you cannot run Simple Sidebars without WordPress %s and Genesis %s, or greater.', 'ss' ), $wp_version, 'http://my.studiopress.com/?download_id=91046d629e74d525b3f2978e404e7ffa', $genesis_version ) );
}
From eedd494ae53673170b62753adf3b606b5175d13b Mon Sep 17 00:00:00 2001
From: Nathan Rice
Date: Mon, 26 Aug 2013 15:02:02 -0400
Subject: [PATCH 12/13] Use proper key for Genesis 2.0.1 compatibility.
---
includes/term.php | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/includes/term.php b/includes/term.php
index c4a2c0f..c11332e 100644
--- a/includes/term.php
+++ b/includes/term.php
@@ -31,9 +31,9 @@ function ss_term_sidebar($tag, $taxonomy) {