web/wp-content/themes/thematic/library/extensions/widgets-extensions.php
changeset 1 0d28b7c10758
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-content/themes/thematic/library/extensions/widgets-extensions.php	Fri Mar 12 13:29:04 2010 +0000
@@ -0,0 +1,468 @@
+<?php
+
+function thematic_search_form() {
+				$search_form = "\n" . "\t";
+				$search_form .= '<form id="searchform" method="get" action="' . get_bloginfo('home') .'">';
+				$search_form .= "\n" . "\t" . "\t";
+				$search_form .= '<div>';
+				$search_form .= "\n" . "\t" . "\t". "\t";
+				if (is_search()) {
+						$search_form .= '<input id="s" name="s" type="text" value="' . wp_specialchars(stripslashes($_GET['s']), true) .'" size="32" tabindex="1" />';
+				} else {
+						$value = __('To search, type and hit enter', 'thematic');
+						$value = apply_filters('search_field_value',$value);
+						$search_form .= '<input id="s" name="s" type="text" value="' . $value . '" onfocus="if (this.value == \'' . $value . '\') {this.value = \'\';}" onblur="if (this.value == \'\') {this.value = \'' . $value . '\';}" size="32" tabindex="1" />';
+				}
+				$search_form .= "\n" . "\t" . "\t". "\t";
+
+				$search_submit = '<input id="searchsubmit" name="searchsubmit" type="submit" value="' . __('Search', 'thematic') . '" tabindex="2" />';
+
+				$search_form .= apply_filters('thematic_search_submit', $search_submit);
+
+				$search_form .= "\n" . "\t" . "\t";
+				$search_form .= '</div>';
+
+				$search_form .= "\n" . "\t";
+				$search_form .= '</form>';
+
+				echo apply_filters('thematic_search_form', $search_form);
+
+}
+
+// Widgets plugin: intializes the plugin after the widgets above have passed snuff
+
+function thematic_widgets_init() {
+
+	// Define array for the widgetized areas
+	$thematic_widgetized_areas = array(
+		'Primary Aside' => array(
+			'admin_menu_order' => 100,
+			'args' => array (
+				'name' => 'Primary Aside',
+				'id' => 'primary-aside',
+                'description' => __('The primary widget area, most often used as a sidebar.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_primary_aside',
+			'function'		=> 'thematic_primary_aside',
+			'priority'		=> 10,
+			),
+		'Secondary Aside' => array(
+			'admin_menu_order' => 200,
+			'args' => array (
+				'name' => 'Secondary Aside',
+				'id' => 'secondary-aside',
+                'description' => __('The secondary widget area, most often used as a sidebar.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_secondary_aside',
+			'function'		=> 'thematic_secondary_aside',
+			'priority'		=> 10,
+			),
+		'1st Subsidiary Aside' => array(
+			'admin_menu_order' => 300,
+			'args' => array (
+				'name' => '1st Subsidiary Aside',
+				'id' => '1st-subsidiary-aside',
+                'description' => __('The 1st widget area in the footer.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_subsidiaries',
+			'function'		=> 'thematic_1st_subsidiary_aside',
+			'priority'		=> 30,
+			),
+		'2nd Subsidiary Aside' => array(
+			'admin_menu_order' => 400,
+			'args' => array (
+				'name' => '2nd Subsidiary Aside',
+				'id' => '2nd-subsidiary-aside',
+                'description' => __('The 2nd widget area in the footer.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_subsidiaries',
+			'function'		=> 'thematic_2nd_subsidiary_aside',
+			'priority'		=> 50,
+			),
+		'3rd Subsidiary Aside' => array(
+			'admin_menu_order' => 500,
+			'args' => array (
+				'name' => '3rd Subsidiary Aside',
+				'id' => '3rd-subsidiary-aside',
+                'description' => __('The 3rd widget area in the footer.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_subsidiaries',
+			'function'		=> 'thematic_3rd_subsidiary_aside',
+			'priority'		=> 70,
+		),
+		'Index Top' => array(
+			'admin_menu_order' => 600,
+			'args' => array (
+				'name' => 'Index Top',
+				'id' => 'index-top',
+                'description' => __('The top widget area displayed on the index page.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_index_top',
+			'function'		=> 'thematic_index_top',
+			'priority'		=> 10,
+			),
+		'Index Insert' => array(
+			'admin_menu_order' => 700,
+			'args' => array (
+				'name' => 'Index Insert',
+				'id' => 'index-insert',
+                'description' => __('The widget area inserted after x posts on the index page.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_index_insert',
+			'function'		=> 'thematic_index_insert',
+			'priority'		=> 10,
+			),
+		'Index Bottom' => array(
+			'admin_menu_order' => 800,
+			'args' => array (
+				'name' => 'Index Bottom',
+				'id' => 'index-bottom',
+                'description' => __('The bottom widget area displayed on the index page.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_index_bottom',
+			'function'		=> 'thematic_index_bottom',
+			'priority'		=> 10,
+			),
+		'Single Top' => array(
+			'admin_menu_order' => 900,
+			'args' => array (
+				'name' => 'Single Top',
+				'id' => 'single-top',
+                'description' => __('The top widget area displayed on a single post.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_single_top',
+			'function'		=> 'thematic_single_top',
+			'priority'		=> 10,
+			),
+		'Single Insert' => array(
+			'admin_menu_order' => 1000,
+			'args' => array (
+				'name' => 'Single Insert',
+				'id' => 'single-insert',
+                'description' => __('The widget area inserted between the post and the comments on a single post.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_single_insert',
+			'function'		=> 'thematic_single_insert',
+			'priority'		=> 10,
+			),
+		'Single Bottom' => array(
+			'admin_menu_order' => 1100,
+			'args' => array (
+				'name' => 'Single Bottom',
+				'id' => 'single-bottom',
+                'description' => __('The bottom widget area displayed on a single post.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_single_bottom',
+			'function'		=> 'thematic_single_bottom',
+			'priority'		=> 10,
+			),
+		'Page Top' => array(
+			'admin_menu_order' => 1200,
+			'args' => array (
+				'name' => 'Page Top',
+				'id' => 'page-top',
+                'description' => __('The top widget area displayed on a page.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_page_top',
+			'function'		=> 'thematic_page_top',
+			'priority'		=> 10,
+			),
+		'Page Bottom' => array(
+			'admin_menu_order' => 1300,
+			'args' => array (
+				'name' => 'Page Bottom',
+				'id' => 'page-bottom',
+                'description' => __('The bottom widget area displayed on a page.', 'thematic'),
+				'before_widget' => thematic_before_widget(),
+				'after_widget' => thematic_after_widget(),
+				'before_title' => thematic_before_title(),
+				'after_title' => thematic_after_title(),
+				),
+			'action_hook'	=> 'widget_area_page_bottom',
+			'function'		=> 'thematic_page_bottom',
+			'priority'		=> 10,
+			),
+		);
+	
+	$thematic_widgetized_areas = apply_filters('thematic_widgetized_areas', $thematic_widgetized_areas);
+	
+	if ( !function_exists('register_sidebars') )
+			return;
+
+	foreach ($thematic_widgetized_areas as $key => $value) {
+		register_sidebar($thematic_widgetized_areas[$key]['args']);
+		if (!has_action($thematic_widgetized_areas[$key]['action_hook'], $thematic_widgetized_areas[$key]['function'])) {
+			add_action($thematic_widgetized_areas[$key]['action_hook'], $thematic_widgetized_areas[$key]['function'], $thematic_widgetized_areas[$key]['priority']);	
+		}
+	}
+	  
+    // we will check for a Thematic widgets directory and and add and activate additional widgets
+    // Thanks to Joern Kretzschmar
+	  $widgets_dir = @ dir(ABSPATH . '/wp-content/themes/' . get_template() . '/widgets');
+	  if ($widgets_dir)	{
+		  while(($widgetFile = $widgets_dir->read()) !== false) {
+			 if (!preg_match('|^\.+$|', $widgetFile) && preg_match('|\.php$|', $widgetFile))
+				  include(ABSPATH . '/wp-content/themes/' . get_template() . '/widgets/' . $widgetFile);
+		  }
+	  }
+
+	  // we will check for the child themes widgets directory and add and activate additional widgets
+    // Thanks to Joern Kretzschmar 
+	  $widgets_dir = @ dir(ABSPATH . '/wp-content/themes/' . get_stylesheet() . '/widgets');
+	  if ((TEMPLATENAME != THEMENAME) && ($widgets_dir)) {
+		  while(($widgetFile = $widgets_dir->read()) !== false) {
+			 if (!preg_match('|^\.+$|', $widgetFile) && preg_match('|\.php$|', $widgetFile))
+				  include(ABSPATH . '/wp-content/themes/' . get_stylesheet() . '/widgets/' . $widgetFile);
+		  }
+	  }   
+
+	// Remove WP default Widgets
+	// WP 2.8 function using $widget_class
+	if (function_exists('unregister_widget')) {
+		unregister_widget('WP_Widget_Meta');
+		unregister_widget('WP_Widget_Search');
+        unregister_widget('');
+	
+	// pre WP 2.8 function using $id
+	} else {
+		unregister_widget_control('meta');
+		unregister_widget_control('search');	
+	}
+
+	// Finished intializing Widgets plugin, now let's load the thematic default widgets
+	register_sidebar_widget(__('Search', 'thematic'), 'widget_thematic_search', null, 'search');
+	unregister_widget_control('search');
+	register_sidebar_widget(__('Meta', 'thematic'), 'widget_thematic_meta', null, 'meta');
+	unregister_widget_control('meta');
+	register_sidebar_widget(array(__('RSS Links', 'thematic'), 'widgets'), 'widget_thematic_rsslinks');
+	register_widget_control(array(__('RSS Links', 'thematic'), 'widgets'), 'widget_thematic_rsslinks_control', 300, 90);
+
+	// Pre-set Widgets
+	$preset_widgets = array (
+		'primary-aside'  => array( 'search', 'pages', 'categories', 'archives' ),
+		'secondary-aside'  => array( 'links', 'rss-links', 'meta' )
+		);
+
+    if ( isset( $_GET['activated'] ) ) {
+  		update_option( 'sidebars_widgets', apply_filters('thematic_preset_widgets',$preset_widgets ));
+  	}
+
+}
+
+// Runs our code at the end to check that everything needed has loaded
+add_action( 'widgets_init', 'thematic_widgets_init' );
+
+// We sort our array of widgetized areas to get a nice list display under wp-admin
+function thematic_sort_widgetized_areas($content) {
+	asort($content);
+	return $content;
+}
+add_filter('thematic_widgetized_areas', 'thematic_sort_widgetized_areas', 100);
+
+// We start our functions for the widgetized areas here
+
+// Define the Primary Aside 
+function thematic_primary_aside() {
+	if (is_sidebar_active('primary-aside')) {
+		echo thematic_before_widget_area('primary-aside');
+		dynamic_sidebar('primary-aside');
+		echo thematic_after_widget_area('primary-aside');
+	}
+}
+
+// Define the Secondary Aside
+function thematic_secondary_aside() {
+	if (is_sidebar_active('secondary-aside')) {
+		echo thematic_before_widget_area('secondary-aside');
+		dynamic_sidebar('secondary-aside');
+		echo thematic_after_widget_area('secondary-aside');
+	}
+}
+
+// Define the 1st Subsidiary Aside
+function thematic_1st_subsidiary_aside() {
+	if (is_sidebar_active('1st-subsidiary-aside')) {
+		echo thematic_before_widget_area('1st-subsidiary-aside');
+		dynamic_sidebar('1st-subsidiary-aside');
+		echo thematic_after_widget_area('1st-subsidiary-aside');
+	}
+}
+
+// Define the 2nd Subsidiary Aside
+function thematic_2nd_subsidiary_aside() {
+	if (is_sidebar_active('2nd-subsidiary-aside')) {
+		echo thematic_before_widget_area('2nd-subsidiary-aside');
+		dynamic_sidebar('2nd-subsidiary-aside');
+		echo thematic_after_widget_area('2nd-subsidiary-aside');
+	}
+}
+
+// Define the 3rd Subsidiary Aside
+function thematic_3rd_subsidiary_aside() {
+	if (is_sidebar_active('3rd-subsidiary-aside')) {
+		echo thematic_before_widget_area('3rd-subsidiary-aside');
+		dynamic_sidebar('3rd-subsidiary-aside');
+		echo thematic_after_widget_area('3rd-subsidiary-aside');
+	}
+}
+
+// Define the Index Top
+function thematic_index_top() {
+	if (is_sidebar_active('index-top')) {
+		echo thematic_before_widget_area('index-top');
+		dynamic_sidebar('index-top');
+		echo thematic_after_widget_area('index-top');
+	}
+}
+
+// Define the Index Insert
+function thematic_index_insert() {
+	if (is_sidebar_active('index-insert')) {
+		echo thematic_before_widget_area('index-insert');
+		dynamic_sidebar('index-insert');
+		echo thematic_after_widget_area('index-insert');
+	}
+}
+
+// Define the Index Bottom
+function thematic_index_bottom() {
+	if (is_sidebar_active('index-bottom')) {
+		echo thematic_before_widget_area('index-bottom');
+		dynamic_sidebar('index-bottom');
+		echo thematic_after_widget_area('index-bottom');
+	}
+}
+
+// Define the Single Top
+function thematic_single_top() {
+	if (is_sidebar_active('single-top')) {
+		echo thematic_before_widget_area('single-top');
+		dynamic_sidebar('single-top');
+		echo thematic_after_widget_area('single-top');
+	}
+}
+
+// Define the Single Insert
+function thematic_single_insert() {
+	if (is_sidebar_active('single-insert')) {
+		echo thematic_before_widget_area('single-insert');
+		dynamic_sidebar('single-insert');
+		echo thematic_after_widget_area('single-insert');
+	}
+}
+
+// Define the Single Bottom
+function thematic_single_bottom() {
+	if (is_sidebar_active('single-bottom')) {
+		echo thematic_before_widget_area('single-bottom');
+		dynamic_sidebar('single-bottom');
+		echo thematic_after_widget_area('single-bottom');
+	}
+}
+
+// Define the Page Top
+function thematic_page_top() {
+	if (is_sidebar_active('page-top')) {
+		echo thematic_before_widget_area('page-top');
+		dynamic_sidebar('page-top');
+		echo thematic_after_widget_area('page-top');
+	}
+}
+
+// Define the Page Bottom
+function thematic_page_bottom() {
+	if (is_sidebar_active('page-bottom')) {
+		echo thematic_before_widget_area('page-bottom');
+		dynamic_sidebar('page-bottom');
+		echo thematic_after_widget_area('page-bottom');
+	}
+}
+
+// this function returns the opening CSS markup for the widget area 
+function thematic_before_widget_area($hook) {
+	$content =  "\n";
+	if ($hook == 'primary-aside') {
+		$content .= '<div id="primary" class="aside main-aside">' . "\n";
+	} elseif ($hook == 'secondary-aside') {
+		$content .= '<div id="secondary" class="aside main-aside">' . "\n";
+	} elseif ($hook == '1st-subsidiary-aside') {
+		$content .= '<div id="first" class="aside sub-aside">' . "\n";
+	} elseif ($hook == '2nd-subsidiary-aside') {
+		$content .= '<div id="second" class="aside sub-aside">' . "\n";
+	} elseif ($hook == '3rd-subsidiary-aside') {
+		$content .= '<div id="third" class="aside sub-aside">' . "\n";
+	} else {
+		$content .= '<div id="' . $hook . '" class="aside">' ."\n";
+	}
+	$content .= "\t" . '<ul class="xoxo">' . "\n";
+	return apply_filters('thematic_before_widget_area', $content);
+}
+
+// this function returns the clossing CSS markup for the widget area
+function thematic_after_widget_area($hook) {
+	$content = "\n" . "\t" . '</ul>' ."\n";
+	if ($hook == 'primary-aside') {
+		$content .= '</div><!-- #primary .aside -->' ."\n";
+	} elseif ($hook == 'secondary-aside') {
+		$content .= '</div><!-- #secondary .aside -->' ."\n";
+	} elseif ($hook == '1st-subsidiary-aside') {
+		$content .= '</div><!-- #first .aside -->' ."\n";
+	} elseif ($hook == '2nd-subsidiary-aside') {
+		$content .= '</div><!-- #second .aside -->' ."\n";
+	} elseif ($hook == '3rd-subsidiary-aside') {
+		$content .= '</div><!-- #third .aside -->' ."\n";
+	} else {
+		$content .= '</div><!-- #' . $hook . ' .aside -->' ."\n";
+	} 
+	return apply_filters('thematic_after_widget_area', $content);
+}
+
+?>
\ No newline at end of file