PluginProbe
Timed Content / 2.70
Timed Content v2.70
2.99 trunk 1.0 1.1 1.2 2.0 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.10 2.11 2.12 2.15 2.2 2.3 2.3.1 2.4 2.5 2.5.1 2.50 2.51 2.52 All 67 releases
← All changes | lib/customFieldsInterface.php +452 -339 2.112.70 View file →
@@ -1,416 +1,529 @@
1 1 <?php
2 -if ( !class_exists('customFieldsInterface') ) {
2 +class customFieldsInterface
3 +{
4 + /**
5 + * @var string $handle The handle for the box containing the custom fields
6 + */
7 + var $handle = "";
8 + /**
9 + * @var string $label The label for the box containing the custom fields
10 + */
11 + var $label = "";
12 + /**
13 + * @var string $desc The description/introduction for the box containing the custom fields
14 + */
15 + var $desc = "";
16 + /**
17 + * @var string $prefix The prefix for storing custom fields in the postmeta table
18 + */
19 + var $prefix = "";
20 + /**
21 + * @var array $postTypes An array of public custom post types, plus the standard "post" and "page" - add the custom types you want to include here
22 + */
23 + var $postTypes = array();
24 + /**
25 + * @var array $customFields Defines the custom fields available
26 + */
27 + var $customFields = array();
28 + /**
29 + * @var array $jquery_ui_datetime_datepicker_i18n Array for jQuery datepicker UI localization
30 + */
31 + var $jquery_ui_datetime_datepicker_i18n;
32 + /**
33 + * @var array $jquery_ui_datetime_timepicker_i18n Array for jQuery timepicker UI localization
34 + */
35 + var $jquery_ui_datetime_timepicker_i18n;
3 36
4 - class customFieldsInterface {
5 - /**
6 - * @var string $handle The handle for the box containing the custom fields
7 - */
8 - var $handle = "";
9 - /**
10 - * @var string $label The label for the box containing the custom fields
11 - */
12 - var $label = "";
13 - /**
14 - * @var string $desc The description/introduction for the box containing the custom fields
15 - */
16 - var $desc = "";
17 - /**
18 - * @var string $prefix The prefix for storing custom fields in the postmeta table
19 - */
20 - var $prefix = "";
21 - /**
22 - * @var array $postTypes An array of public custom post types, plus the standard "post" and "page" - add the custom types you want to include here
23 - */
24 - var $postTypes = array();
25 - /**
26 - * @var array $customFields Defines the custom fields available
27 - */
28 - var $customFields = array();
29 - /**
30 - * PHP 5 Constructor
31 - */
32 - function __construct( $handle, $label, $desc, $prefix, $postTypes, $customFields ) {
33 -
34 - $this->handle = $handle;
35 - $this->label = $label;
36 - $this->desc = $desc;
37 - $this->prefix = $prefix;
38 - $this->postTypes = $postTypes ;
39 - $this->customFields = $customFields;
40 - add_action( 'admin_menu', array( &$this, 'createCustomFields' ) );
41 - add_action( 'save_post', array( &$this, 'saveCustomFields' ), 1, 2 );
42 - // Comment this line out if you want to keep default custom fields meta box
43 - add_action( 'do_meta_boxes', array( &$this, 'removeDefaultCustomFields' ), 10, 3 );
44 - }
37 + /**
38 + * Constructor
39 + */
40 + function __construct($handle, $label, $desc, $prefix, $postTypes, $customFields, $jquery_ui_datetime_datepicker_i18n, $jquery_ui_datetime_timepicker_i18n)
41 + {
42 + $this->handle = $handle;
43 + $this->label = $label;
44 + $this->desc = $desc;
45 + $this->prefix = $prefix;
46 + $this->postTypes = $postTypes;
47 + $this->customFields = $customFields;
48 + $this->jquery_ui_datetime_datepicker_i18n = $jquery_ui_datetime_datepicker_i18n;
49 + $this->jquery_ui_datetime_timepicker_i18n = $jquery_ui_datetime_timepicker_i18n;
45 50
46 - // Inspired by http://ca1.php.net/manual/en/function.timezone-identifiers-list.php#79284
47 - static function __generateTimezoneSelectOptions( $default_tz ) {
48 - $timezone_identifiers = timezone_identifiers_list();
49 - sort( $timezone_identifiers );
50 - $current_continent = "";
51 - $options_list = "";
52 51
53 - foreach ( $timezone_identifiers as $timezone_identifier ) {
54 - list( $continent, ) = explode( "/", $timezone_identifier, 2);
55 - if ( in_array( $continent, array( "Africa", "America", "Antarctica", "Arctic", "Asia", "Atlantic", "Australia", "Europe", "Indian", "Pacific" ) ) ) {
56 - list( , $city ) = explode( "/", $timezone_identifier, 2);
57 - if ( strlen( $current_continent ) === 0 ) {
58 - $options_list .= "<optgroup label=\"" . $continent . "\">"; // Start first continent optgroup
59 - }
60 - elseif ( $current_continent != $continent ) {
61 - $options_list .= "</optgroup><optgroup label=\"" . $continent . "\">"; // End old optgroup and start new continent optgroup
62 - }
63 - $options_list .= "<option" . ( ( $timezone_identifier == $default_tz ) ? " selected=\"selected\"" : "" )
64 - . " value=\"" . $timezone_identifier . "\">" . str_replace( "_", " ", $city ). "</option>"; //Timezone
65 - }
66 - $current_continent = $continent;
67 - }
68 - $options_list .= "</optgroup>"; // End last continent optgroup
52 + add_action('admin_menu', array(&$this, 'createCustomFields'));
53 + add_action('save_post', array(&$this, 'saveCustomFields'), 1, 2);
54 + // Comment this line out if you want to keep default custom fields meta box
55 + add_action('do_meta_boxes', array(&$this, 'removeDefaultCustomFields'), 10, 3);
56 + }
69 57
70 - return $options_list;
71 - }
58 + // Inspired by http://ca1.php.net/manual/en/function.timezone-identifiers-list.php#79284
59 + static function generateTimezoneSelectOptions($default_tz)
60 + {
61 + $timezone_identifiers = timezone_identifiers_list();
62 + sort( $timezone_identifiers );
63 + $current_continent = "";
64 + $options_list = "";
72 65
73 - /**
74 - * Remove the default Custom Fields meta box
75 - */
76 - function removeDefaultCustomFields( $type, $context, $post ) {
77 - foreach ( array( 'normal', 'advanced', 'side' ) as $context ) {
78 - foreach ( $this->postTypes as $postType ) {
79 - remove_meta_box( 'postcustom', $postType, $context );
66 + foreach ($timezone_identifiers as $timezone_identifier) {
67 + list($continent,) = explode('/', $timezone_identifier, 2);
68 + if (in_array($continent,array(
69 + 'Africa',
70 + 'America',
71 + 'Antarctica',
72 + 'Arctic',
73 + 'Asia',
74 + 'Atlantic',
75 + 'Australia',
76 + 'Europe',
77 + 'Indian',
78 + 'Pacific'
79 + ))) {
80 + list(, $city) = explode('/', $timezone_identifier, 2);
81 + if (strlen($current_continent) === 0) {
82 + // Start first continent optgroup
83 + $options_list .= '<optgroup label=\'' . $continent . '\'>';
84 + } elseif ($current_continent != $continent) {
85 + // End old optgroup and start new continent optgroup
86 + $options_list .= '</optgroup><optgroup label=\'' . $continent . '\'>';
80 87 }
88 + // Timezone
89 + $options_list .= '<option' .
90 + (($timezone_identifier == $default_tz ) ? ' selected=\'selected\'' : '') .
91 + ' value=\'' . $timezone_identifier . '\'>' .
92 + str_replace('_', ' ', $city) . '</option>';
81 93 }
94 + $current_continent = $continent;
82 95 }
83 - /**
84 - * Create the new Custom Fields meta box
85 - */
86 - function createCustomFields() {
87 -
88 - include("jquery-ui-datetime-i18n.php" );
89 - // Only enqueue scripts if we're dealing with 'timed-content-rule' pages
90 - foreach ( $this->postTypes as $a_postType ) {
91 - if ( ( isset( $_GET['post_type'] ) && $_GET['post_type'] == $a_postType )
92 - || ( isset( $post_type ) && $post_type == $a_postType )
93 - || ( isset( $_GET['post'] ) && get_post_type( $_GET['post'] ) == $a_postType ) ) {
96 + $options_list .= '</optgroup>'; // End last continent optgroup
94 97
95 - wp_enqueue_style( 'wp-color-picker' );
96 - wp_enqueue_script( 'wp-color-picker' );
97 - wp_enqueue_script( 'jquery-ui-spinner' );
98 + return $options_list;
99 + }
98 100
99 - wp_enqueue_style(TIMED_CONTENT_SLUG . '-jquery-ui-css', TIMED_CONTENT_JQUERY_UI_CSS);
100 - wp_enqueue_script('jquery-ui-datepicker');
101 - wp_register_style(TIMED_CONTENT_SLUG . '-jquery-ui-timepicker-css', TIMED_CONTENT_JQUERY_UI_TIMEPICKER_CSS);
102 - wp_enqueue_style(TIMED_CONTENT_SLUG . '-jquery-ui-timepicker-css');
103 - wp_register_script(TIMED_CONTENT_SLUG . '-jquery-ui-timepicker-js', TIMED_CONTENT_JQUERY_UI_TIMEPICKER_JS, array('jquery', 'jquery-ui-datepicker'), TIMED_CONTENT_VERSION);
104 - wp_enqueue_script(TIMED_CONTENT_SLUG . '-jquery-ui-timepicker-js');
105 - if (!(wp_script_is(TIMED_CONTENT_SLUG . '-jquery-ui-datetime-i18n-js', 'registered'))) {
106 - wp_register_script(TIMED_CONTENT_SLUG . '-jquery-ui-datetime-i18n-js', TIMED_CONTENT_PLUGIN_URL . "/js/content-protector-datetime-i18n.js", array('jquery', 'jquery-ui-datepicker', TIMED_CONTENT_SLUG . '-jquery-ui-timepicker-js'), TIMED_CONTENT_VERSION);
107 - wp_enqueue_script(TIMED_CONTENT_SLUG . '-jquery-ui-datetime-i18n-js');
108 - wp_localize_script(TIMED_CONTENT_SLUG . '-jquery-ui-datetime-i18n-js', 'TimedContentJQDatepickerI18n', $jquery_ui_datetime_datepicker_i18n);
109 - wp_localize_script(TIMED_CONTENT_SLUG . '-jquery-ui-datetime-i18n-js', 'TimedContentJQTimepickerI18n', $jquery_ui_datetime_timepicker_i18n);
110 - }
101 + /**
102 + * Remove the default Custom Fields meta box
103 + */
104 + function removeDefaultCustomFields($type, $context, $post)
105 + {
106 + foreach (array( 'normal', 'advanced', 'side' ) as $context) {
107 + foreach ($this->postTypes as $postType) {
108 + remove_meta_box( 'postcustom', $postType, $context );
109 + }
110 + }
111 + }
111 112
112 - if ( function_exists( 'add_meta_box' ) )
113 - add_meta_box( $this->handle, $this->label, array( &$this, 'displayCustomFields' ), $a_postType, 'normal', 'high' );
113 + /**
114 + * Create the new Custom Fields meta box
115 + */
116 + function createCustomFields() {
117 + // Only enqueue scripts if we're dealing with 'timed-content-rule' pages
118 + foreach ( $this->postTypes as $a_postType ) {
119 + if ( ( isset( $_GET['post_type'] ) && $_GET['post_type'] == $a_postType )
120 + || ( isset( $post_type ) && $post_type == $a_postType )
121 + || ( isset( $_GET['post'] ) && get_post_type( $_GET['post'] ) == $a_postType ) ) {
122 +
123 + wp_enqueue_style( 'wp-color-picker' );
124 + wp_enqueue_script( 'wp-color-picker' );
125 + wp_enqueue_script( 'jquery-ui-spinner' );
126 +
127 + wp_enqueue_style( TIMED_CONTENT_SLUG . '-jquery-ui-css', TIMED_CONTENT_JQUERY_UI_CSS );
128 + wp_enqueue_script( 'jquery-ui-datepicker' );
129 + wp_register_style( TIMED_CONTENT_SLUG . '-jquery-ui-timepicker-css',
130 + TIMED_CONTENT_JQUERY_UI_TIMEPICKER_CSS );
131 + wp_enqueue_style( TIMED_CONTENT_SLUG . '-jquery-ui-timepicker-css' );
132 + wp_register_script( TIMED_CONTENT_SLUG . '-jquery-ui-timepicker-js',
133 + TIMED_CONTENT_JQUERY_UI_TIMEPICKER_JS, array( 'jquery', 'jquery-ui-datepicker' ),
134 + TIMED_CONTENT_VERSION );
135 + wp_enqueue_script( TIMED_CONTENT_SLUG . '-jquery-ui-timepicker-js' );
136 + if ( ! ( wp_script_is( TIMED_CONTENT_SLUG . '-jquery-ui-datetime-i18n-js', 'registered' ) ) ) {
137 + wp_register_script( TIMED_CONTENT_SLUG . '-jquery-ui-datetime-i18n-js',
138 + TIMED_CONTENT_PLUGIN_URL . "/js/timed-content-datetime-i18n.js",
139 + array( 'jquery', 'jquery-ui-datepicker', TIMED_CONTENT_SLUG . '-jquery-ui-timepicker-js' ),
140 + TIMED_CONTENT_VERSION );
141 + wp_enqueue_script( TIMED_CONTENT_SLUG . '-jquery-ui-datetime-i18n-js' );
142 + wp_localize_script( TIMED_CONTENT_SLUG . '-jquery-ui-datetime-i18n-js',
143 + 'TimedContentJQDatepickerI18n', $this->jquery_ui_datetime_datepicker_i18n );
144 + wp_localize_script( TIMED_CONTENT_SLUG . '-jquery-ui-datetime-i18n-js',
145 + 'TimedContentJQTimepickerI18n', $this->jquery_ui_datetime_timepicker_i18n );
114 146 }
147 +
148 + if ( function_exists( 'add_meta_box' ) ) {
149 + add_meta_box( $this->handle, $this->label, array( &$this, 'displayCustomFields' ), $a_postType,
150 + 'normal', 'high' );
151 + }
115 152 }
116 153 }
117 - /**
118 - * Display the new Custom Fields meta box
119 - */
120 - function displayCustomFields() {
121 - global $post;
122 - ?>
123 - <p><?php echo $this->desc; ?></p>
124 - <div class="form-wrap">
125 - <?php
126 - wp_nonce_field( $this->handle, $this->handle . '_wpnonce', false, true );
127 - foreach ( $this->customFields as $customField ) {
128 - // Check scope
129 - $scope = $customField[ 'scope' ];
130 - $output = false;
131 - foreach ( $scope as $scopeItem ) {
132 - switch ( $scopeItem ) {
133 - default: {
134 - if ( $post->post_type == $scopeItem )
154 + }
155 +
156 + /**
157 + * Display the new Custom Fields meta box
158 + */
159 + function displayCustomFields() {
160 + global $post;
161 + ?>
162 + <p><?php echo $this->desc; ?></p>
163 + <div class="form-wrap">
164 + <?php
165 + wp_nonce_field( $this->handle, $this->handle . '_wpnonce', false, true );
166 + foreach ( $this->customFields as $customField ) {
167 + // Check scope
168 + $scope = $customField['scope'];
169 + $output = false;
170 + foreach ( $scope as $scopeItem ) {
171 + switch ( $scopeItem ) {
172 + default:
173 + {
174 + if ( $post->post_type == $scopeItem ) {
135 175 $output = true;
176 + }
136 177 break;
137 178 }
138 - }
139 - if ( $output ) break;
140 179 }
141 - // Check capability
142 - if ( !current_user_can( $customField['capability'], $post->ID ) )
143 - $output = false;
144 - // Output if allowed
145 - if ( $output ) { ?>
146 - <div class="form-field form-required" id="<?php echo $this->prefix . $customField[ 'name' ]; ?>_div" style="display: <?php echo $customField[ 'display' ]; ?>">
147 - <?php
148 - switch ( $customField[ 'type' ] ) {
149 - case "radio": {
180 + if ( $output ) {
181 + break;
182 + }
183 + }
184 + // Check capability
185 + if ( ! current_user_can( $customField['capability'], $post->ID ) ) {
186 + $output = false;
187 + }
188 + // Output if allowed
189 + if ( $output ) { ?>
190 + <div class="form-field form-required"
191 + id="<?php echo $this->prefix . $customField['name']; ?>_div"
192 + style="display: <?php echo $customField['display']; ?>">
193 + <?php
194 + switch ( $customField['type'] ) {
195 + case "radio":
196 + {
150 197 // radio
151 - $checked_value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
152 - echo "<strong>" . $customField[ 'title' ] . "</strong><br />\n";
198 + $checked_value = ( "" === get_post_meta( $post->ID,
199 + $this->prefix . $customField['name'],
200 + true ) ? $customField['default'] : get_post_meta( $post->ID,
201 + $this->prefix . $customField['name'], true ) );
202 + echo "<strong>" . $customField['title'] . "</strong><br />\n";
153 203 foreach ( $customField['values'] as $value => $label ) {
154 - echo "<input type=\"radio\" name=\"" . $this->prefix . $customField[ 'name' ] . "\" id=\"" . $this->prefix . $customField[ 'name' ] . "_" . $value . "\" value=\"" . $value . "\"";
155 - if ( $checked_value == $value )
204 + echo "<input type=\"radio\" name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "_" . $value . "\" value=\"" . $value . "\"";
205 + if ( $checked_value == $value ) {
156 206 echo " checked=\"checked\"";
157 - echo " style=\"width: 30px;\" /><label for=\"" . $this->prefix . $customField[ 'name' ] . "_" . $value . "\" style=\"display: inline;\">" . $label . "</label><br />\n";
207 + }
208 + echo " /><label for=\"" . $this->prefix . $customField['name'] . "_" . $value . "\" style=\"display: inline;\">" . $label . "</label><br />\n";
158 209 }
159 - break;
160 210 }
161 - case "menu": {
211 + break;
212 + case "menu":
213 + {
162 214 // menu
163 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\" style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></label><br />\n";
164 - if ( sizeof ( $customField['values'] ) == 0 )
215 + echo "<label for=\"" . $this->prefix . $customField['name'] . "\" style=\"display:inline;\"><strong>" . $customField['title'] . "</strong></label><br />\n";
216 + if ( sizeof( $customField['values'] ) == 0 ) {
165 217 echo "<em>" . __( "This menu is empty.", "timed-content" ) . "</em>\n";
166 - else {
167 - $selected_value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
168 - echo "<select name=\"" . $this->prefix . $customField['name'] . "[]\" id=\"" . $this->prefix . $customField['name'] . "\" style=\"width: auto; height: auto; padding: 3px;\" size=\"" . $customField['size'] . "\" multiple=\"multiple\">\n";
218 + } else {
219 + $selected_value = ( "" === get_post_meta( $post->ID,
220 + $this->prefix . $customField['name'],
221 + true ) ? $customField['default'] : get_post_meta( $post->ID,
222 + $this->prefix . $customField['name'], true ) );
223 + echo "<select name=\"" . $this->prefix . $customField['name'] . "[]\" id=\"" . $this->prefix . $customField['name'] . "\" style=\"width: auto; height: auto; padding: 3px;\" size=\"" . $customField['size'] . "\" multiple=\"multiple\">\n";
169 224 foreach ( $customField['values'] as $value => $label ) {
170 225 echo "\t<option value=\"" . $value . "\"";
171 - if ( $selected_value == $value )
226 + if ( $selected_value == $value ) {
172 227 echo " selected=\"selected\"";
228 + }
173 229 echo ">" . $label . "</option>\n";
174 230 }
175 231 echo "</select>\n";
176 232 }
177 - break;
178 233 }
179 - case "list": {
234 + break;
235 + case "list":
236 + {
180 237 // list
181 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\" style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></label>&nbsp;&nbsp;\n";
182 - if ( sizeof ( $customField['values'] ) == 0 )
238 + echo "<label for=\"" . $this->prefix . $customField['name'] . "\" style=\"display:inline;\"><strong>" . $customField['title'] . "</strong></label><br />\n";
239 + if ( sizeof( $customField['values'] ) == 0 ) {
183 240 echo "<em>" . __( "This menu is empty.", "timed-content" ) . "</em>\n";
184 - else {
185 - $selected_value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
241 + } else {
242 + $selected_value = ( "" === get_post_meta( $post->ID,
243 + $this->prefix . $customField['name'],
244 + true ) ? $customField['default'] : get_post_meta( $post->ID,
245 + $this->prefix . $customField['name'], true ) );
186 246 echo "<select name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "\" style=\"width: auto;\">\n";
187 247 foreach ( $customField['values'] as $value => $label ) {
188 248 echo "\t<option value=\"" . $value . "\"";
189 - if ( $selected_value == $value )
249 + if ( $selected_value == $value ) {
190 250 echo " selected=\"selected\"";
251 + }
191 252 echo ">" . $label . "</option>\n";
192 253 }
193 254 echo "</select>\n";
194 255 }
195 - break;
196 256 }
197 - case "timezone-list": {
257 + break;
258 + case "timezone-list":
259 + {
198 260 // timezone list
199 - $selected_value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
261 + $selected_value = ( "" === get_post_meta( $post->ID,
262 + $this->prefix . $customField['name'],
263 + true ) ? $customField['default'] : get_post_meta( $post->ID,
264 + $this->prefix . $customField['name'], true ) );
200 265
201 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\" style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></label>&nbsp;&nbsp;\n";
266 + echo "<label for=\"" . $this->prefix . $customField['name'] . "\" style=\"display:inline;\"><strong>" . $customField['title'] . "</strong></label><br />\n";
202 267 echo "<select name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "\" style=\"width: auto;\">\n";
203 - echo customFieldsInterface::__generateTimezoneSelectOptions( $selected_value );
268 + echo customFieldsInterface::generateTimezoneSelectOptions( $selected_value );
204 269 echo "</select>\n";
205 - break;
206 270 }
207 - case "checkbox": {
271 + break;
272 + case "checkbox":
273 + {
208 274 // Checkbox
209 - $checked_value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
275 + $checked_value = ( "" === get_post_meta( $post->ID,
276 + $this->prefix . $customField['name'],
277 + true ) ? $customField['default'] : get_post_meta( $post->ID,
278 + $this->prefix . $customField['name'], true ) );
210 279
211 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\" style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></label>&nbsp;&nbsp;\n";
280 + echo "<label for=\"" . $this->prefix . $customField['name'] . "\" style=\"display:inline;\"><strong>" . $customField['title'] . "</strong><br />\n";
212 281 echo "<input type=\"checkbox\" name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "\" value=\"yes\"";
213 - if ( $checked_value == "yes" )
282 + if ( $checked_value == "yes" ) {
214 283 echo " checked=\"checked\"";
215 - echo " style=\"width: 30px;\" />\n";
216 - break;
284 + }
285 + echo " />".__('Yes', 'timed-content')."</label>\n";
217 286 }
218 - case "checkbox-list": {
287 + break;
288 + case "checkbox-list":
289 + {
219 290 // Checkbox list
220 - $checked_value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
291 + $checked_value = ( "" === get_post_meta( $post->ID,
292 + $this->prefix . $customField['name'],
293 + true ) ? $customField['default'] : get_post_meta( $post->ID,
294 + $this->prefix . $customField['name'], true ) );
221 295
222 - echo "<strong>" . $customField[ 'title' ] . "</strong><br />\n";
223 - if ( sizeof ( $customField['values'] ) == 0 )
296 + echo "<strong>" . $customField['title'] . "</strong><br />\n";
297 + if ( sizeof( $customField['values'] ) == 0 ) {
224 298 echo "<em>" . __( "This menu is empty.", "timed-content" ) . "</em>\n";
225 - else {
299 + } else {
226 300 foreach ( $customField['values'] as $value => $label ) {
227 301 echo "<input type=\"checkbox\" name=\"" . $this->prefix . $customField['name'] . "[]\" id=\"" . $this->prefix . $customField['name'] . "_" . $value . "\" value=\"" . $value . "\"";
228 - if ( ( is_array( $checked_value ) ) && ( in_array( $value, $checked_value ) ) )
302 + if ( ( is_array( $checked_value ) ) && ( in_array( $value,
303 + $checked_value ) ) ) {
229 304 echo " checked=\"checked\"";
230 - echo " style=\"width: 30px;\" /><label for=\"" . $this->prefix . $customField['name'] . "_" . $value . "\" style=\"display: inline;\" >" . $label . "</label><br />\n";
305 + }
306 + echo " /><label for=\"" . $this->prefix . $customField['name'] . "_" . $value . "\" style=\"display: inline;\" >" . $label . "</label><br />\n";
231 307 }
232 308 }
233 - break;
234 309 }
235 - case "textarea":
236 - case "wysiwyg": {
237 - // Text area
238 - $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
239 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] ."\"><strong>" . $customField[ 'title' ] . "</strong></label>\n";
240 - echo "<textarea name=\"" . $this->prefix . $customField[ 'name' ] . "\" id=\"" . $this->prefix . $customField[ 'name' ] . "\" columns=\"30\" rows=\"3\">" . htmlspecialchars( $value ) . "</textarea>\n";
241 - // WYSIWYG
242 - if ( $customField[ 'type' ] == "wysiwyg" ) { ?>
243 -<script type="text/javascript">
244 -//<![CDATA[
245 - jQuery( document ).ready( function() {
246 - jQuery( "<?php echo $this->prefix . $customField[ 'name' ]; ?>" ).addClass( "mceEditor" );
247 - if ( typeof( tinyMCE ) == "object" && typeof( tinyMCE.execCommand ) == "function" ) {
248 - tinyMCE.execCommand( "mceAddControl", false, "<?php echo $this->prefix . $customField[ 'name' ]; ?>" );
249 - }
250 - });
251 -//]]>
252 -</script>
253 - <?php }
254 - break;
255 - }
256 - case "color-picker": {
257 - $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
258 - // Color picker using WP's built-in Iris jQuery plugin ?>
259 -<script type="text/javascript">
260 -//<![CDATA[
261 - jQuery(document).ready(function() {
262 - var <?php echo $this->prefix . $customField[ 'name' ]; ?>Options = {
263 - defaultColor: false,
264 - hide: true,
265 - palettes: true
266 - };
267 -
268 - jQuery("#<?php echo $this->prefix . $customField[ 'name' ]; ?>").wpColorPicker(<?php echo $this->prefix . $customField[ 'name' ]; ?>Options);
269 - });
270 -//]]>
271 -</script>
272 - <?php
273 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\"><strong>" . $customField[ 'title' ] . "</strong></label>&nbsp;&nbsp;\n";
274 - echo "<input type=\"text\" name=\"" . $this->prefix . $customField[ 'name' ] . "\" id=\"" . $this->prefix . $customField[ 'name' ] . "\" value=\"" . $value . "\" size=\"7\" maxlength=\"7\" style=\"width: 100px;\" />\n";
275 - break;
276 - }
277 - case "date": {
278 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\" style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></label>&nbsp;&nbsp;\n";
279 -// echo "<span style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></span>&nbsp;&nbsp;\n";
280 - $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
281 - // Date picker using WP's built-in Datepicker jQuery plugin ?>
282 -<script type="text/javascript">
283 -//<![CDATA[
284 - jQuery(document).ready(function() {
285 - jQuery( "#<?php echo $this->prefix . $customField[ 'name' ]; ?>" ).datepicker(
286 - {
287 - <?php if( isset( $customField[ 'custom_functions' ] ) ) echo $customField[ 'custom_functions' ]; ?>
288 - changeMonth: true,
289 - changeYear: true
290 - }
291 - );
292 - });
293 -//]]>
294 -</script>
295 - <?php
296 - echo "<input type=\"text\" name=\"" . $this->prefix . $customField[ 'name' ] . "\" id=\"" . $this->prefix . $customField[ 'name' ] . "\" value=\"" . htmlspecialchars( $value ) . "\" style=\"width: 175px;\" />\n";
297 - break;
298 - }
299 - case "datetime": {
300 - echo "<span style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></span><br />\n";
301 - $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
302 - foreach ( $value as $k => $v )
303 - $value[$k] = htmlspecialchars( $v );
304 - // Date picker using WP's built-in Datepicker jQuery plugin
305 - // Time picker using jQuery UI Timepicker: http://fgelinas.com/code/timepicker
306 - ?>
307 -<script type="text/javascript">
308 -//<![CDATA[
309 - jQuery(document).ready(function() {
310 - jQuery( "#<?php echo $this->prefix . $customField[ 'name' ]; ?>_date" ).datepicker(
311 - {
312 - changeMonth: true,
313 - changeYear: true
314 - }
315 - );
316 - jQuery( "#<?php echo $this->prefix . $customField[ 'name' ]; ?>_time" ).timepicker(
317 - {
318 - defaultTime: 'now'
319 - }
320 - );
321 - });
322 -//]]>
323 -</script>
324 - <?php
325 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "_date\" style=\"display:inline;\"><em>" . _x( 'Date', 'Date field label', 'timed-content' ) . ":</em></label>&nbsp;&nbsp;\n";
326 - echo "<input type=\"text\" name=\"" . $this->prefix . $customField[ 'name' ] . "[date]\" id=\"" . $this->prefix . $customField[ 'name' ] . "_date\" value=\"" . $value['date'] . "\" style=\"width: 175px;\" />\n";
327 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] ."_time\" style=\"display:inline;\"><em>" . _x( 'Time', 'Time field label', 'timed-content' ) . ":</em></label>&nbsp;&nbsp;\n";
328 - echo "<input type=\"text\" name=\"" . $this->prefix . $customField[ 'name' ] . "[time]\" id=\"" . $this->prefix . $customField[ 'name' ] . "_time\" value=\"" . $value['time'] . "\" style=\"width: 125px;\" />\n";
329 - break;
330 - }
331 - case "number": {
332 - (int)$value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
333 - // Number picker using WP's built-in Spinner jQuery plugin ?>
334 -<script type="text/javascript">
335 -//<![CDATA[
336 - jQuery(document).ready(function() {
337 - jQuery( "#<?php echo $this->prefix . $customField[ 'name' ]; ?>" ).spinner(
338 - {
339 - stop: function( event, ui ) { jQuery( this ).trigger("change"); },
340 - <?php if ( isset( $customField[ 'min' ] ) ) { ?>min: <?php echo $customField[ 'min' ]; ?>, <?php } ?>
341 - <?php if ( isset( $customField[ 'max' ] ) ) { ?>max: <?php echo $customField[ 'max' ]; ?> <?php } ?>
342 - }
343 - );
344 - });
345 -//]]>
346 -</script>
347 - <?php
348 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\" style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></label>&nbsp;&nbsp;\n";
349 - echo "<input type=\"text\" name=\"" . $this->prefix . $customField[ 'name' ] . "\" id=\"" . $this->prefix . $customField[ 'name' ] . "\" value=\"" . $value . "\" size=\"2\" />\n";
350 - break;
351 - }
352 - case "hidden": {
353 - $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
310 + break;
311 + case "textarea":
312 + case "wysiwyg":
313 + {
314 + // Text area
315 + $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'],
316 + true ) ? $customField['default'] : get_post_meta( $post->ID,
317 + $this->prefix . $customField['name'], true ) );
318 + echo "<label for=\"" . $this->prefix . $customField['name'] . "\"><strong>" . $customField['title'] . "</strong></label><br />\n";
319 + echo "<textarea name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "\" columns=\"30\" rows=\"3\">" . htmlspecialchars( $value ) . "</textarea>\n";
320 + // WYSIWYG
321 + if ( $customField['type'] == "wysiwyg" ) { ?>
322 + <script type="text/javascript">
323 + //<![CDATA[
324 + jQuery(document).ready(function () {
325 + jQuery("<?php echo $this->prefix . $customField['name']; ?>").addClass("mceEditor");
326 + if (typeof (tinyMCE) == "object" && typeof (tinyMCE.execCommand) == "function") {
327 + tinyMCE.execCommand("mceAddControl", false, "<?php echo $this->prefix . $customField['name']; ?>");
328 + }
329 + });
330 + //]]>
331 + </script>
332 + <?php }
333 + }
334 + break;
335 + case "color-picker": {
336 + $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'],
337 + true ) ? $customField['default'] : get_post_meta( $post->ID,
338 + $this->prefix . $customField['name'], true ) );
339 + // Color picker using WP's built-in Iris jQuery plugin ?>
340 + <script type="text/javascript">
341 + //<![CDATA[
342 + jQuery(document).ready(function () {
343 + var <?php echo $this->prefix . $customField['name']; ?>Options = {
344 + defaultColor: false,
345 + hide: true,
346 + palettes: true
347 + };
348 +
349 + jQuery("#<?php echo $this->prefix . $customField['name']; ?>").wpColorPicker(<?php echo $this->prefix . $customField['name']; ?>Options);
350 + });
351 + //]]>
352 + </script>
353 + <?php
354 + echo "<label for=\"" . $this->prefix . $customField['name'] . "\"><strong>" . $customField['title'] . "</strong></label><br />\n";
355 + echo "<input type=\"text\" name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "\" value=\"" . $value . "\" size=\"7\" maxlength=\"7\" style=\"width: 100px;\" />\n";
356 + break;
357 + }
358 + case "date": {
359 + echo "<label for=\"" . $this->prefix . $customField['name'] . "\" style=\"display:inline;\"><strong>" . $customField['title'] . "</strong></label><br />\n";
360 + // echo "<span style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></span>&nbsp;&nbsp;\n";
361 + $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'],
362 + true ) ? $customField['default'] : get_post_meta( $post->ID,
363 + $this->prefix . $customField['name'], true ) );
364 + // Date picker using WP's built-in Datepicker jQuery plugin ?>
365 + <script type="text/javascript">
366 + //<![CDATA[
367 + jQuery(document).ready(function () {
368 + jQuery("#<?php echo $this->prefix . $customField['name']; ?>").datepicker(
369 + {
370 + <?php if ( isset( $customField['custom_functions'] ) ) {
371 + echo $customField['custom_functions'];
372 + } ?>
373 + changeMonth: true,
374 + changeYear: true
375 + }
376 + );
377 + });
378 + //]]>
379 + </script>
380 + <?php
381 + echo "<input type=\"text\" name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "\" value=\"" . htmlspecialchars( $value ) . "\" style=\"width: 175px;\" />\n";
382 + break;
383 + }
384 + case "datetime": {
385 + echo "<span style=\"display:inline;\"><strong>" . $customField['title'] . "</strong></span><br />\n";
386 + $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'],
387 + true ) ? $customField['default'] : get_post_meta( $post->ID,
388 + $this->prefix . $customField['name'], true ) );
389 + foreach ( $value as $k => $v ) {
390 + $value[ $k ] = htmlspecialchars( $v );
391 + }
392 + // Date picker using WP's built-in Datepicker jQuery plugin
393 + // Time picker using jQuery UI Timepicker: http://fgelinas.com/code/timepicker
394 + ?>
395 + <script type="text/javascript">
396 + //<![CDATA[
397 + jQuery(document).ready(function () {
398 + jQuery("#<?php echo $this->prefix . $customField['name']; ?>_date").datepicker(
399 + {
400 + changeMonth: true,
401 + changeYear: true
402 + }
403 + );
404 + jQuery("#<?php echo $this->prefix . $customField['name']; ?>_time").timepicker(
405 + {
406 + defaultTime: 'now'
407 + }
408 + );
409 + });
410 + //]]>
411 + </script>
412 + <?php
413 + echo "<label for=\"" . $this->prefix . $customField['name'] . "_date\" style=\"display:inline;\"><em>" . _x( 'Date',
414 + 'Date field label', 'timed-content' ) . ":</em></label>\n";
415 + echo "<input type=\"text\" name=\"" . $this->prefix . $customField['name'] . "[date]\" id=\"" . $this->prefix . $customField['name'] . "_date\" value=\"" . $value['date'] . "\" style=\"width: 175px;\" />\n";
416 + echo "<label for=\"" . $this->prefix . $customField['name'] . "_time\" style=\"display:inline;\"><em>" . _x( 'Time',
417 + 'Time field label', 'timed-content' ) . ":</em></label>\n";
418 + echo "<input type=\"text\" name=\"" . $this->prefix . $customField['name'] . "[time]\" id=\"" . $this->prefix . $customField['name'] . "_time\" value=\"" . $value['time'] . "\" style=\"width: 125px;\" />\n";
419 + break;
420 + }
421 + case "number": {
422 + (int) $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'],
423 + true ) ? $customField['default'] : get_post_meta( $post->ID,
424 + $this->prefix . $customField['name'], true ) );
425 + // Number picker using WP's built-in Spinner jQuery plugin ?>
426 + <script type="text/javascript">
427 + //<![CDATA[
428 + jQuery(document).ready(function () {
429 + jQuery("#<?php echo $this->prefix . $customField['name']; ?>").spinner(
430 + {
431 + stop: function (event, ui) {
432 + jQuery(this).trigger("change");
433 + },
434 + <?php if ( isset( $customField['min'] ) ) { ?>min: <?php echo $customField['min']; ?>, <?php } ?>
435 + <?php if ( isset( $customField['max'] ) ) { ?>max: <?php echo $customField['max']; ?> <?php } ?>
436 + }
437 + );
438 + });
439 + //]]>
440 + </script>
441 + <?php
442 + echo "<label for=\"" . $this->prefix . $customField['name'] . "\" style=\"display:inline;\"><strong>" . $customField['title'] . "</strong></label><br />\n";
443 + echo "<input type=\"text\" name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "\" value=\"" . $value . "\" size=\"2\" />\n";
444 + break;
445 + }
446 + case "hidden":
447 + {
448 + $value = ( "" === get_post_meta( $post->ID,
449 + $this->prefix . $customField['name'],
450 + true ) ? $customField['default'] : get_post_meta( $post->ID,
451 + $this->prefix . $customField['name'], true ) );
354 452 // Hidden field
355 - echo "<input type=\"hidden\" name=\"" . $this->prefix . $customField[ 'name' ] . "\" id=\"" . $this->prefix . $customField[ 'name' ] . "\" value=\"" . $value . "\" />\n";
453 + echo "<input type=\"hidden\" name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "\" value=\"" . $value . "\" />\n";
356 454 break;
357 455 }
358 - default: {
359 - $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
456 + default:
457 + {
458 + $value = ( "" === get_post_meta( $post->ID,
459 + $this->prefix . $customField['name'],
460 + true ) ? $customField['default'] : get_post_meta( $post->ID,
461 + $this->prefix . $customField['name'], true ) );
360 462 // Plain text field
361 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\"><strong>" . $customField[ 'title' ] . "</strong></label>\n";
362 - echo "<input type=\"text\" name=\"" . $this->prefix . $customField[ 'name' ] . "\" id=\"" . $this->prefix . $customField[ 'name' ] . "\" value=\"" . $value . "\" />\n";
463 + echo "<label for=\"" . $this->prefix . $customField['name'] . "\"><strong>" . $customField['title'] . "</strong></label><br/>\n";
464 + echo "<input type=\"text\" name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "\" value=\"" . $value . "\" />\n";
363 465 break;
364 466 }
365 - }
366 - ?>
367 - <?php if ( isset( $customField[ 'description' ] ) ) echo "<p>" . $customField[ 'description' ] . "</p>\n"; ?>
368 - </div>
467 + }
468 + ?>
469 + <?php if ( isset( $customField['description'] ) ) {
470 + echo "<p>" . $customField['description'] . "</p>\n";
471 + } ?>
472 + </div>
369 473 <?php
370 - }
371 - } ?>
372 - </div>
373 - <?php
474 + }
475 + } ?>
476 + </div>
477 + <?php
478 + }
479 +
480 + /**
481 + * Save the new Custom Fields values
482 + */
483 + function saveCustomFields( $post_id, $post ) {
484 + // Only save if the user intends to save
485 + if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
486 + return;
374 487 }
375 - /**
376 - * Save the new Custom Fields values
377 - */
378 - function saveCustomFields( $post_id, $post ) {
379 - // Only save if the user intends to save
380 - if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
381 - return;
382 - // Make sure the Save request is coming from the right place
383 - if ( !isset( $_POST[ $this->handle . '_wpnonce' ] ) || !wp_verify_nonce( $_POST[ $this->handle . '_wpnonce' ], $this->handle ) )
384 - return;
385 - // Make sure the user can edit this specific post
386 - if ( !current_user_can( 'edit_post', $post_id ) )
387 - return;
388 - // Make sure this meta box is associated with the right post types
389 - if ( ! in_array( $post->post_type, $this->postTypes ) )
390 - return;
391 - foreach ( $this->customFields as $customField ) {
392 - if ( current_user_can( $customField['capability'], $post_id ) ) {
393 - if ( isset( $_POST[ $this->prefix . $customField['name'] ] ) ) {
394 - if ( is_array( $_POST[ $this->prefix . $customField['name'] ] ) ) {
395 - foreach ( $_POST[ $this->prefix . $customField['name'] ] as $k => $v )
396 - $_POST[ $this->prefix . $customField['name'] ][$k] = trim( $v );
397 - } else
398 - $_POST[ $this->prefix . $customField['name'] ] = trim( $_POST[ $this->prefix . $customField['name'] ] );
399 - $value = $_POST[ $this->prefix . $customField['name'] ];
400 - // Auto-paragraphs for any WYSIWYG
401 - if ( $customField['type'] == "wysiwyg" ) $value = wpautop( $value );
402 - if ( $customField['type'] == "checkbox" ) $value = "yes";
403 - if ( $customField['type'] == "number" ) $value = intval( $value );
404 - update_post_meta( $post_id, $this->prefix . $customField[ 'name' ], $value );
488 + // Make sure the Save request is coming from the right place
489 + if ( ! isset( $_POST[ $this->handle . '_wpnonce' ] ) || ! wp_verify_nonce( $_POST[ $this->handle . '_wpnonce' ],
490 + $this->handle ) ) {
491 + return;
492 + }
493 + // Make sure the user can edit this specific post
494 + if ( ! current_user_can( 'edit_post', $post_id ) ) {
495 + return;
496 + }
497 + // Make sure this meta box is associated with the right post types
498 + if ( ! in_array( $post->post_type, $this->postTypes ) ) {
499 + return;
500 + }
501 + foreach ( $this->customFields as $customField ) {
502 + if ( current_user_can( $customField['capability'], $post_id ) ) {
503 + if ( isset( $_POST[ $this->prefix . $customField['name'] ] ) ) {
504 + if ( is_array( $_POST[ $this->prefix . $customField['name'] ] ) ) {
505 + foreach ( $_POST[ $this->prefix . $customField['name'] ] as $k => $v ) {
506 + $_POST[ $this->prefix . $customField['name'] ][ $k ] = trim( $v );
507 + }
405 508 } else {
406 - delete_post_meta( $post_id, $this->prefix . $customField[ 'name' ] );
509 + $_POST[ $this->prefix . $customField['name'] ] = trim( $_POST[ $this->prefix . $customField['name'] ] );
407 510 }
511 + $value = $_POST[ $this->prefix . $customField['name'] ];
512 + // Auto-paragraphs for any WYSIWYG
513 + if ( $customField['type'] == "wysiwyg" ) {
514 + $value = wpautop( $value );
515 + }
516 + if ( $customField['type'] == "checkbox" ) {
517 + $value = "yes";
518 + }
519 + if ( $customField['type'] == "number" ) {
520 + $value = intval( $value );
521 + }
522 + update_post_meta( $post_id, $this->prefix . $customField['name'], $value );
523 + } else {
524 + delete_post_meta( $post_id, $this->prefix . $customField['name'] );
408 525 }
409 526 }
410 527 }
411 -
412 -
413 - } // End Class
414 -
415 -} // End if class exists statement
416 -?>
528 + }
529 +}