Genesis Title Toggle - Version 1.2.1

Version Description

  • Typo in 1.2 caused the plugin to crash. I'm so sorry!
Download this release

Release Info

Developer billerickson
Plugin Icon 128x128 Genesis Title Toggle
Version 1.2.1
Comparing to
See all releases

Version 1.2.1

genesis-title-toggle.php ADDED
@@ -0,0 +1,212 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: Genesis Title Toggle
4
+ Plugin URI: http://www.billerickson.net/
5
+ Description: Turn on/off page titles on a per page basis, and set sitewide defaults from Theme Settings. Must be using the Genesis theme.
6
+ Version: 1.2.1
7
+ Author: Bill Erickson
8
+ Author URI: http://www.billerickson.net
9
+ License: GPLv2
10
+ */
11
+
12
+ class BE_Title_Toggle {
13
+ var $instance;
14
+
15
+ function __construct() {
16
+ $this->instance =& $this;
17
+ register_activation_hook( __FILE__, array( $this, 'activation_hook' ) );
18
+ add_action( 'init', array( $this, 'init' ) );
19
+ }
20
+
21
+ function init() {
22
+ // Translations
23
+ load_plugin_textdomain( 'genesis-title-toggle', false, basename( dirname( __FILE__ ) ) . '/languages' );
24
+
25
+ // Metabox on Theme Settings, for Sitewide Default
26
+ add_filter( 'genesis_theme_settings_defaults', array( $this, 'setting_defaults' ) );
27
+ add_action( 'genesis_settings_sanitizer_init', array( $this, 'sanitization' ) );
28
+ add_action( 'genesis_theme_settings_metaboxes', array( $this, 'register_metabox' ) );
29
+
30
+ // Metabox on Edit screen, for Page Override
31
+ add_filter( 'cmb_meta_boxes', array( $this, 'create_metaboxes' ) );
32
+ add_action( 'init', array( $this, 'initialize_cmb_meta_boxes' ), 50 );
33
+
34
+ // Removes Page Title
35
+ add_action( 'genesis_before', array( $this, 'title_toggle' ) );
36
+ }
37
+
38
+ /**
39
+ * Activation Hook - Confirm site is using Genesis
40
+ *
41
+ */
42
+ function activation_hook() {
43
+ if ( 'genesis' != basename( TEMPLATEPATH ) ) {
44
+ deactivate_plugins( plugin_basename( __FILE__ ) );
45
+ wp_die( sprintf( __( 'Sorry, you can&rsquo;t activate unless you have installed <a href="%s">Genesis</a>', 'genesis-title-toggle'), 'http://www.billerickson.net/get-genesis' ) );
46
+ }
47
+ }
48
+
49
+ /**
50
+ * Sitewide Setting - Register Defaults
51
+ * @link http://www.billerickson.net/genesis-theme-options/
52
+ *
53
+ * @param array $defaults
54
+ * @return array modified defaults
55
+ *
56
+ */
57
+ function setting_defaults( $defaults ) {
58
+ $post_types = apply_filters( 'be_title_toggle_post_types', array( 'page' ) );
59
+ foreach ( $post_types as $post_type )
60
+ $defaults[] = array( 'be_title_toggle_' . $post_type => '' );
61
+ return $defaults;
62
+ }
63
+
64
+ /**
65
+ * Sitewide Setting - Sanitization
66
+ * @link http://www.billerickson.net/genesis-theme-options/
67
+ *
68
+ */
69
+ function sanitization() {
70
+ $fields = array();
71
+ $post_types = apply_filters( 'be_title_toggle_post_types', array( 'page' ) );
72
+ foreach ( $post_types as $post_type )
73
+ $fields[] = 'be_title_toggle_' . $post_type;
74
+
75
+ genesis_add_option_filter( 'one_zero', GENESIS_SETTINGS_FIELD, $fields );
76
+ }
77
+
78
+ /**
79
+ * Sitewide Setting - Register Metabox
80
+ * @link http://www.billerickson.net/genesis-theme-options/
81
+ *
82
+ * @param string, Genesis theme settings page hook
83
+ */
84
+
85
+ function register_metabox( $_genesis_theme_settings_pagehook ) {
86
+ add_meta_box('be-title-toggle', __( 'Title Toggle', 'genesis-title-toggle' ), array( $this, 'create_sitewide_metabox' ), $_genesis_theme_settings_pagehook, 'main', 'high');
87
+ }
88
+
89
+ /**
90
+ * Sitewide Setting - Create Metabox
91
+ * @link http://www.billerickson.net/genesis-theme-options/
92
+ *
93
+ */
94
+ function create_sitewide_metabox() {
95
+ $post_types = apply_filters( 'be_title_toggle_post_types', array( 'page' ) );
96
+ foreach ( $post_types as $post_type )
97
+ echo '<p><input type="checkbox" name="' . GENESIS_SETTINGS_FIELD . '[be_title_toggle_' . $post_type . ']" id="' . GENESIS_SETTINGS_FIELD . '[be_title_toggle_' . $post_type . ']" value="1" ' . checked( 1, genesis_get_option( 'be_title_toggle_' . $post_type ), false ) .' /> <label for="' . GENESIS_SETTINGS_FIELD . '[be_title_toggle_' . $post_type . ']"> ' . sprintf( __( 'By default, remove titles in the <strong>%s</strong> post type.', 'genesis-title-toggle' ), $post_type ) .'</label></p>';
98
+
99
+
100
+ }
101
+
102
+ /**
103
+ * Create Page Specific Metaboxes
104
+ * @link http://www.billerickson.net/wordpress-metaboxes/
105
+ *
106
+ * @param array $meta_boxes, current metaboxes
107
+ * @return array $meta_boxes, current + new metaboxes
108
+ *
109
+ */
110
+ function create_metaboxes( $meta_boxes ) {
111
+
112
+ // Make sure we're still in Genesis, plugins like WP Touch need this check
113
+ if ( 'genesis' != basename( TEMPLATEPATH ) )
114
+ return;
115
+
116
+
117
+ // Get all post types used by plugin and split them up into show and hide.
118
+ // Sitewide default checked = hide by default, so metabox should let you override that and show the title
119
+ // Sitewide default empty = display by default, so metabox should let you override that and hide the title
120
+
121
+ $show = array();
122
+ $hide = array();
123
+ $post_types = apply_filters( 'be_title_toggle_post_types', array( 'page' ) );
124
+ foreach ( $post_types as $post_type ) {
125
+ $default = genesis_get_option( 'be_title_toggle_' . $post_type );
126
+ if ( !empty( $default ) ) $show[] = $post_type;
127
+ else $hide[] = $post_type;
128
+ }
129
+
130
+
131
+ // Create the show and hide metaboxes that override the default
132
+
133
+ if ( !empty( $show ) ) {
134
+ $meta_boxes[] = array(
135
+ 'id' => 'be_title_toggle_show',
136
+ 'title' => __( 'Title Toggle', 'genesis-title-toggle' ),
137
+ 'pages' => $show,
138
+ 'context' => 'normal',
139
+ 'priority' => 'high',
140
+ 'show_names' => true,
141
+ 'fields' => array(
142
+ array(
143
+ 'name' => __( 'Show Title', 'genesis-title-toggle' ),
144
+ 'desc' => __( 'By default, this post type is set to remove titles. This checkbox lets you show this specific page&rsquo;s title', 'genesis-title-toggle' ),
145
+ 'id' => 'be_title_toggle_show',
146
+ 'type' => 'checkbox'
147
+ )
148
+ )
149
+ );
150
+ }
151
+
152
+ if ( !empty( $hide ) ) {
153
+ $meta_boxes[] = array(
154
+ 'id' => 'be_title_toggle_hide',
155
+ 'title' => __( 'Title Toggle', 'genesis-title-toggle' ),
156
+ 'pages' => $hide,
157
+ 'context' => 'normal',
158
+ 'priority' => 'high',
159
+ 'show_names' => true,
160
+ 'fields' => array(
161
+ array(
162
+ 'name' => __( 'Hide Title', 'genesis-title-toggle' ),
163
+ 'desc' => __( 'By default, this post type is set to display titles. This checkbox lets you hide this specific page&rsquo;s title', 'genesis-title-toggle' ),
164
+ 'id' => 'be_title_toggle_hide',
165
+ 'type' => 'checkbox'
166
+ )
167
+ )
168
+ );
169
+ }
170
+
171
+ return $meta_boxes;
172
+ }
173
+
174
+ function initialize_cmb_meta_boxes() {
175
+ $post_types = apply_filters( 'be_title_toggle_post_types', array( 'page' ) );
176
+ if ( !class_exists('cmb_Meta_Box') && !empty( $post_types ) ) {
177
+ require_once( dirname( __FILE__) . '/lib/metabox/init.php' );
178
+ }
179
+ }
180
+
181
+ function title_toggle() {
182
+ // Make sure we're on the single page
183
+ if ( !is_singular() )
184
+ return;
185
+
186
+ global $post;
187
+ $post_type = get_post_type( $post );
188
+
189
+ // See if post type has pages turned off by default
190
+ $default = genesis_get_option( 'be_title_toggle_' . $post_type );
191
+
192
+ // If titles are turned off by default, let's check for an override before removing
193
+ if ( !empty( $default ) ) {
194
+ $override = get_post_meta( $post->ID, 'be_title_toggle_show', true );
195
+
196
+ // If override is empty, get rid of that title
197
+ if (empty( $override ) )
198
+ remove_action( 'genesis_post_title', 'genesis_do_post_title' );
199
+
200
+ // If titles are turned on by default, let's see if this specific one is turned off
201
+ } else {
202
+ $override = get_post_meta( $post->ID, 'be_title_toggle_hide', true );
203
+
204
+ // If override has a value, the title's gotta go
205
+ if ( !empty( $override ) )
206
+ remove_action( 'genesis_post_title', 'genesis_do_post_title' );
207
+ }
208
+ }
209
+ }
210
+
211
+ new BE_Title_Toggle;
212
+ ?>
languages/genesis-title-toggle-de_DE.mo ADDED
Binary file
languages/genesis-title-toggle-de_DE.po ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Genesis Title Toggle\n"
4
+ "Report-Msgid-Bugs-To: http://wordpress.org/tags/genesis-title-toggle\n"
5
+ "POT-Creation-Date: 2011-09-01 13:09+0100\n"
6
+ "PO-Revision-Date: 2011-09-01 23:11+0100\n"
7
+ "Last-Translator: David Decker <deckerweb.mobil@googlemail.com>\n"
8
+ "Language-Team: DECKERWEB <deckerweb.mobil@googlemail.com>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
+ "X-Poedit-Language: German\n"
14
+ "X-Poedit-Country: GERMANY\n"
15
+ "X-Poedit-SourceCharset: utf-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
17
+ "X-Poedit-Basepath: ../\n"
18
+ "X-Textdomain-Support: yes\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+
21
+ #@ genesis-title-toggle
22
+ #: genesis-title-toggle.php:86
23
+ #: genesis-title-toggle.php:131
24
+ #: genesis-title-toggle.php:150
25
+ msgid "Title Toggle"
26
+ msgstr "Seitentitelanzeige"
27
+
28
+ #@ genesis-title-toggle
29
+ #: genesis-title-toggle.php:138
30
+ msgid "Show Title"
31
+ msgstr "Seitentitel anzeigen"
32
+
33
+ #@ genesis-title-toggle
34
+ #: genesis-title-toggle.php:157
35
+ msgid "Hide Title"
36
+ msgstr "Seitentitel verbergen"
37
+
38
+ #@ genesis-title-toggle
39
+ #: genesis-title-toggle.php:45
40
+ #, php-format
41
+ msgid "Sorry, you can&rsquo;t activate unless you have installed <a href=\"%s\">Genesis</a>"
42
+ msgstr "Hinweis: Sie k&ouml;nnen dieses Plugin <em>nicht</em> aktivieren, solange das <a href=\"%s\">Genesis Framework</a> nicht installiert ist."
43
+
44
+ #@ genesis-title-toggle
45
+ #: genesis-title-toggle.php:97
46
+ #, php-format
47
+ msgid "By default, remove titles in the <strong>%s</strong> post type."
48
+ msgstr "Standardm&auml;&szlig;ig werden die Titel f&uuml;r den Inhaltstyp (Post Type) <strong>%s</strong> entfernt."
49
+
50
+ #@ genesis-title-toggle
51
+ #: genesis-title-toggle.php:139
52
+ msgid "By default, this post type is set to remove titles. This checkbox lets you show this specific page&rsquo;s title"
53
+ msgstr "Standardm&auml;&szlig;ig ist dieser Inhaltstyp (Post Type) so eingestellt, dass die Seitentitel entfernt werden. Mit dem Setzen dieser Einstellung, wird der Titel f&uuml;r diese Seite dennoch angezeigt."
54
+
55
+ #@ genesis-title-toggle
56
+ #: genesis-title-toggle.php:158
57
+ msgid "By default, this post type is set to display titles. This checkbox lets you hide this specific page&rsquo;s title"
58
+ msgstr "Standardm&auml;&szlig;ig ist dieser Inhaltstyp (Post Type) so eingestellt, dass die Seitentitel angezeigt werden. Mit dem Setzen dieser Einstellung, wird der Titel f&uuml;r diese Seite dennoch entfernt."
59
+
languages/genesis-title-toggle.po ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Genesis Title Toggle\n"
4
+ "Report-Msgid-Bugs-To: http://wordpress.org/tags/genesis-title-toggle\n"
5
+ "POT-Creation-Date: 2011-09-01 13:09+0100\n"
6
+ "PO-Revision-Date: \n"
7
+ "Last-Translator: \n"
8
+ "Language-Team: \n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
+ "X-Poedit-Language: \n"
14
+ "X-Poedit-Country: \n"
15
+ "X-Poedit-SourceCharset: utf-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
17
+ "X-Poedit-Basepath: ../\n"
18
+ "X-Textdomain-Support: yes\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+
21
+ #@ genesis-title-toggle
22
+ #: genesis-title-toggle.php:86
23
+ #: genesis-title-toggle.php:131
24
+ #: genesis-title-toggle.php:150
25
+ msgid "Title Toggle"
26
+ msgstr ""
27
+
28
+ #@ genesis-title-toggle
29
+ #: genesis-title-toggle.php:138
30
+ msgid "Show Title"
31
+ msgstr ""
32
+
33
+ #@ genesis-title-toggle
34
+ #: genesis-title-toggle.php:157
35
+ msgid "Hide Title"
36
+ msgstr ""
37
+
38
+ #@ genesis-title-toggle
39
+ #: genesis-title-toggle.php:45
40
+ #, php-format
41
+ msgid "Sorry, you can&rsquo;t activate unless you have installed <a href=\"%s\">Genesis</a>"
42
+ msgstr ""
43
+
44
+ #@ genesis-title-toggle
45
+ #: genesis-title-toggle.php:97
46
+ #, php-format
47
+ msgid "By default, remove titles in the <strong>%s</strong> post type."
48
+ msgstr ""
49
+
50
+ #@ genesis-title-toggle
51
+ #: genesis-title-toggle.php:139
52
+ msgid "By default, this post type is set to remove titles. This checkbox lets you show this specific page&rsquo;s title"
53
+ msgstr ""
54
+
55
+ #@ genesis-title-toggle
56
+ #: genesis-title-toggle.php:158
57
+ msgid "By default, this post type is set to display titles. This checkbox lets you hide this specific page&rsquo;s title"
58
+ msgstr ""
lib/metabox/README.txt ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Custom Metaboxes and Fields ===
2
+ Contributors: Andrew Norcross (@norcross / andrewnorcross.com)
3
+ Jared Atchison (@jaredatch / jaredatchison.com)
4
+ Bill Erickson (@billerickson / billerickson.net)
5
+ Version: 0.6
6
+ Requires at least: 3.0
7
+ Tested up to: 3.2
8
+
9
+ == Description ==
10
+
11
+ This will create metaboxes with custom fields that will blow your mind.
12
+
13
+ == Installation ==
14
+
15
+ This script is easy to install. If you can't figure it out you probably shouldn't be using it.
16
+
17
+ 1. Place metabox directory inside of your (activated) theme. E.g. inside /themes/twentyten/lib/metabox/.
18
+ 2. Include init.php.
19
+ 3. See example-functions.php for further guidance.
20
+ 4. Profit.
21
+
22
+ == Frequently Asked Questions ==
23
+
24
+ Coming soon.
25
+
26
+ == TODO ==
27
+ * Add media upload to WYSIWYG option
28
+ * Security & best practices audit
29
+ * File handling improvement and fixes
30
+
31
+ == Changelog ==
32
+
33
+ = 0.6 =
34
+ * Added the ability to limit metaboxes to certain posts by id. props @billerickson
35
+
36
+ = 0.5 =
37
+ * Fixed define to prevent notices. props @destos
38
+ * Added text_date_timestap option. props @andrewyno
39
+ * Fixed WYSIWYG paragraph breaking/spacing bug. props @wpsmith
40
+ * Added taxonomy_radio and taxonomies_select options. props @c3mdigital
41
+ * Fixed script causing the dashboard widgets to not be collapsible.
42
+ * Fixed various spacing and whitespace inconsistencies
43
+
44
+ = 0.4 =
45
+ * Think we have a release that is mostly working. We'll say the initial release :)
lib/metabox/example-functions.php ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // Include & setup custom metabox and fields
3
+ $prefix = '_cmb_'; // start with an underscore to hide fields from custom fields list
4
+ add_filter( 'cmb_meta_boxes', 'be_sample_metaboxes' );
5
+ function be_sample_metaboxes( $meta_boxes ) {
6
+ $meta_boxes[] = array(
7
+ 'id' => 'test_metabox',
8
+ 'title' => 'Test Metabox',
9
+ 'pages' => array('page'), // post type
10
+ 'context' => 'normal',
11
+ 'priority' => 'high',
12
+ 'show_names' => true, // Show field names on the left
13
+ 'fields' => array(
14
+ array(
15
+ 'name' => 'Test Text',
16
+ 'desc' => 'field description (optional)',
17
+ 'id' => $prefix . 'test_text',
18
+ 'type' => 'text'
19
+ ),
20
+ array(
21
+ 'name' => 'Test Text Small',
22
+ 'desc' => 'field description (optional)',
23
+ 'id' => $prefix . 'test_textsmall',
24
+ 'type' => 'text_small'
25
+ ),
26
+ array(
27
+ 'name' => 'Test Text Medium',
28
+ 'desc' => 'field description (optional)',
29
+ 'id' => $prefix . 'test_textmedium',
30
+ 'type' => 'text_medium'
31
+ ),
32
+ array(
33
+ 'name' => 'Test Date Picker',
34
+ 'desc' => 'field description (optional)',
35
+ 'id' => $prefix . 'test_textdate',
36
+ 'type' => 'text_date'
37
+ ),
38
+ array(
39
+ 'name' => 'Test Money',
40
+ 'desc' => 'field description (optional)',
41
+ 'id' => $prefix . 'test_textmoney',
42
+ 'type' => 'text_money'
43
+ ),
44
+ array(
45
+ 'name' => 'Test Text Area',
46
+ 'desc' => 'field description (optional)',
47
+ 'id' => $prefix . 'test_textarea',
48
+ 'type' => 'textarea'
49
+ ),
50
+ array(
51
+ 'name' => 'Test Text Area Small',
52
+ 'desc' => 'field description (optional)',
53
+ 'id' => $prefix . 'test_textareasmall',
54
+ 'type' => 'textarea_small'
55
+ ),
56
+ array(
57
+ 'name' => 'Test Title Weeeee',
58
+ 'desc' => 'This is a title description',
59
+ 'type' => 'title'
60
+ ),
61
+ array(
62
+ 'name' => 'Test Select',
63
+ 'desc' => 'field description (optional)',
64
+ 'id' => $prefix . 'test_select',
65
+ 'type' => 'select',
66
+ 'options' => array(
67
+ array('name' => 'Option One', 'value' => 'standard'),
68
+ array('name' => 'Option Two', 'value' => 'custom'),
69
+ array('name' => 'Option Three', 'value' => 'none')
70
+ )
71
+ ),
72
+ array(
73
+ 'name' => 'Test Radio inline',
74
+ 'desc' => 'field description (optional)',
75
+ 'id' => $prefix . 'test_radio',
76
+ 'type' => 'radio_inline',
77
+ 'options' => array(
78
+ array('name' => 'Option One', 'value' => 'standard'),
79
+ array('name' => 'Option Two', 'value' => 'custom'),
80
+ array('name' => 'Option Three', 'value' => 'none')
81
+ )
82
+ ),
83
+ array(
84
+ 'name' => 'Test Radio',
85
+ 'desc' => 'field description (optional)',
86
+ 'id' => $prefix . 'test_radio',
87
+ 'type' => 'radio',
88
+ 'options' => array(
89
+ array('name' => 'Option One', 'value' => 'standard'),
90
+ array('name' => 'Option Two', 'value' => 'custom'),
91
+ array('name' => 'Option Three', 'value' => 'none')
92
+ )
93
+ ),
94
+ array(
95
+ 'name' => 'Test Taxonomy Radio',
96
+ 'desc' => 'Description Goes Here',
97
+ 'id' => $prefix . 'text_taxonomy_radio',
98
+ 'taxonomy' => '', //Enter Taxonomy Slug
99
+ 'type' => 'taxonomy_radio',
100
+ ),
101
+ array(
102
+ 'name' => 'Test Taxonomy Select',
103
+ 'desc' => 'Description Goes Here',
104
+ 'id' => $prefix . 'text_taxonomy_select',
105
+ 'taxonomy' => '', //Enter Taxonomy Slug
106
+ 'type' => 'taxonomy_select',
107
+ ),
108
+ array(
109
+ 'name' => 'Test Checkbox',
110
+ 'desc' => 'field description (optional)',
111
+ 'id' => $prefix . 'test_checkbox',
112
+ 'type' => 'checkbox'
113
+ ),
114
+ array(
115
+ 'name' => 'Test Multi Checkbox',
116
+ 'desc' => 'field description (optional)',
117
+ 'id' => $prefix . 'test_multicheckbox',
118
+ 'type' => 'multicheck',
119
+ 'options' => array(
120
+ 'check1' => 'Check One',
121
+ 'check2' => 'Check Two',
122
+ 'check3' => 'Check Three',
123
+ )
124
+ ),
125
+ array(
126
+ 'name' => 'Test wysiwyg',
127
+ 'desc' => 'field description (optional)',
128
+ 'id' => $prefix . 'test_wysiwyg',
129
+ 'type' => 'wysiwyg'
130
+ ),
131
+ array(
132
+ 'name' => 'Test Image',
133
+ 'desc' => 'Upload an image or enter an URL.',
134
+ 'id' => $prefix . 'test_image',
135
+ 'type' => 'file'
136
+ ),
137
+ )
138
+ );
139
+
140
+ $meta_boxes[] = array(
141
+ 'id' => 'about_page_metabox',
142
+ 'title' => 'About Page Metabox',
143
+ 'pages' => array('page'), // post type
144
+ 'show_on' => array( 'key' => 'id', 'value' => array( 2 ) ), // specific post ids to display this metabox
145
+ 'context' => 'normal',
146
+ 'priority' => 'high',
147
+ 'show_names' => true, // Show field names on the left
148
+ 'fields' => array(
149
+ array(
150
+ 'name' => 'Test Text',
151
+ 'desc' => 'field description (optional)',
152
+ 'id' => $prefix . 'test_text',
153
+ 'type' => 'text'
154
+ ),
155
+ )
156
+ );
157
+ return $meta_boxes;
158
+ }
159
+
160
+
161
+ // Initialize the metabox class
162
+ add_action('init','be_initialize_cmb_meta_boxes',9999);
163
+ function be_initialize_cmb_meta_boxes() {
164
+ if (!class_exists('cmb_Meta_Box')) {
165
+ require_once('init.php');
166
+ }
167
+ }
lib/metabox/images/ico-delete.png ADDED
Binary file
lib/metabox/images/ui-bg_flat_0_aaaaaa_40x100.png ADDED
Binary file
lib/metabox/images/ui-bg_flat_75_ffffff_40x100.png ADDED
Binary file
lib/metabox/images/ui-bg_glass_55_fbf9ee_1x400.png ADDED
Binary file
lib/metabox/images/ui-bg_glass_65_ffffff_1x400.png ADDED
Binary file
lib/metabox/images/ui-bg_glass_75_dadada_1x400.png ADDED
Binary file
lib/metabox/images/ui-bg_glass_75_e6e6e6_1x400.png ADDED
Binary file
lib/metabox/images/ui-bg_glass_95_fef1ec_1x400.png ADDED
Binary file
lib/metabox/images/ui-bg_highlight-soft_75_cccccc_1x100.png ADDED
Binary file
lib/metabox/images/ui-icons_222222_256x240.png ADDED
Binary file
lib/metabox/images/ui-icons_2e83ff_256x240.png ADDED
Binary file
lib/metabox/images/ui-icons_454545_256x240.png ADDED
Binary file
lib/metabox/images/ui-icons_888888_256x240.png ADDED
Binary file
lib/metabox/images/ui-icons_cd0a0a_256x240.png ADDED
Binary file
lib/metabox/init.php ADDED
@@ -0,0 +1,462 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Script Name: Custom Metaboxes and Fields
4
+ Contributors: Andrew Norcross (@norcross / andrewnorcross.com)
5
+ Jared Atchison (@jaredatch / jaredatchison.com)
6
+ Bill Erickson (@billerickson / billerickson.net)
7
+ Description: This will create metaboxes with custom fields that will blow your mind.
8
+ Version: 0.6
9
+ */
10
+
11
+ /**
12
+ * Released under the GPL license
13
+ * http://www.opensource.org/licenses/gpl-license.php
14
+ *
15
+ * This is an add-on for WordPress
16
+ * http://wordpress.org/
17
+ *
18
+ * **********************************************************************
19
+ * This program is free software; you can redistribute it and/or modify
20
+ * it under the terms of the GNU General Public License as published by
21
+ * the Free Software Foundation; either version 2 of the License, or
22
+ * (at your option) any later version.
23
+ *
24
+ * This program is distributed in the hope that it will be useful,
25
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
26
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27
+ * GNU General Public License for more details.
28
+ * **********************************************************************
29
+ */
30
+
31
+ /************************************************************************
32
+ You should not edit the code below or things might explode!
33
+ *************************************************************************/
34
+
35
+ $meta_boxes = array();
36
+ $meta_boxes = apply_filters ( 'cmb_meta_boxes' , $meta_boxes );
37
+ foreach ( $meta_boxes as $meta_box ) {
38
+ $my_box = new cmb_Meta_Box( $meta_box );
39
+ }
40
+
41
+ /**
42
+ * Validate value of meta fields
43
+ * Define ALL validation methods inside this class and use the names of these
44
+ * methods in the definition of meta boxes (key 'validate_func' of each field)
45
+ */
46
+
47
+ class cmb_Meta_Box_Validate {
48
+ function check_text( $text ) {
49
+ if ($text != 'hello') {
50
+ return false;
51
+ }
52
+ return true;
53
+ }
54
+ }
55
+
56
+ /*
57
+ * url to load local resources.
58
+ */
59
+
60
+ define( 'CMB_META_BOX_URL', trailingslashit( str_replace( WP_CONTENT_DIR, WP_CONTENT_URL, dirname(__FILE__) ) ) );
61
+
62
+ /**
63
+ * Create meta boxes
64
+ */
65
+
66
+ class cmb_Meta_Box {
67
+ protected $_meta_box;
68
+
69
+ function __construct( $meta_box ) {
70
+ if ( !is_admin() ) return;
71
+
72
+ $this->_meta_box = $meta_box;
73
+
74
+ $upload = false;
75
+ foreach ( $meta_box['fields'] as $field ) {
76
+ if ( $field['type'] == 'file' || $field['type'] == 'file_list' ) {
77
+ $upload = true;
78
+ break;
79
+ }
80
+ }
81
+
82
+ $current_page = substr(strrchr($_SERVER['PHP_SELF'], '/'), 1, -4);
83
+
84
+ if ( $upload && ( $current_page == 'page' || $current_page == 'page-new' || $current_page == 'post' || $current_page == 'post-new' ) ) {
85
+ add_action( 'admin_head', array(&$this, 'add_post_enctype') );
86
+ }
87
+
88
+ add_action( 'admin_menu', array(&$this, 'add') );
89
+ add_action( 'save_post', array(&$this, 'save') );
90
+ }
91
+
92
+ function add_post_enctype() {
93
+ echo '
94
+ <script type="text/javascript">
95
+ jQuery(document).ready(function(){
96
+ jQuery("#post").attr("enctype", "multipart/form-data");
97
+ jQuery("#post").attr("encoding", "multipart/form-data");
98
+ });
99
+ </script>';
100
+ }
101
+
102
+ // Add metaboxes
103
+ function add() {
104
+ $this->_meta_box['context'] = empty($this->_meta_box['context']) ? 'normal' : $this->_meta_box['context'];
105
+ $this->_meta_box['priority'] = empty($this->_meta_box['priority']) ? 'high' : $this->_meta_box['priority'];
106
+ foreach ( $this->_meta_box['pages'] as $page ) {
107
+ if( !isset( $this->_meta_box['show_on'] ) ) {
108
+ add_meta_box( $this->_meta_box['id'], $this->_meta_box['title'], array(&$this, 'show'), $page, $this->_meta_box['context'], $this->_meta_box['priority']) ;
109
+ } else {
110
+ if ( 'id' == $this->_meta_box['show_on']['key'] ) {
111
+
112
+ // If we're showing it based on ID, get the current ID
113
+ if( isset( $_GET['post'] ) ) $post_id = $_GET['post'];
114
+ elseif( isset( $_POST['post_ID'] ) ) $post_id = $_POST['post_ID'];
115
+
116
+ // If current page id is in the included array, display the metabox
117
+ if ( isset( $post_id) && in_array( $post_id, $this->_meta_box['show_on']['value'] ) )
118
+ add_meta_box( $this->_meta_box['id'], $this->_meta_box['title'], array(&$this, 'show'), $page, $this->_meta_box['context'], $this->_meta_box['priority']) ;
119
+ }
120
+ }
121
+ }
122
+ }
123
+
124
+ // Show fields
125
+ function show() {
126
+ global $post;
127
+
128
+ // Use nonce for verification
129
+ echo '<input type="hidden" name="wp_meta_box_nonce" value="', wp_create_nonce( basename(__FILE__) ), '" />';
130
+ echo '<table class="form-table cmb_metabox">';
131
+
132
+ foreach ( $this->_meta_box['fields'] as $field ) {
133
+ // Set up blank values for empty ones
134
+ if ( !isset($field['desc']) ) $field['desc'] = '';
135
+ if ( !isset($field['std']) ) $field['std'] = '';
136
+
137
+ $meta = get_post_meta( $post->ID, $field['id'], 'multicheck' != $field['type'] /* If multicheck this can be multiple values */ );
138
+
139
+ echo '<tr>';
140
+
141
+ if ( $field['type'] == "title" ) {
142
+ echo '<td colspan="2">';
143
+ } else {
144
+ if( $this->_meta_box['show_names'] == true ) {
145
+ echo '<th style="width:18%"><label for="', $field['id'], '">', $field['name'], '</label></th>';
146
+ }
147
+ echo '<td>';
148
+ }
149
+
150
+ switch ( $field['type'] ) {
151
+
152
+ case 'text':
153
+ echo '<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" style="width:97%" />','<p class="cmb_metabox_description">', $field['desc'], '</p>';
154
+ break;
155
+ case 'text_small':
156
+ echo '<input class="cmb_text_small" type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" /><span class="cmb_metabox_description">', $field['desc'], '</span>';
157
+ break;
158
+ case 'text_medium':
159
+ echo '<input class="cmb_text_medium" type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" /><span class="cmb_metabox_description">', $field['desc'], '</span>';
160
+ break;
161
+ case 'text_date':
162
+ echo '<input class="cmb_text_small cmb_datepicker" type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" /><span class="cmb_metabox_description">', $field['desc'], '</span>';
163
+ break;
164
+ case 'text_date_timestamp':
165
+ echo '<input class="cmb_text_small cmb_datepicker" type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? date( 'm\/d\/Y', $meta ) : $field['std'], '" /><span class="cmb_metabox_description">', $field['desc'], '</span>';
166
+ break;
167
+ case 'text_money':
168
+ echo '$ <input class="cmb_text_money" type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" /><span class="cmb_metabox_description">', $field['desc'], '</span>';
169
+ break;
170
+ case 'textarea':
171
+ echo '<textarea name="', $field['id'], '" id="', $field['id'], '" cols="60" rows="10" style="width:97%">', $meta ? $meta : $field['std'], '</textarea>','<p class="cmb_metabox_description">', $field['desc'], '</p>';
172
+ break;
173
+ case 'textarea_small':
174
+ echo '<textarea name="', $field['id'], '" id="', $field['id'], '" cols="60" rows="4" style="width:97%">', $meta ? $meta : $field['std'], '</textarea>','<p class="cmb_metabox_description">', $field['desc'], '</p>';
175
+ break;
176
+ case 'select':
177
+ echo '<select name="', $field['id'], '" id="', $field['id'], '">';
178
+ foreach ($field['options'] as $option) {
179
+ echo '<option value="', $option['value'], '"', $meta == $option['value'] ? ' selected="selected"' : '', '>', $option['name'], '</option>';
180
+ }
181
+ echo '</select>';
182
+ echo '<p class="cmb_metabox_description">', $field['desc'], '</p>';
183
+ break;
184
+ case 'radio_inline':
185
+ echo '<div class="cmb_radio_inline">';
186
+ foreach ($field['options'] as $option) {
187
+ echo '<div class="cmb_radio_inline_option"><input type="radio" name="', $field['id'], '" value="', $option['value'], '"', $meta == $option['value'] ? ' checked="checked"' : '', ' />', $option['name'], '</div>';
188
+ }
189
+ echo '</div>';
190
+ echo '<p class="cmb_metabox_description">', $field['desc'], '</p>';
191
+ break;
192
+ case 'radio':
193
+ foreach ($field['options'] as $option) {
194
+ echo '<p><input type="radio" name="', $field['id'], '" value="', $option['value'], '"', $meta == $option['value'] ? ' checked="checked"' : '', ' />', $option['name'].'</p>';
195
+ }
196
+ echo '<p class="cmb_metabox_description">', $field['desc'], '</p>';
197
+ break;
198
+ case 'checkbox':
199
+ echo '<input type="checkbox" name="', $field['id'], '" id="', $field['id'], '"', $meta ? ' checked="checked"' : '', ' />';
200
+ echo '<span class="cmb_metabox_description">', $field['desc'], '</span>';
201
+ break;
202
+ case 'multicheck':
203
+ echo '<ul>';
204
+ foreach ( $field['options'] as $value => $name ) {
205
+ // Append `[]` to the name to get multiple values
206
+ // Use in_array() to check whether the current option should be checked
207
+ echo '<li><input type="checkbox" name="', $field['id'], '[]" id="', $field['id'], '" value="', $value, '"', in_array( $value, $meta ) ? ' checked="checked"' : '', ' /><label>', $name, '</label></li>';
208
+ }
209
+ echo '</ul>';
210
+ echo '<span class="cmb_metabox_description">', $field['desc'], '</span>';
211
+ break;
212
+ case 'title':
213
+ echo '<h5 class="cmb_metabox_title">', $field['name'], '</h5>';
214
+ echo '<p class="cmb_metabox_description">', $field['desc'], '</p>';
215
+ break;
216
+ case 'wysiwyg':
217
+ echo '<div id="poststuff" class="meta_mce">';
218
+ echo '<div class="customEditor"><textarea name="', $field['id'], '" id="', $field['id'], '" cols="60" rows="7" style="width:97%">', $meta ? wpautop($meta, true) : '', '</textarea></div>';
219
+ echo '</div>';
220
+ echo '<p class="cmb_metabox_description">', $field['desc'], '</p>';
221
+ break;
222
+ case 'taxonomy_select':
223
+ echo '<select name="', $field['id'], '" id="', $field['id'], '">';
224
+ $names= wp_get_object_terms( $post->ID, $field['taxonomy'] );
225
+ $terms = get_terms( $field['taxonomy'], 'hide_empty=0' );
226
+ foreach ( $terms as $term ) {
227
+ if (!is_wp_error( $names ) && !empty( $names ) && !strcmp( $term->slug, $names[0]->slug ) ) {
228
+ echo '<option value="' . $term->slug . '" selected>' . $term->name . '</option>';
229
+ } else {
230
+ echo '<option value="' . $term->slug . ' ' , $meta == $term->slug ? $meta : ' ' ,' ">' . $term->name . '</option>';
231
+ }
232
+ }
233
+ echo '</select>';
234
+ echo '<p class="cmb_metabox_description">', $field['desc'], '</p>';
235
+ break;
236
+ case 'taxonomy_radio':
237
+ $names= wp_get_object_terms( $post->ID, $field['taxonomy'] );
238
+ $terms = get_terms( $field['taxonomy'], 'hide_empty=0' );
239
+ foreach ( $terms as $term ) {
240
+ if ( !is_wp_error( $names ) && !empty( $names ) && !strcmp( $term->slug, $names[0]->slug ) ) {
241
+ echo '<p><input type="radio" name="', $field['id'], '" value="'. $term->slug . '" checked>' . $term->name . '</p>';
242
+ } else {
243
+ echo '<p><input type="radio" name="', $field['id'], '" value="' . $term->slug . ' ' , $meta == $term->slug ? $meta : ' ' ,' ">' . $term->name .'</p>';
244
+ }
245
+ }
246
+ echo '<p class="cmb_metabox_description">', $field['desc'], '</p>';
247
+ break;
248
+ case 'file_list':
249
+ echo '<input id="upload_file" type="text" size="36" name="', $field['id'], '" value="" />';
250
+ echo '<input class="upload_button button" type="button" value="Upload File" />';
251
+ echo '<p class="cmb_metabox_description">', $field['desc'], '</p>';
252
+ $args = array(
253
+ 'post_type' => 'attachment',
254
+ 'numberposts' => null,
255
+ 'post_status' => null,
256
+ 'post_parent' => $post->ID
257
+ );
258
+ $attachments = get_posts($args);
259
+ if ($attachments) {
260
+ echo '<ul class="attach_list">';
261
+ foreach ($attachments as $attachment) {
262
+ echo '<li>'.wp_get_attachment_link($attachment->ID, 'thumbnail', 0, 0, 'Download');
263
+ echo '<span>';
264
+ echo apply_filters('the_title', '&nbsp;'.$attachment->post_title);
265
+ echo '</span></li>';
266
+ }
267
+ echo '</ul>';
268
+ }
269
+ break;
270
+ case 'file':
271
+ echo '<input id="upload_file" type="text" size="45" class="', $field['id'], '" name="', $field['id'], '" value="', $meta, '" />';
272
+ echo '<input class="upload_button button" type="button" value="Upload File" />';
273
+ echo '<p class="cmb_metabox_description">', $field['desc'], '</p>';
274
+ echo '<div id="', $field['id'], '_status" class="cmb_upload_status">';
275
+ if ( $meta != '' ) {
276
+ $check_image = preg_match( '/(^.*\.jpg|jpeg|png|gif|ico*)/i', $meta );
277
+ if ( $check_image ) {
278
+ echo '<div class="img_status">';
279
+ echo '<img src="', $meta, '" alt="" />';
280
+ echo '<a href="#" class="remove_file_button" rel="', $field['id'], '">Remove Image</a>';
281
+ echo '</div>';
282
+ } else {
283
+ $parts = explode( "/", $meta );
284
+ for( $i = 0; $i < sizeof( $parts ); ++$i ) {
285
+ $title = $parts[$i];
286
+ }
287
+ echo 'File: <strong>', $title, '</strong>&nbsp;&nbsp;&nbsp; (<a href="', $meta, '" target="_blank" rel="external">Download</a> / <a href="# class="remove_file_button" rel="', $field['id'], '">Remove</a>)';
288
+ }
289
+ }
290
+ echo '</div>';
291
+ break;
292
+
293
+ }
294
+
295
+ echo '</td>','</tr>';
296
+ }
297
+ echo '</table>';
298
+ }
299
+
300
+ // Save data from metabox
301
+ function save( $post_id) {
302
+ // verify nonce
303
+ if ( ! isset( $_POST['wp_meta_box_nonce'] ) || !wp_verify_nonce( $_POST['wp_meta_box_nonce'], basename(__FILE__) ) ) {
304
+ return $post_id;
305
+ }
306
+
307
+ // check autosave
308
+ if ( defined('DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
309
+ return $post_id;
310
+ }
311
+
312
+ // check permissions
313
+ if ( 'page' == $_POST['post_type'] ) {
314
+ if ( !current_user_can( 'edit_page', $post_id ) ) {
315
+ return $post_id;
316
+ }
317
+ } elseif ( !current_user_can( 'edit_post', $post_id ) ) {
318
+ return $post_id;
319
+ }
320
+
321
+ foreach ( $this->_meta_box['fields'] as $field ) {
322
+ $name = $field['id'];
323
+ $old = get_post_meta( $post_id, $name, 'multicheck' != $field['type'] /* If multicheck this can be multiple values */ );
324
+ $new = isset( $_POST[$field['id']] ) ? $_POST[$field['id']] : null;
325
+
326
+ if ( $field['type'] == 'wysiwyg' ) {
327
+ $new = wpautop($new);
328
+ }
329
+
330
+ if ( $field['type'] == 'taxonomy_select' ) {
331
+ $new = wp_set_object_terms( $post_id, $new, $field['taxonomy'] );
332
+ }
333
+
334
+ if ( $field['type'] == 'taxonomy_radio' ) {
335
+ $new = wp_set_object_terms( $post_id, $new, $field['taxonomy'] );
336
+ }
337
+
338
+ if ( ($field['type'] == 'textarea') || ($field['type'] == 'textarea_small') ) {
339
+ $new = htmlspecialchars( $new );
340
+ }
341
+
342
+ if ( $field['type'] == 'text_date_timestamp' ) {
343
+ $new = strtotime( $new );
344
+ }
345
+
346
+ // validate meta value
347
+ if ( isset( $field['validate_func']) ) {
348
+ $ok = call_user_func( array( 'cmb_Meta_Box_Validate', $field['validate_func']), $new );
349
+ if ( $ok === false ) { // pass away when meta value is invalid
350
+ continue;
351
+ }
352
+ } elseif ( 'multicheck' == $field['type'] ) {
353
+ // Do the saving in two steps: first get everything we don't have yet
354
+ // Then get everything we should not have anymore
355
+ if ( empty( $new ) ) {
356
+ $new = array();
357
+ }
358
+ $aNewToAdd = array_diff( $new, $old );
359
+ $aOldToDelete = array_diff( $old, $new );
360
+ foreach ( $aNewToAdd as $newToAdd ) {
361
+ add_post_meta( $post_id, $name, $newToAdd, false );
362
+ }
363
+ foreach ( $aOldToDelete as $oldToDelete ) {
364
+ delete_post_meta( $post_id, $name, $oldToDelete );
365
+ }
366
+ } elseif ( $new && $new != $old ) {
367
+ update_post_meta( $post_id, $name, $new );
368
+ } elseif ( '' == $new && $old ) {
369
+ delete_post_meta( $post_id, $name, $old );
370
+ }
371
+ }
372
+ }
373
+ }
374
+
375
+ /**
376
+ * Adding scripts and styles
377
+ */
378
+
379
+ function cmb_scripts( $hook ) {
380
+ if ( $hook == 'post.php' OR $hook == 'post-new.php' OR $hook == 'page-new.php' OR $hook == 'page.php' ) {
381
+ wp_register_script( 'cmb-scripts', CMB_META_BOX_URL.'jquery.cmbScripts.js', array( 'jquery','media-upload','thickbox' ) );
382
+ wp_enqueue_script( 'jquery' );
383
+ wp_enqueue_script( 'jquery-ui-core' ); // Make sure and use elements form the 1.7.3 UI - not 1.8.9
384
+ wp_enqueue_script( 'media-upload' );
385
+ wp_enqueue_script( 'thickbox' );
386
+ wp_enqueue_script( 'cmb-scripts' );
387
+ wp_enqueue_style( 'thickbox' );
388
+ wp_enqueue_style( 'jquery-custom-ui' );
389
+ add_action( 'admin_head', 'cmb_styles_inline' );
390
+ }
391
+ }
392
+ add_action( 'admin_enqueue_scripts', 'cmb_scripts', 10, 1 );
393
+
394
+ function editor_admin_init( $hook ) {
395
+ if ( $hook == 'post.php' OR $hook == 'post-new.php' OR $hook == 'page-new.php' OR $hook == 'page.php' ) {
396
+ wp_enqueue_script( 'word-count' );
397
+ wp_enqueue_script( 'post' );
398
+ wp_enqueue_script( 'editor' );
399
+ }
400
+ }
401
+
402
+ function editor_admin_head( $hook ) {
403
+ if ( $hook == 'post.php' OR $hook == 'post-new.php' OR $hook == 'page-new.php' OR $hook == 'page.php' ) {
404
+ wp_tiny_mce();
405
+ }
406
+ }
407
+
408
+ add_action( 'admin_init', 'editor_admin_init' );
409
+ add_action( 'admin_head', 'editor_admin_head' );
410
+
411
+ function cmb_editor_footer_scripts() { ?>
412
+ <script type="text/javascript">/* <![CDATA[ */
413
+ jQuery(function($) {
414
+ var i=1;
415
+ $('.customEditor textarea').each(function(e) {
416
+ var id = $(this).attr('id');
417
+ if (!id) {
418
+ id = 'customEditor-' + i++;
419
+ $(this).attr('id',id);
420
+ }
421
+ tinyMCE.execCommand('mceAddControl', false, id);
422
+ });
423
+ });
424
+ /* ]]> */</script>
425
+ <?php }
426
+ add_action( 'admin_print_footer_scripts', 'cmb_editor_footer_scripts', 99 );
427
+
428
+ function cmb_styles_inline() {
429
+ echo '<link rel="stylesheet" type="text/css" href="' . CMB_META_BOX_URL.'style.css" />';
430
+ ?>
431
+ <style type="text/css">
432
+ table.cmb_metabox td, table.cmb_metabox th { border-bottom: 1px solid #E9E9E9; }
433
+ table.cmb_metabox th { text-align: right; font-weight:bold;}
434
+ table.cmb_metabox th label { margin-top:6px; display:block;}
435
+ p.cmb_metabox_description { color: #AAA; font-style: italic; margin: 2px 0 !important;}
436
+ span.cmb_metabox_description { color: #AAA; font-style: italic;}
437
+ input.cmb_text_small { width: 100px; margin-right: 15px;}
438
+ input.cmb_text_money { width: 90px; margin-right: 15px;}
439
+ input.cmb_text_medium { width: 230px; margin-right: 15px;}
440
+ table.cmb_metabox input, table.cmb_metabox textarea { font-size:11px; padding: 5px;}
441
+ table.cmb_metabox li { font-size:11px; }
442
+ table.cmb_metabox ul { padding-top:5px; }
443
+ table.cmb_metabox select { font-size:11px; padding: 5px 10px;}
444
+ table.cmb_metabox input:focus, table.cmb_metabox textarea:focus { background: #fffff8;}
445
+ .cmb_metabox_title { margin: 0 0 5px 0; padding: 5px 0 0 0; font: italic 24px/35px Georgia,"Times New Roman","Bitstream Charter",Times,serif;}
446
+ .cmb_radio_inline { padding: 4px 0 0 0;}
447
+ .cmb_radio_inline_option {display: inline; padding-right: 18px;}
448
+ table.cmb_metabox input[type="radio"] { margin-right:3px;}
449
+ table.cmb_metabox input[type="checkbox"] { margin-right:6px;}
450
+ table.cmb_metabox .mceLayout {border:1px solid #DFDFDF !important;}
451
+ table.cmb_metabox .mceIframeContainer {background:#FFF;}
452
+ table.cmb_metabox .meta_mce {width:97%;}
453
+ table.cmb_metabox .meta_mce textarea {width:100%;}
454
+ table.cmb_metabox .cmb_upload_status { margin: 10px 0 0 0;}
455
+ table.cmb_metabox .cmb_upload_status .img_status { position: relative; }
456
+ table.cmb_metabox .cmb_upload_status .img_status img { border:1px solid #DFDFDF; background: #FAFAFA; max-width:350px; padding: 5px; -moz-border-radius: 2px; border-radius: 2px;}
457
+ table.cmb_metabox .cmb_upload_status .img_status .remove_file_button { text-indent: -9999px; background: url(<?php echo CMB_META_BOX_URL ?>images/ico-delete.png); width: 16px; height: 16px; position: absolute; top: -5px; left: -5px;}
458
+ </style>
459
+ <?php
460
+ }
461
+
462
+ // End. That's it, folks! //
lib/metabox/jquery.cmbScripts.js ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* jQuery UI Datepicker 1.7.3
2
+ *
3
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
4
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
5
+ * and GPL (GPL-LICENSE.txt) licenses.
6
+ *
7
+ * http://docs.jquery.com/UI/Datepicker
8
+ *
9
+ * Depends:
10
+ * ui.core.js
11
+ */
12
+ (function($){$.extend($.ui,{datepicker:{version:"1.7.3"}});var PROP_NAME="datepicker";function Datepicker(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._datepickerShowing=false;this._inDialog=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass="ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],dateFormat:"mm/dd/yy",firstDay:0,isRTL:false};this._defaults={showOn:"focus",showAnim:"show",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,showMonthAfterYear:false,yearRange:"-10:+10",showOtherMonths:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"normal",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false};$.extend(this._defaults,this.regional[""]);this.dpDiv=$('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>')}$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",log:function(){if(this.debug){console.log.apply("",arguments)}},setDefaults:function(settings){extendRemove(this._defaults,settings||{});return this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase();var inline=(nodeName=="div"||nodeName=="span");if(!target.id){target.id="dp"+(++this.uuid)}var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{});if(nodeName=="input"){this._connectDatepicker(target,inst)}else{if(inline){this._inlineDatepicker(target,inst)}}},_newInst:function(target,inline){var id=target[0].id.replace(/([:\[\]\.])/g,"\\\\$1");return{id:id,input:target,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:inline,dpDiv:(!inline?this.dpDiv:$('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(target,inst){var input=$(target);inst.append=$([]);inst.trigger=$([]);if(input.hasClass(this.markerClassName)){return}var appendText=this._get(inst,"appendText");var isRTL=this._get(inst,"isRTL");if(appendText){inst.append=$('<span class="'+this._appendClass+'">'+appendText+"</span>");input[isRTL?"before":"after"](inst.append)}var showOn=this._get(inst,"showOn");if(showOn=="focus"||showOn=="both"){input.focus(this._showDatepicker)}if(showOn=="button"||showOn=="both"){var buttonText=this._get(inst,"buttonText");var buttonImage=this._get(inst,"buttonImage");inst.trigger=$(this._get(inst,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:buttonImage,alt:buttonText,title:buttonText}):$('<button type="button"></button>').addClass(this._triggerClass).html(buttonImage==""?buttonText:$("<img/>").attr({src:buttonImage,alt:buttonText,title:buttonText})));input[isRTL?"before":"after"](inst.trigger);inst.trigger.click(function(){if($.datepicker._datepickerShowing&&$.datepicker._lastInput==target){$.datepicker._hideDatepicker()}else{$.datepicker._showDatepicker(target)}return false})}input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst)},_inlineDatepicker:function(target,inst){var divSpan=$(target);if(divSpan.hasClass(this.markerClassName)){return}divSpan.addClass(this.markerClassName).append(inst.dpDiv).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst);this._setDate(inst,this._getDefaultDate(inst));this._updateDatepicker(inst);this._updateAlternate(inst)},_dialogDatepicker:function(input,dateText,onSelect,settings,pos){var inst=this._dialogInst;if(!inst){var id="dp"+(++this.uuid);this._dialogInput=$('<input type="text" id="'+id+'" size="1" style="position: absolute; top: -100px;"/>');this._dialogInput.keydown(this._doKeyDown);$("body").append(this._dialogInput);inst=this._dialogInst=this._newInst(this._dialogInput,false);inst.settings={};$.data(this._dialogInput[0],PROP_NAME,inst)}extendRemove(inst.settings,settings||{});this._dialogInput.val(dateText);this._pos=(pos?(pos.length?pos:[pos.pageX,pos.pageY]):null);if(!this._pos){var browserWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;var browserHeight=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[(browserWidth/2)-100+scrollX,(browserHeight/2)-150+scrollY]}this._dialogInput.css("left",this._pos[0]+"px").css("top",this._pos[1]+"px");inst.settings.onSelect=onSelect;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);if($.blockUI){$.blockUI(this.dpDiv)}$.data(this._dialogInput[0],PROP_NAME,inst);return this},_destroyDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();$.removeData(target,PROP_NAME);if(nodeName=="input"){inst.append.remove();inst.trigger.remove();$target.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress)}else{if(nodeName=="div"||nodeName=="span"){$target.removeClass(this.markerClassName).empty()}}},_enableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=false;inst.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().removeClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)})},_disableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=true;inst.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().addClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)});this._disabledInputs[this._disabledInputs.length]=target},_isDisabledDatepicker:function(target){if(!target){return false}for(var i=0;i<this._disabledInputs.length;i++){if(this._disabledInputs[i]==target){return true}}return false},_getInst:function(target){try{return $.data(target,PROP_NAME)}catch(err){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(target,name,value){var inst=this._getInst(target);if(arguments.length==2&&typeof name=="string"){return(name=="defaults"?$.extend({},$.datepicker._defaults):(inst?(name=="all"?$.extend({},inst.settings):this._get(inst,name)):null))}var settings=name||{};if(typeof name=="string"){settings={};settings[name]=value}if(inst){if(this._curInst==inst){this._hideDatepicker(null)}var date=this._getDateDatepicker(target);extendRemove(inst.settings,settings);this._setDateDatepicker(target,date);this._updateDatepicker(inst)}},_changeDatepicker:function(target,name,value){this._optionDatepicker(target,name,value)},_refreshDatepicker:function(target){var inst=this._getInst(target);if(inst){this._updateDatepicker(inst)}},_setDateDatepicker:function(target,date,endDate){var inst=this._getInst(target);if(inst){this._setDate(inst,date,endDate);this._updateDatepicker(inst);this._updateAlternate(inst)}},_getDateDatepicker:function(target){var inst=this._getInst(target);if(inst&&!inst.inline){this._setDateFromField(inst)}return(inst?this._getDate(inst):null)},_doKeyDown:function(event){var inst=$.datepicker._getInst(event.target);var handled=true;var isRTL=inst.dpDiv.is(".ui-datepicker-rtl");inst._keyEvent=true;if($.datepicker._datepickerShowing){switch(event.keyCode){case 9:$.datepicker._hideDatepicker(null,"");break;case 13:var sel=$("td."+$.datepicker._dayOverClass+", td."+$.datepicker._currentClass,inst.dpDiv);if(sel[0]){$.datepicker._selectDay(event.target,inst.selectedMonth,inst.selectedYear,sel[0])}else{$.datepicker._hideDatepicker(null,$.datepicker._get(inst,"duration"))}return false;break;case 27:$.datepicker._hideDatepicker(null,$.datepicker._get(inst,"duration"));break;case 33:$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths")),"M");break;case 34:$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths")),"M");break;case 35:if(event.ctrlKey||event.metaKey){$.datepicker._clearDate(event.target)}handled=event.ctrlKey||event.metaKey;break;case 36:if(event.ctrlKey||event.metaKey){$.datepicker._gotoToday(event.target)}handled=event.ctrlKey||event.metaKey;break;case 37:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,(isRTL?+1:-1),"D")}handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey){$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths")),"M")}break;case 38:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,-7,"D")}handled=event.ctrlKey||event.metaKey;break;case 39:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,(isRTL?-1:+1),"D")}handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey){$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths")),"M")}break;case 40:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,+7,"D")}handled=event.ctrlKey||event.metaKey;break;default:handled=false}}else{if(event.keyCode==36&&event.ctrlKey){$.datepicker._showDatepicker(this)}else{handled=false}}if(handled){event.preventDefault();event.stopPropagation()}},_doKeyPress:function(event){var inst=$.datepicker._getInst(event.target);if($.datepicker._get(inst,"constrainInput")){var chars=$.datepicker._possibleChars($.datepicker._get(inst,"dateFormat"));var chr=String.fromCharCode(event.charCode==undefined?event.keyCode:event.charCode);return event.ctrlKey||(chr<" "||!chars||chars.indexOf(chr)>-1)}},_showDatepicker:function(input){input=input.target||input;if(input.nodeName.toLowerCase()!="input"){input=$("input",input.parentNode)[0]}if($.datepicker._isDisabledDatepicker(input)||$.datepicker._lastInput==input){return}var inst=$.datepicker._getInst(input);var beforeShow=$.datepicker._get(inst,"beforeShow");extendRemove(inst.settings,(beforeShow?beforeShow.apply(input,[input,inst]):{}));$.datepicker._hideDatepicker(null,"");$.datepicker._lastInput=input;$.datepicker._setDateFromField(inst);if($.datepicker._inDialog){input.value=""}if(!$.datepicker._pos){$.datepicker._pos=$.datepicker._findPos(input);$.datepicker._pos[1]+=input.offsetHeight}var isFixed=false;$(input).parents().each(function(){isFixed|=$(this).css("position")=="fixed";return !isFixed});if(isFixed&&$.browser.opera){$.datepicker._pos[0]-=document.documentElement.scrollLeft;$.datepicker._pos[1]-=document.documentElement.scrollTop}var offset={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null;inst.rangeStart=null;inst.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});$.datepicker._updateDatepicker(inst);offset=$.datepicker._checkOffset(inst,offset,isFixed);inst.dpDiv.css({position:($.datepicker._inDialog&&$.blockUI?"static":(isFixed?"fixed":"absolute")),display:"none",left:offset.left+"px",top:offset.top+"px"});if(!inst.inline){var showAnim=$.datepicker._get(inst,"showAnim")||"show";var duration=$.datepicker._get(inst,"duration");var postProcess=function(){$.datepicker._datepickerShowing=true;if($.browser.msie&&parseInt($.browser.version,10)<7){$("iframe.ui-datepicker-cover").css({width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4})}};if($.effects&&$.effects[showAnim]){inst.dpDiv.show(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[showAnim](duration,postProcess)}if(duration==""){postProcess()}if(inst.input[0].type!="hidden"){inst.input[0].focus()}$.datepicker._curInst=inst}},_updateDatepicker:function(inst){var dims={width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4};var self=this;inst.dpDiv.empty().append(this._generateHTML(inst)).find("iframe.ui-datepicker-cover").css({width:dims.width,height:dims.height}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){$(this).removeClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).removeClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).removeClass("ui-datepicker-next-hover")}}).bind("mouseover",function(){if(!self._isDisabledDatepicker(inst.inline?inst.dpDiv.parent()[0]:inst.input[0])){$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");$(this).addClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).addClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).addClass("ui-datepicker-next-hover")}}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();var numMonths=this._getNumberOfMonths(inst);var cols=numMonths[1];var width=17;if(cols>1){inst.dpDiv.addClass("ui-datepicker-multi-"+cols).css("width",(width*cols)+"em")}else{inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("")}inst.dpDiv[(numMonths[0]!=1||numMonths[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");inst.dpDiv[(this._get(inst,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");if(inst.input&&inst.input[0].type!="hidden"&&inst==$.datepicker._curInst){$(inst.input[0]).focus()}},_checkOffset:function(inst,offset,isFixed){var dpWidth=inst.dpDiv.outerWidth();var dpHeight=inst.dpDiv.outerHeight();var inputWidth=inst.input?inst.input.outerWidth():0;var inputHeight=inst.input?inst.input.outerHeight():0;var viewWidth=(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)+$(document).scrollLeft();var viewHeight=(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)+$(document).scrollTop();offset.left-=(this._get(inst,"isRTL")?(dpWidth-inputWidth):0);offset.left-=(isFixed&&offset.left==inst.input.offset().left)?$(document).scrollLeft():0;offset.top-=(isFixed&&offset.top==(inst.input.offset().top+inputHeight))?$(document).scrollTop():0;offset.left-=(offset.left+dpWidth>viewWidth&&viewWidth>dpWidth)?Math.abs(offset.left+dpWidth-viewWidth):0;offset.top-=(offset.top+dpHeight>viewHeight&&viewHeight>dpHeight)?Math.abs(offset.top+dpHeight+inputHeight*2-viewHeight):0;return offset},_findPos:function(obj){while(obj&&(obj.type=="hidden"||obj.nodeType!=1)){obj=obj.nextSibling}var position=$(obj).offset();return[position.left,position.top]},_hideDatepicker:function(input,duration){var inst=this._curInst;if(!inst||(input&&inst!=$.data(input,PROP_NAME))){return}if(inst.stayOpen){this._selectDate("#"+inst.id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear))}inst.stayOpen=false;if(this._datepickerShowing){duration=(duration!=null?duration:this._get(inst,"duration"));var showAnim=this._get(inst,"showAnim");var postProcess=function(){$.datepicker._tidyDialog(inst)};if(duration!=""&&$.effects&&$.effects[showAnim]){inst.dpDiv.hide(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[(duration==""?"hide":(showAnim=="slideDown"?"slideUp":(showAnim=="fadeIn"?"fadeOut":"hide")))](duration,postProcess)}if(duration==""){this._tidyDialog(inst)}var onClose=this._get(inst,"onClose");if(onClose){onClose.apply((inst.input?inst.input[0]:null),[(inst.input?inst.input.val():""),inst])}this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if($.blockUI){$.unblockUI();$("body").append(this.dpDiv)}}this._inDialog=false}this._curInst=null},_tidyDialog:function(inst){inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(event){if(!$.datepicker._curInst){return}var $target=$(event.target);if(($target.parents("#"+$.datepicker._mainDivId).length==0)&&!$target.hasClass($.datepicker.markerClassName)&&!$target.hasClass($.datepicker._triggerClass)&&$.datepicker._datepickerShowing&&!($.datepicker._inDialog&&$.blockUI)){$.datepicker._hideDatepicker(null,"")}},_adjustDate:function(id,offset,period){var target=$(id);var inst=this._getInst(target[0]);if(this._isDisabledDatepicker(target[0])){return}this._adjustInstDate(inst,offset+(period=="M"?this._get(inst,"showCurrentAtPos"):0),period);this._updateDatepicker(inst)},_gotoToday:function(id){var target=$(id);var inst=this._getInst(target[0]);if(this._get(inst,"gotoCurrent")&&inst.currentDay){inst.selectedDay=inst.currentDay;inst.drawMonth=inst.selectedMonth=inst.currentMonth;inst.drawYear=inst.selectedYear=inst.currentYear}else{var date=new Date();inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear()}this._notifyChange(inst);this._adjustDate(target)},_selectMonthYear:function(id,select,period){var target=$(id);var inst=this._getInst(target[0]);inst._selectingMonthYear=false;inst["selected"+(period=="M"?"Month":"Year")]=inst["draw"+(period=="M"?"Month":"Year")]=parseInt(select.options[select.selectedIndex].value,10);this._notifyChange(inst);this._adjustDate(target)},_clickMonthYear:function(id){var target=$(id);var inst=this._getInst(target[0]);if(inst.input&&inst._selectingMonthYear&&!$.browser.msie){inst.input[0].focus()}inst._selectingMonthYear=!inst._selectingMonthYear},_selectDay:function(id,month,year,td){var target=$(id);if($(td).hasClass(this._unselectableClass)||this._isDisabledDatepicker(target[0])){return}var inst=this._getInst(target[0]);inst.selectedDay=inst.currentDay=$("a",td).html();inst.selectedMonth=inst.currentMonth=month;inst.selectedYear=inst.currentYear=year;if(inst.stayOpen){inst.endDay=inst.endMonth=inst.endYear=null}this._selectDate(id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear));if(inst.stayOpen){inst.rangeStart=this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay));this._updateDatepicker(inst)}},_clearDate:function(id){var target=$(id);var inst=this._getInst(target[0]);inst.stayOpen=false;inst.endDay=inst.endMonth=inst.endYear=inst.rangeStart=null;this._selectDate(target,"")},_selectDate:function(id,dateStr){var target=$(id);var inst=this._getInst(target[0]);dateStr=(dateStr!=null?dateStr:this._formatDate(inst));if(inst.input){inst.input.val(dateStr)}this._updateAlternate(inst);var onSelect=this._get(inst,"onSelect");if(onSelect){onSelect.apply((inst.input?inst.input[0]:null),[dateStr,inst])}else{if(inst.input){inst.input.trigger("change")}}if(inst.inline){this._updateDatepicker(inst)}else{if(!inst.stayOpen){this._hideDatepicker(null,this._get(inst,"duration"));this._lastInput=inst.input[0];if(typeof(inst.input[0])!="object"){inst.input[0].focus()}this._lastInput=null}}},_updateAlternate:function(inst){var altField=this._get(inst,"altField");if(altField){var altFormat=this._get(inst,"altFormat")||this._get(inst,"dateFormat");var date=this._getDate(inst);dateStr=this.formatDate(altFormat,date,this._getFormatConfig(inst));$(altField).each(function(){$(this).val(dateStr)})}},noWeekends:function(date){var day=date.getDay();return[(day>0&&day<6),""]},iso8601Week:function(date){var checkDate=new Date(date.getFullYear(),date.getMonth(),date.getDate());var firstMon=new Date(checkDate.getFullYear(),1-1,4);var firstDay=firstMon.getDay()||7;firstMon.setDate(firstMon.getDate()+1-firstDay);if(firstDay<4&&checkDate<firstMon){checkDate.setDate(checkDate.getDate()-3);return $.datepicker.iso8601Week(checkDate)}else{if(checkDate>new Date(checkDate.getFullYear(),12-1,28)){firstDay=new Date(checkDate.getFullYear()+1,1-1,4).getDay()||7;if(firstDay>4&&(checkDate.getDay()||7)<firstDay-3){return 1}}}return Math.floor(((checkDate-firstMon)/86400000)/7)+1},parseDate:function(format,value,settings){if(format==null||value==null){throw"Invalid arguments"}value=(typeof value=="object"?value.toString():value+"");if(value==""){return null}var shortYearCutoff=(settings?settings.shortYearCutoff:null)||this._defaults.shortYearCutoff;var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var year=-1;var month=-1;var day=-1;var doy=-1;var literal=false;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};var getNumber=function(match){lookAhead(match);var origSize=(match=="@"?14:(match=="y"?4:(match=="o"?3:2)));var size=origSize;var num=0;while(size>0&&iValue<value.length&&value.charAt(iValue)>="0"&&value.charAt(iValue)<="9"){num=num*10+parseInt(value.charAt(iValue++),10);size--}if(size==origSize){throw"Missing number at position "+iValue}return num};var getName=function(match,shortNames,longNames){var names=(lookAhead(match)?longNames:shortNames);var size=0;for(var j=0;j<names.length;j++){size=Math.max(size,names[j].length)}var name="";var iInit=iValue;while(size>0&&iValue<value.length){name+=value.charAt(iValue++);for(var i=0;i<names.length;i++){if(name==names[i]){return i+1}}size--}throw"Unknown name at position "+iInit};var checkLiteral=function(){if(value.charAt(iValue)!=format.charAt(iFormat)){throw"Unexpected literal at position "+iValue}iValue++};var iValue=0;for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{checkLiteral()}}else{switch(format.charAt(iFormat)){case"d":day=getNumber("d");break;case"D":getName("D",dayNamesShort,dayNames);break;case"o":doy=getNumber("o");break;case"m":month=getNumber("m");break;case"M":month=getName("M",monthNamesShort,monthNames);break;case"y":year=getNumber("y");break;case"@":var date=new Date(getNumber("@"));year=date.getFullYear();month=date.getMonth()+1;day=date.getDate();break;case"'":if(lookAhead("'")){checkLiteral()}else{literal=true}break;default:checkLiteral()}}}if(year==-1){year=new Date().getFullYear()}else{if(year<100){year+=new Date().getFullYear()-new Date().getFullYear()%100+(year<=shortYearCutoff?0:-100)}}if(doy>-1){month=1;day=doy;do{var dim=this._getDaysInMonth(year,month-1);if(day<=dim){break}month++;day-=dim}while(true)}var date=this._daylightSavingAdjust(new Date(year,month-1,day));if(date.getFullYear()!=year||date.getMonth()+1!=month||date.getDate()!=day){throw"Invalid date"}return date},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TIMESTAMP:"@",W3C:"yy-mm-dd",formatDate:function(format,date,settings){if(!date){return""}var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};var formatNumber=function(match,value,len){var num=""+value;if(lookAhead(match)){while(num.length<len){num="0"+num}}return num};var formatName=function(match,value,shortNames,longNames){return(lookAhead(match)?longNames[value]:shortNames[value])};var output="";var literal=false;if(date){for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{output+=format.charAt(iFormat)}}else{switch(format.charAt(iFormat)){case"d":output+=formatNumber("d",date.getDate(),2);break;case"D":output+=formatName("D",date.getDay(),dayNamesShort,dayNames);break;case"o":var doy=date.getDate();for(var m=date.getMonth()-1;m>=0;m--){doy+=this._getDaysInMonth(date.getFullYear(),m)}output+=formatNumber("o",doy,3);break;case"m":output+=formatNumber("m",date.getMonth()+1,2);break;case"M":output+=formatName("M",date.getMonth(),monthNamesShort,monthNames);break;case"y":output+=(lookAhead("y")?date.getFullYear():(date.getYear()%100<10?"0":"")+date.getYear()%100);break;case"@":output+=date.getTime();break;case"'":if(lookAhead("'")){output+="'"}else{literal=true}break;default:output+=format.charAt(iFormat)}}}}return output},_possibleChars:function(format){var chars="";var literal=false;for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{chars+=format.charAt(iFormat)}}else{switch(format.charAt(iFormat)){case"d":case"m":case"y":case"@":chars+="0123456789";break;case"D":case"M":return null;case"'":if(lookAhead("'")){chars+="'"}else{literal=true}break;default:chars+=format.charAt(iFormat)}}}return chars},_get:function(inst,name){return inst.settings[name]!==undefined?inst.settings[name]:this._defaults[name]},_setDateFromField:function(inst){var dateFormat=this._get(inst,"dateFormat");var dates=inst.input?inst.input.val():null;inst.endDay=inst.endMonth=inst.endYear=null;var date=defaultDate=this._getDefaultDate(inst);var settings=this._getFormatConfig(inst);try{date=this.parseDate(dateFormat,dates,settings)||defaultDate}catch(event){this.log(event);date=defaultDate}inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();inst.currentDay=(dates?date.getDate():0);inst.currentMonth=(dates?date.getMonth():0);inst.currentYear=(dates?date.getFullYear():0);this._adjustInstDate(inst)},_getDefaultDate:function(inst){var date=this._determineDate(this._get(inst,"defaultDate"),new Date());var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);return date},_determineDate:function(date,defaultDate){var offsetNumeric=function(offset){var date=new Date();date.setDate(date.getDate()+offset);return date};var offsetString=function(offset,getDaysInMonth){var date=new Date();var year=date.getFullYear();var month=date.getMonth();var day=date.getDate();var pattern=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;var matches=pattern.exec(offset);while(matches){switch(matches[2]||"d"){case"d":case"D":day+=parseInt(matches[1],10);break;case"w":case"W":day+=parseInt(matches[1],10)*7;break;case"m":case"M":month+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break;case"y":case"Y":year+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break}matches=pattern.exec(offset)}return new Date(year,month,day)};date=(date==null?defaultDate:(typeof date=="string"?offsetString(date,this._getDaysInMonth):(typeof date=="number"?(isNaN(date)?defaultDate:offsetNumeric(date)):date)));date=(date&&date.toString()=="Invalid Date"?defaultDate:date);if(date){date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0)}return this._daylightSavingAdjust(date)},_daylightSavingAdjust:function(date){if(!date){return null}date.setHours(date.getHours()>12?date.getHours()+2:0);return date},_setDate:function(inst,date,endDate){var clear=!(date);var origMonth=inst.selectedMonth;var origYear=inst.selectedYear;date=this._determineDate(date,new Date());inst.selectedDay=inst.currentDay=date.getDate();inst.drawMonth=inst.selectedMonth=inst.currentMonth=date.getMonth();inst.drawYear=inst.selectedYear=inst.currentYear=date.getFullYear();if(origMonth!=inst.selectedMonth||origYear!=inst.selectedYear){this._notifyChange(inst)}this._adjustInstDate(inst);if(inst.input){inst.input.val(clear?"":this._formatDate(inst))}},_getDate:function(inst){var startDate=(!inst.currentYear||(inst.input&&inst.input.val()=="")?null:this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return startDate},_generateHTML:function(inst){var today=new Date();today=this._daylightSavingAdjust(new Date(today.getFullYear(),today.getMonth(),today.getDate()));var isRTL=this._get(inst,"isRTL");var showButtonPanel=this._get(inst,"showButtonPanel");var hideIfNoPrevNext=this._get(inst,"hideIfNoPrevNext");var navigationAsDateFormat=this._get(inst,"navigationAsDateFormat");var numMonths=this._getNumberOfMonths(inst);var showCurrentAtPos=this._get(inst,"showCurrentAtPos");var stepMonths=this._get(inst,"stepMonths");var stepBigMonths=this._get(inst,"stepBigMonths");var isMultiMonth=(numMonths[0]!=1||numMonths[1]!=1);var currentDate=this._daylightSavingAdjust((!inst.currentDay?new Date(9999,9,9):new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");var drawMonth=inst.drawMonth-showCurrentAtPos;var drawYear=inst.drawYear;if(drawMonth<0){drawMonth+=12;drawYear--}if(maxDate){var maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),maxDate.getMonth()-numMonths[1]+1,maxDate.getDate()));maxDraw=(minDate&&maxDraw<minDate?minDate:maxDraw);while(this._daylightSavingAdjust(new Date(drawYear,drawMonth,1))>maxDraw){drawMonth--;if(drawMonth<0){drawMonth=11;drawYear--}}}inst.drawMonth=drawMonth;inst.drawYear=drawYear;var prevText=this._get(inst,"prevText");prevText=(!navigationAsDateFormat?prevText:this.formatDate(prevText,this._daylightSavingAdjust(new Date(drawYear,drawMonth-stepMonths,1)),this._getFormatConfig(inst)));var prev=(this._canAdjustMonth(inst,-1,drawYear,drawMonth)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'+inst.id+"', -"+stepMonths+", 'M');\" title=\""+prevText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"e":"w")+'">'+prevText+"</span></a>":(hideIfNoPrevNext?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+prevText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"e":"w")+'">'+prevText+"</span></a>"));var nextText=this._get(inst,"nextText");nextText=(!navigationAsDateFormat?nextText:this.formatDate(nextText,this._daylightSavingAdjust(new Date(drawYear,drawMonth+stepMonths,1)),this._getFormatConfig(inst)));var next=(this._canAdjustMonth(inst,+1,drawYear,drawMonth)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'+inst.id+"', +"+stepMonths+", 'M');\" title=\""+nextText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"w":"e")+'">'+nextText+"</span></a>":(hideIfNoPrevNext?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+nextText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"w":"e")+'">'+nextText+"</span></a>"));var currentText=this._get(inst,"currentText");var gotoDate=(this._get(inst,"gotoCurrent")&&inst.currentDay?currentDate:today);currentText=(!navigationAsDateFormat?currentText:this.formatDate(currentText,gotoDate,this._getFormatConfig(inst)));var controls=(!inst.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery.datepicker._hideDatepicker();">'+this._get(inst,"closeText")+"</button>":"");var buttonPanel=(showButtonPanel)?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(isRTL?controls:"")+(this._isInRange(inst,gotoDate)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery.datepicker._gotoToday(\'#'+inst.id+"');\">"+currentText+"</button>":"")+(isRTL?"":controls)+"</div>":"";var firstDay=parseInt(this._get(inst,"firstDay"),10);firstDay=(isNaN(firstDay)?0:firstDay);var dayNames=this._get(inst,"dayNames");var dayNamesShort=this._get(inst,"dayNamesShort");var dayNamesMin=this._get(inst,"dayNamesMin");var monthNames=this._get(inst,"monthNames");var monthNamesShort=this._get(inst,"monthNamesShort");var beforeShowDay=this._get(inst,"beforeShowDay");var showOtherMonths=this._get(inst,"showOtherMonths");var calculateWeek=this._get(inst,"calculateWeek")||this.iso8601Week;var endDate=inst.endDay?this._daylightSavingAdjust(new Date(inst.endYear,inst.endMonth,inst.endDay)):currentDate;var defaultDate=this._getDefaultDate(inst);var html="";for(var row=0;row<numMonths[0];row++){var group="";for(var col=0;col<numMonths[1];col++){var selectedDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,inst.selectedDay));var cornerClass=" ui-corner-all";var calender="";if(isMultiMonth){calender+='<div class="ui-datepicker-group ui-datepicker-group-';switch(col){case 0:calender+="first";cornerClass=" ui-corner-"+(isRTL?"right":"left");break;case numMonths[1]-1:calender+="last";cornerClass=" ui-corner-"+(isRTL?"left":"right");break;default:calender+="middle";cornerClass="";break}calender+='">'}calender+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+cornerClass+'">'+(/all|left/.test(cornerClass)&&row==0?(isRTL?next:prev):"")+(/all|right/.test(cornerClass)&&row==0?(isRTL?prev:next):"")+this._generateMonthYearHeader(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,row>0||col>0,monthNames,monthNamesShort)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var thead="";for(var dow=0;dow<7;dow++){var day=(dow+firstDay)%7;thead+="<th"+((dow+firstDay+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+dayNames[day]+'">'+dayNamesMin[day]+"</span></th>"}calender+=thead+"</tr></thead><tbody>";var daysInMonth=this._getDaysInMonth(drawYear,drawMonth);if(drawYear==inst.selectedYear&&drawMonth==inst.selectedMonth){inst.selectedDay=Math.min(inst.selectedDay,daysInMonth)}var leadDays=(this._getFirstDayOfMonth(drawYear,drawMonth)-firstDay+7)%7;var numRows=(isMultiMonth?6:Math.ceil((leadDays+daysInMonth)/7));var printDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,1-leadDays));for(var dRow=0;dRow<numRows;dRow++){calender+="<tr>";var tbody="";for(var dow=0;dow<7;dow++){var daySettings=(beforeShowDay?beforeShowDay.apply((inst.input?inst.input[0]:null),[printDate]):[true,""]);var otherMonth=(printDate.getMonth()!=drawMonth);var unselectable=otherMonth||!daySettings[0]||(minDate&&printDate<minDate)||(maxDate&&printDate>maxDate);tbody+='<td class="'+((dow+firstDay+6)%7>=5?" ui-datepicker-week-end":"")+(otherMonth?" ui-datepicker-other-month":"")+((printDate.getTime()==selectedDate.getTime()&&drawMonth==inst.selectedMonth&&inst._keyEvent)||(defaultDate.getTime()==printDate.getTime()&&defaultDate.getTime()==selectedDate.getTime())?" "+this._dayOverClass:"")+(unselectable?" "+this._unselectableClass+" ui-state-disabled":"")+(otherMonth&&!showOtherMonths?"":" "+daySettings[1]+(printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" "+this._currentClass:"")+(printDate.getTime()==today.getTime()?" ui-datepicker-today":""))+'"'+((!otherMonth||showOtherMonths)&&daySettings[2]?' title="'+daySettings[2]+'"':"")+(unselectable?"":" onclick=\"DP_jQuery.datepicker._selectDay('#"+inst.id+"',"+drawMonth+","+drawYear+', this);return false;"')+">"+(otherMonth?(showOtherMonths?printDate.getDate():"&#xa0;"):(unselectable?'<span class="ui-state-default">'+printDate.getDate()+"</span>":'<a class="ui-state-default'+(printDate.getTime()==today.getTime()?" ui-state-highlight":"")+(printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" ui-state-active":"")+'" href="#">'+printDate.getDate()+"</a>"))+"</td>";printDate.setDate(printDate.getDate()+1);printDate=this._daylightSavingAdjust(printDate)}calender+=tbody+"</tr>"}drawMonth++;if(drawMonth>11){drawMonth=0;drawYear++}calender+="</tbody></table>"+(isMultiMonth?"</div>"+((numMonths[0]>0&&col==numMonths[1]-1)?'<div class="ui-datepicker-row-break"></div>':""):"");group+=calender}html+=group}html+=buttonPanel+($.browser.msie&&parseInt($.browser.version,10)<7&&!inst.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");inst._keyEvent=false;return html},_generateMonthYearHeader:function(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,secondary,monthNames,monthNamesShort){minDate=(inst.rangeStart&&minDate&&selectedDate<minDate?selectedDate:minDate);var changeMonth=this._get(inst,"changeMonth");var changeYear=this._get(inst,"changeYear");var showMonthAfterYear=this._get(inst,"showMonthAfterYear");var html='<div class="ui-datepicker-title">';var monthHtml="";if(secondary||!changeMonth){monthHtml+='<span class="ui-datepicker-month">'+monthNames[drawMonth]+"</span> "}else{var inMinYear=(minDate&&minDate.getFullYear()==drawYear);var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);monthHtml+='<select class="ui-datepicker-month" onchange="DP_jQuery.datepicker._selectMonthYear(\'#'+inst.id+"', this, 'M');\" onclick=\"DP_jQuery.datepicker._clickMonthYear('#"+inst.id+"');\">";for(var month=0;month<12;month++){if((!inMinYear||month>=minDate.getMonth())&&(!inMaxYear||month<=maxDate.getMonth())){monthHtml+='<option value="'+month+'"'+(month==drawMonth?' selected="selected"':"")+">"+monthNamesShort[month]+"</option>"}}monthHtml+="</select>"}if(!showMonthAfterYear){html+=monthHtml+((secondary||changeMonth||changeYear)&&(!(changeMonth&&changeYear))?"&#xa0;":"")}if(secondary||!changeYear){html+='<span class="ui-datepicker-year">'+drawYear+"</span>"}else{var years=this._get(inst,"yearRange").split(":");var year=0;var endYear=0;if(years.length!=2){year=drawYear-10;endYear=drawYear+10}else{if(years[0].charAt(0)=="+"||years[0].charAt(0)=="-"){year=drawYear+parseInt(years[0],10);endYear=drawYear+parseInt(years[1],10)}else{year=parseInt(years[0],10);endYear=parseInt(years[1],10)}}year=(minDate?Math.max(year,minDate.getFullYear()):year);endYear=(maxDate?Math.min(endYear,maxDate.getFullYear()):endYear);html+='<select class="ui-datepicker-year" onchange="DP_jQuery.datepicker._selectMonthYear(\'#'+inst.id+"', this, 'Y');\" onclick=\"DP_jQuery.datepicker._clickMonthYear('#"+inst.id+"');\">";for(;year<=endYear;year++){html+='<option value="'+year+'"'+(year==drawYear?' selected="selected"':"")+">"+year+"</option>"}html+="</select>"}if(showMonthAfterYear){html+=(secondary||changeMonth||changeYear?"&#xa0;":"")+monthHtml}html+="</div>";return html},_adjustInstDate:function(inst,offset,period){var year=inst.drawYear+(period=="Y"?offset:0);var month=inst.drawMonth+(period=="M"?offset:0);var day=Math.min(inst.selectedDay,this._getDaysInMonth(year,month))+(period=="D"?offset:0);var date=this._daylightSavingAdjust(new Date(year,month,day));var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();if(period=="M"||period=="Y"){this._notifyChange(inst)}},_notifyChange:function(inst){var onChange=this._get(inst,"onChangeMonthYear");if(onChange){onChange.apply((inst.input?inst.input[0]:null),[inst.selectedYear,inst.selectedMonth+1,inst])}},_getNumberOfMonths:function(inst){var numMonths=this._get(inst,"numberOfMonths");return(numMonths==null?[1,1]:(typeof numMonths=="number"?[1,numMonths]:numMonths))},_getMinMaxDate:function(inst,minMax,checkRange){var date=this._determineDate(this._get(inst,minMax+"Date"),null);return(!checkRange||!inst.rangeStart?date:(!date||inst.rangeStart>date?inst.rangeStart:date))},_getDaysInMonth:function(year,month){return 32-new Date(year,month,32).getDate()},_getFirstDayOfMonth:function(year,month){return new Date(year,month,1).getDay()},_canAdjustMonth:function(inst,offset,curYear,curMonth){var numMonths=this._getNumberOfMonths(inst);var date=this._daylightSavingAdjust(new Date(curYear,curMonth+(offset<0?offset:numMonths[1]),1));if(offset<0){date.setDate(this._getDaysInMonth(date.getFullYear(),date.getMonth()))}return this._isInRange(inst,date)},_isInRange:function(inst,date){var newMinDate=(!inst.rangeStart?null:this._daylightSavingAdjust(new Date(inst.selectedYear,inst.selectedMonth,inst.selectedDay)));newMinDate=(newMinDate&&inst.rangeStart<newMinDate?inst.rangeStart:newMinDate);var minDate=newMinDate||this._getMinMaxDate(inst,"min");var maxDate=this._getMinMaxDate(inst,"max");return((!minDate||date>=minDate)&&(!maxDate||date<=maxDate))},_getFormatConfig:function(inst){var shortYearCutoff=this._get(inst,"shortYearCutoff");shortYearCutoff=(typeof shortYearCutoff!="string"?shortYearCutoff:new Date().getFullYear()%100+parseInt(shortYearCutoff,10));return{shortYearCutoff:shortYearCutoff,dayNamesShort:this._get(inst,"dayNamesShort"),dayNames:this._get(inst,"dayNames"),monthNamesShort:this._get(inst,"monthNamesShort"),monthNames:this._get(inst,"monthNames")}},_formatDate:function(inst,day,month,year){if(!day){inst.currentDay=inst.selectedDay;inst.currentMonth=inst.selectedMonth;inst.currentYear=inst.selectedYear}var date=(day?(typeof day=="object"?day:this._daylightSavingAdjust(new Date(year,month,day))):this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return this.formatDate(this._get(inst,"dateFormat"),date,this._getFormatConfig(inst))}});function extendRemove(target,props){$.extend(target,props);for(var name in props){if(props[name]==null||props[name]==undefined){target[name]=props[name]}}return target}function isArray(a){return(a&&(($.browser.safari&&typeof a=="object"&&a.length)||(a.constructor&&a.constructor.toString().match(/\Array\(\)/))))}$.fn.datepicker=function(options){if(!$.datepicker.initialized){$(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv);$.datepicker.initialized=true}var otherArgs=Array.prototype.slice.call(arguments,1);if(typeof options=="string"&&(options=="isDisabled"||options=="getDate")){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}if(options=="option"&&arguments.length==2&&typeof arguments[1]=="string"){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}return this.each(function(){typeof options=="string"?$.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this].concat(otherArgs)):$.datepicker._attachDatepicker(this,options)})};$.datepicker=new Datepicker();$.datepicker.initialized=false;$.datepicker.uuid=new Date().getTime();$.datepicker.version="1.7.3";window.DP_jQuery=$})(jQuery);;
13
+
14
+
15
+ /**
16
+ * Custom jQuery
17
+ */
18
+ jQuery(document).ready(function($) {
19
+
20
+ // Datepicker
21
+ $('.cmb_datepicker').each(function (){
22
+ $('#' + jQuery(this).attr('id')).datepicker();
23
+ // $('#' + jQuery(this).attr('id')).datepicker({ dateFormat: 'yy-mm-dd' });
24
+ // For more options see http://jqueryui.com/demos/datepicker/#option-dateFormat
25
+ });
26
+
27
+ var pID = jQuery('#post_ID').val();
28
+
29
+ // File and image upload handling
30
+ //-------------------------------------------------------------------------------------------//
31
+ var formfield;
32
+ var uploadStatus = true;
33
+
34
+ $('.upload_button').live('click', function() {
35
+ formfield = $(this).prev('input').attr('name');
36
+ tb_show('', 'media-upload.php?post_id=' + pID + '&type=image&cbm_setting=cbm_value&TB_iframe=true');
37
+ return false;
38
+ });
39
+
40
+ $('.remove_file_button').live('click', function() {
41
+ formfield = $(this).attr('rel');
42
+ $('input.' + formfield).val('');
43
+ $(this).parent().remove();
44
+ return false;
45
+ });
46
+
47
+ window.original_send_to_editor = window.send_to_editor;
48
+ window.send_to_editor = function(html) {
49
+ if (formfield) {
50
+
51
+ if ( $(html).html(html).find('img').length > 0 ) {
52
+ itemurl = $(html).html(html).find('img').attr('src'); // Use the URL to the size selected.
53
+ } else {
54
+ // It's not an image. Get the URL to the file instead.
55
+ var htmlBits = html.split("'"); // jQuery seems to strip out XHTML when assigning the string to an object. Use alternate method.
56
+ itemurl = htmlBits[1]; // Use the URL to the file.
57
+ var itemtitle = htmlBits[2];
58
+ itemtitle = itemtitle.replace( '>', '' );
59
+ itemtitle = itemtitle.replace( '</a>', '' );
60
+ }
61
+
62
+ var image = /(^.*\.jpg|jpeg|png|gif|ico*)/gi;
63
+ var document = /(^.*\.pdf|doc|docx|ppt|pptx|odt|psd|eps|ai*)/gi;
64
+ var audio = /(^.*\.mp3|m4a|ogg|wav*)/gi;
65
+ var video = /(^.*\.mp4|m4v|mov|wmv|avi|mpg|ogv|3gp|3g2*)/gi;
66
+
67
+ if (itemurl.match(image)) {
68
+ uploadStatus = '<div class="img_status"><img src="'+itemurl+'" alt="" /><a href="#" class="remove_file_button" rel="' + formfield + '">Remove Image</a></div>';
69
+ } else {
70
+ // No output preview if it's not an image
71
+ // Standard generic output if it's not an image.
72
+ html = '<a href="'+itemurl+'" target="_blank" rel="external">View File</a>';
73
+ uploadStatus = '<div class="no_image"><span class="file_link">'+html+'</span>&nbsp;&nbsp;&nbsp;<a href="#" class="remove_file_button" rel="' + formfield + '">Remove</a></div>';
74
+ }
75
+
76
+ $('.' + formfield).val(itemurl);
77
+ $('.' + formfield).siblings('.cmb_upload_status').slideDown().html(uploadStatus);
78
+ tb_remove();
79
+
80
+ } else {
81
+ window.original_send_to_editor(html);
82
+ }
83
+ // Clear the formfield value so the other media library popups can work as they are meant to. - 2010-11-11.
84
+ formfield = '';
85
+ }
86
+ });
lib/metabox/style.css ADDED
@@ -0,0 +1,367 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI CSS Framework
3
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
4
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
5
+ */
6
+
7
+ /* Layout helpers
8
+ ----------------------------------*/
9
+ .ui-helper-hidden { display: none; }
10
+ .ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
11
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
12
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
13
+ .ui-helper-clearfix { display: inline-block; }
14
+ /* required comment for clearfix to work in Opera \*/
15
+ * html .ui-helper-clearfix { height:1%; }
16
+ .ui-helper-clearfix { display:block; }
17
+ /* end clearfix */
18
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
19
+
20
+
21
+ /* Interaction Cues
22
+ ----------------------------------*/
23
+ .ui-state-disabled { cursor: default !important; }
24
+
25
+
26
+ /* Icons
27
+ ----------------------------------*/
28
+
29
+ /* states and images */
30
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
31
+
32
+
33
+ /* Misc visuals
34
+ ----------------------------------*/
35
+
36
+ /* Overlays */
37
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
38
+
39
+ /*
40
+ * jQuery UI CSS Framework
41
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
42
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
43
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
44
+ */
45
+
46
+
47
+ /* Component containers
48
+ ----------------------------------*/
49
+ .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
50
+ .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
51
+ .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
52
+ .ui-widget-content a { color: #222222; }
53
+ .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
54
+ .ui-widget-header a { color: #222222; }
55
+
56
+ /* Interaction states
57
+ ----------------------------------*/
58
+ .ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; outline: none; }
59
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; outline: none; }
60
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; }
61
+ .ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; outline: none; }
62
+ .ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; }
63
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; outline: none; text-decoration: none; }
64
+
65
+ /* Interaction Cues
66
+ ----------------------------------*/
67
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
68
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
69
+ .ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
70
+ .ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; }
71
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; }
72
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
73
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
74
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
75
+
76
+ /* Icons
77
+ ----------------------------------*/
78
+
79
+ /* states and images */
80
+ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
81
+ .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
82
+ .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
83
+ .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
84
+ .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
85
+ .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
86
+ .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
87
+ .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
88
+
89
+ /* positioning */
90
+ .ui-icon-carat-1-n { background-position: 0 0; }
91
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
92
+ .ui-icon-carat-1-e { background-position: -32px 0; }
93
+ .ui-icon-carat-1-se { background-position: -48px 0; }
94
+ .ui-icon-carat-1-s { background-position: -64px 0; }
95
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
96
+ .ui-icon-carat-1-w { background-position: -96px 0; }
97
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
98
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
99
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
100
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
101
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
102
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
103
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
104
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
105
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
106
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
107
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
108
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
109
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
110
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
111
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
112
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
113
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
114
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
115
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
116
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
117
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
118
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
119
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
120
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
121
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
122
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
123
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
124
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
125
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
126
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
127
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
128
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
129
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
130
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
131
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
132
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
133
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
134
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
135
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
136
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
137
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
138
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
139
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
140
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
141
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
142
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
143
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
144
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
145
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
146
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
147
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
148
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
149
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
150
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
151
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
152
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
153
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
154
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
155
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
156
+ .ui-icon-extlink { background-position: -32px -80px; }
157
+ .ui-icon-newwin { background-position: -48px -80px; }
158
+ .ui-icon-refresh { background-position: -64px -80px; }
159
+ .ui-icon-shuffle { background-position: -80px -80px; }
160
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
161
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
162
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
163
+ .ui-icon-folder-open { background-position: -16px -96px; }
164
+ .ui-icon-document { background-position: -32px -96px; }
165
+ .ui-icon-document-b { background-position: -48px -96px; }
166
+ .ui-icon-note { background-position: -64px -96px; }
167
+ .ui-icon-mail-closed { background-position: -80px -96px; }
168
+ .ui-icon-mail-open { background-position: -96px -96px; }
169
+ .ui-icon-suitcase { background-position: -112px -96px; }
170
+ .ui-icon-comment { background-position: -128px -96px; }
171
+ .ui-icon-person { background-position: -144px -96px; }
172
+ .ui-icon-print { background-position: -160px -96px; }
173
+ .ui-icon-trash { background-position: -176px -96px; }
174
+ .ui-icon-locked { background-position: -192px -96px; }
175
+ .ui-icon-unlocked { background-position: -208px -96px; }
176
+ .ui-icon-bookmark { background-position: -224px -96px; }
177
+ .ui-icon-tag { background-position: -240px -96px; }
178
+ .ui-icon-home { background-position: 0 -112px; }
179
+ .ui-icon-flag { background-position: -16px -112px; }
180
+ .ui-icon-calendar { background-position: -32px -112px; }
181
+ .ui-icon-cart { background-position: -48px -112px; }
182
+ .ui-icon-pencil { background-position: -64px -112px; }
183
+ .ui-icon-clock { background-position: -80px -112px; }
184
+ .ui-icon-disk { background-position: -96px -112px; }
185
+ .ui-icon-calculator { background-position: -112px -112px; }
186
+ .ui-icon-zoomin { background-position: -128px -112px; }
187
+ .ui-icon-zoomout { background-position: -144px -112px; }
188
+ .ui-icon-search { background-position: -160px -112px; }
189
+ .ui-icon-wrench { background-position: -176px -112px; }
190
+ .ui-icon-gear { background-position: -192px -112px; }
191
+ .ui-icon-heart { background-position: -208px -112px; }
192
+ .ui-icon-star { background-position: -224px -112px; }
193
+ .ui-icon-link { background-position: -240px -112px; }
194
+ .ui-icon-cancel { background-position: 0 -128px; }
195
+ .ui-icon-plus { background-position: -16px -128px; }
196
+ .ui-icon-plusthick { background-position: -32px -128px; }
197
+ .ui-icon-minus { background-position: -48px -128px; }
198
+ .ui-icon-minusthick { background-position: -64px -128px; }
199
+ .ui-icon-close { background-position: -80px -128px; }
200
+ .ui-icon-closethick { background-position: -96px -128px; }
201
+ .ui-icon-key { background-position: -112px -128px; }
202
+ .ui-icon-lightbulb { background-position: -128px -128px; }
203
+ .ui-icon-scissors { background-position: -144px -128px; }
204
+ .ui-icon-clipboard { background-position: -160px -128px; }
205
+ .ui-icon-copy { background-position: -176px -128px; }
206
+ .ui-icon-contact { background-position: -192px -128px; }
207
+ .ui-icon-image { background-position: -208px -128px; }
208
+ .ui-icon-video { background-position: -224px -128px; }
209
+ .ui-icon-script { background-position: -240px -128px; }
210
+ .ui-icon-alert { background-position: 0 -144px; }
211
+ .ui-icon-info { background-position: -16px -144px; }
212
+ .ui-icon-notice { background-position: -32px -144px; }
213
+ .ui-icon-help { background-position: -48px -144px; }
214
+ .ui-icon-check { background-position: -64px -144px; }
215
+ .ui-icon-bullet { background-position: -80px -144px; }
216
+ .ui-icon-radio-off { background-position: -96px -144px; }
217
+ .ui-icon-radio-on { background-position: -112px -144px; }
218
+ .ui-icon-pin-w { background-position: -128px -144px; }
219
+ .ui-icon-pin-s { background-position: -144px -144px; }
220
+ .ui-icon-play { background-position: 0 -160px; }
221
+ .ui-icon-pause { background-position: -16px -160px; }
222
+ .ui-icon-seek-next { background-position: -32px -160px; }
223
+ .ui-icon-seek-prev { background-position: -48px -160px; }
224
+ .ui-icon-seek-end { background-position: -64px -160px; }
225
+ .ui-icon-seek-first { background-position: -80px -160px; }
226
+ .ui-icon-stop { background-position: -96px -160px; }
227
+ .ui-icon-eject { background-position: -112px -160px; }
228
+ .ui-icon-volume-off { background-position: -128px -160px; }
229
+ .ui-icon-volume-on { background-position: -144px -160px; }
230
+ .ui-icon-power { background-position: 0 -176px; }
231
+ .ui-icon-signal-diag { background-position: -16px -176px; }
232
+ .ui-icon-signal { background-position: -32px -176px; }
233
+ .ui-icon-battery-0 { background-position: -48px -176px; }
234
+ .ui-icon-battery-1 { background-position: -64px -176px; }
235
+ .ui-icon-battery-2 { background-position: -80px -176px; }
236
+ .ui-icon-battery-3 { background-position: -96px -176px; }
237
+ .ui-icon-circle-plus { background-position: 0 -192px; }
238
+ .ui-icon-circle-minus { background-position: -16px -192px; }
239
+ .ui-icon-circle-close { background-position: -32px -192px; }
240
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
241
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
242
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
243
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
244
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
245
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
246
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
247
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
248
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
249
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
250
+ .ui-icon-circle-check { background-position: -208px -192px; }
251
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
252
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
253
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
254
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
255
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
256
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
257
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
258
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
259
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
260
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
261
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
262
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
263
+
264
+
265
+ /* Misc visuals
266
+ ----------------------------------*/
267
+
268
+ /* Corner radius */
269
+ .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; }
270
+ .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
271
+ .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
272
+ .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
273
+ .ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
274
+ .ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
275
+ .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
276
+ .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
277
+ .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; }
278
+
279
+ /* Overlays */
280
+ .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
281
+ .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Datepicker
282
+ ----------------------------------*/
283
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; }
284
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
285
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
286
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
287
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
288
+ .ui-datepicker .ui-datepicker-next { right:2px; }
289
+ .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
290
+ .ui-datepicker .ui-datepicker-next-hover { right:1px; }
291
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
292
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
293
+ .ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
294
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
295
+ .ui-datepicker select.ui-datepicker-month,
296
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
297
+ .ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
298
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
299
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
300
+ .ui-datepicker td { border: 0; padding: 1px; }
301
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
302
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
303
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
304
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
305
+
306
+ /* with multiple calendars */
307
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
308
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
309
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
310
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
311
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
312
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
313
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
314
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
315
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
316
+ .ui-datepicker-row-break { clear:both; width:100%; }
317
+
318
+ /* RTL support */
319
+ .ui-datepicker-rtl { direction: rtl; }
320
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
321
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
322
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
323
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
324
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
325
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
326
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
327
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
328
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
329
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
330
+
331
+ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
332
+ .ui-datepicker-cover {
333
+ display: none; /*sorry for IE5*/
334
+ display/**/: block; /*sorry for IE5*/
335
+ position: absolute; /*must have*/
336
+ z-index: -1; /*must have*/
337
+ filter: mask(); /*must have*/
338
+ top: -4px; /*must have*/
339
+ left: -4px; /*must have*/
340
+ width: 200px; /*must have*/
341
+ height: 200px; /*must have*/
342
+ }
343
+
344
+ /* Slider
345
+ ----------------------------------*/
346
+ .ui-slider { position: relative; text-align: left; }
347
+ .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
348
+ .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
349
+
350
+ .ui-slider-horizontal { height: .8em; }
351
+ .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
352
+ .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
353
+ .ui-slider-horizontal .ui-slider-range-min { left: 0; }
354
+ .ui-slider-horizontal .ui-slider-range-max { right: 0; }
355
+
356
+ .ui-slider-vertical { width: .8em; height: 100px; }
357
+ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
358
+ .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
359
+ .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
360
+ .ui-slider-vertical .ui-slider-range-max { top: 0; }
361
+
362
+ /* css for timepicker */
363
+ .ui-timepicker-div .ui-widget-header{ margin-bottom: 8px; }
364
+ .ui-timepicker-div dl{ text-align: left; }
365
+ .ui-timepicker-div dl dt{ height: 25px; }
366
+ .ui-timepicker-div dl dd{ margin: -25px 0 10px 65px; }
367
+ .ui-timepicker-div td { font-size: 90%; }
readme.txt ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Genesis Title Toggle ===
2
+ Contributors: billerickson
3
+ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=EDYM76U6BTE5L
4
+ Tags: genesis, genesiswp, title,
5
+ Requires at least: 3.0
6
+ Tested up to: 3.2.1
7
+ Stable tag: 1.2.1
8
+
9
+ Turn on/off page titles on a per page basis, and set sitewide defaults from Theme Settings. Must be using the Genesis theme.
10
+
11
+ == Description ==
12
+
13
+ This plugin lets you easily remove the page title from specific pages. Don't want "Home" at the top of your homepage? Activate, then edit the homepage and check "Hide".
14
+
15
+ You can also set sitewide defaults. If you don't want page titles on any pages, go to Genesis > Theme Settings > Title Toggle and check the appropriate box. Once a post type has the default set to remove, when editing a page you can selectively turn on that page's title.
16
+
17
+ Finally, if you're comfortable with code you can use the `be_title_toggle_post_types` filter to change the post types this applies to (it only applies to pages by default).
18
+
19
+
20
+ == Installation ==
21
+
22
+ 1. Upload the `genesis-title-toggle` folder to your `/wp-content/plugins/` directory
23
+
24
+ 2. Activate the "Genesis Title Toggle" plugin in your WordPress administration interface
25
+
26
+ 3. When editing a page, go down to the Title Toggle metabox and check "hide" to hide that page's title.
27
+
28
+ 4. (Optional) Go to Genesis > Theme Settings > Title Toggle to remove titles on all pages by default.
29
+
30
+
31
+ == Screenshots ==
32
+
33
+ 1. The metabox that shows up on the Edit screen.
34
+
35
+ 2. The metabox that shows up on Genesis > Theme Settings.
36
+
37
+ 3. If you check "hide" on Theme Settings, this metabox is displayed on the Edit screen.
38
+
39
+ == Changelog ==
40
+
41
+ = 1.2.1 =
42
+ * Typo in 1.2 caused the plugin to crash. I'm so sorry!
43
+
44
+ = 1.2 =
45
+ * Fixed an issue where if you weren't running Genesis, site breaks (ex: WP Touch changes themes when on mobile device)
46
+
47
+ = 1.1 =
48
+ * Added support for localization and a German language pack. Thanks David Decker.
49
+
50
+ = 1.0 =
51
+ * Initial release
screenshot-1.jpg ADDED
Binary file
screenshot-2.jpg ADDED
Binary file
screenshot-3.jpg ADDED
Binary file