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 +454 -344 2.52.70 View file →
@@ -1,419 +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_style( 'timed-content-jquery-ui-css', TIMED_CONTENT_JQUERY_UI_CSS, false, TIMED_CONTENT_VERSION );
98 - wp_enqueue_script( 'jquery-ui-datepicker' );
99 - if( !( wp_script_is( 'timed-content-jquery-ui-datepicker-i18n-js', 'registered' ) ) ) {
100 - wp_register_script( 'timed-content-jquery-ui-datepicker-i18n-js', TIMED_CONTENT_PLUGIN_URL . "/js/timed-content-datepicker-i18n.js", array( 'jquery', 'jquery-ui-datepicker' ), TIMED_CONTENT_VERSION );
101 - wp_enqueue_script( 'timed-content-jquery-ui-datepicker-i18n-js' );
102 - wp_localize_script( 'timed-content-jquery-ui-datepicker-i18n-js', 'TimedContentJQDatepickerI18n', $jquery_ui_datetime_datepicker_i18n );
103 - }
104 -
105 - wp_enqueue_script( 'jquery-ui-spinner' );
106 - wp_register_style( 'timed-content-jquery-ui-timepicker-css', TIMED_CONTENT_JQUERY_UI_TIMEPICKER_CSS, array( TIMED_CONTENT_JQUERY_UI_CSS ), TIMED_CONTENT_VERSION );
107 - wp_enqueue_style( 'timed-content-jquery-ui-timepicker-css' );
108 - wp_register_script( 'timed-content-jquery-ui-timepicker-js', TIMED_CONTENT_JQUERY_UI_TIMEPICKER_JS, array('jquery', 'jquery-ui-datepicker'), TIMED_CONTENT_VERSION );
109 - wp_enqueue_script( 'timed-content-jquery-ui-timepicker-js' );
110 - if( !( wp_script_is( 'timed-content-jquery-ui-timepicker-i18n-js', 'registered' ) ) ) {
111 - wp_register_script( 'timed-content-jquery-ui-timepicker-i18n-js', TIMED_CONTENT_PLUGIN_URL . "/js/timed-content-timepicker-i18n.js", array( 'jquery', 'jquery-ui-datepicker', 'timed-content-jquery-ui-timepicker-js' ), TIMED_CONTENT_VERSION );
112 - wp_enqueue_script( 'timed-content-jquery-ui-timepicker-i18n-js' );
113 - wp_localize_script( 'timed-content-jquery-ui-timepicker-i18n-js', 'TimedContentJQTimepickerI18n', $jquery_ui_datetime_timepicker_i18n );
114 - }
115 - if ( function_exists( 'add_meta_box' ) )
116 - add_meta_box( $this->handle, $this->label, array( &$this, 'displayCustomFields' ), $a_postType, 'normal', 'high' );
98 + return $options_list;
99 + }
100 +
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 + }
112 +
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 );
117 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 + }
118 152 }
119 153 }
120 - /**
121 - * Display the new Custom Fields meta box
122 - */
123 - function displayCustomFields() {
124 - global $post;
125 - ?>
126 - <p><?php echo $this->desc; ?></p>
127 - <div class="form-wrap">
128 - <?php
129 - wp_nonce_field( $this->handle, $this->handle . '_wpnonce', false, true );
130 - foreach ( $this->customFields as $customField ) {
131 - // Check scope
132 - $scope = $customField[ 'scope' ];
133 - $output = false;
134 - foreach ( $scope as $scopeItem ) {
135 - switch ( $scopeItem ) {
136 - default: {
137 - 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 ) {
138 175 $output = true;
176 + }
139 177 break;
140 178 }
141 - }
142 - if ( $output ) break;
143 179 }
144 - // Check capability
145 - if ( !current_user_can( $customField['capability'], $post->ID ) )
146 - $output = false;
147 - // Output if allowed
148 - if ( $output ) { ?>
149 - <div class="form-field form-required" id="<?php echo $this->prefix . $customField[ 'name' ]; ?>_div" style="display: <?php echo $customField[ 'display' ]; ?>">
150 - <?php
151 - switch ( $customField[ 'type' ] ) {
152 - 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 + {
153 197 // radio
154 - $checked_value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
155 - 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";
156 203 foreach ( $customField['values'] as $value => $label ) {
157 - echo "<input type=\"radio\" name=\"" . $this->prefix . $customField[ 'name' ] . "\" id=\"" . $this->prefix . $customField[ 'name' ] . "_" . $value . "\" value=\"" . $value . "\"";
158 - 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 ) {
159 206 echo " checked=\"checked\"";
160 - 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";
161 209 }
162 - break;
163 210 }
164 - case "menu": {
211 + break;
212 + case "menu":
213 + {
165 214 // menu
166 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\" style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></label><br />\n";
167 - 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 ) {
168 217 echo "<em>" . __( "This menu is empty.", "timed-content" ) . "</em>\n";
169 - else {
170 - $selected_value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
171 - 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";
172 224 foreach ( $customField['values'] as $value => $label ) {
173 225 echo "\t<option value=\"" . $value . "\"";
174 - if ( $selected_value == $value )
226 + if ( $selected_value == $value ) {
175 227 echo " selected=\"selected\"";
228 + }
176 229 echo ">" . $label . "</option>\n";
177 230 }
178 231 echo "</select>\n";
179 232 }
180 - break;
181 233 }
182 - case "list": {
234 + break;
235 + case "list":
236 + {
183 237 // list
184 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\" style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></label>&nbsp;&nbsp;\n";
185 - 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 ) {
186 240 echo "<em>" . __( "This menu is empty.", "timed-content" ) . "</em>\n";
187 - else {
188 - $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 ) );
189 246 echo "<select name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "\" style=\"width: auto;\">\n";
190 247 foreach ( $customField['values'] as $value => $label ) {
191 248 echo "\t<option value=\"" . $value . "\"";
192 - if ( $selected_value == $value )
249 + if ( $selected_value == $value ) {
193 250 echo " selected=\"selected\"";
251 + }
194 252 echo ">" . $label . "</option>\n";
195 253 }
196 254 echo "</select>\n";
197 255 }
198 - break;
199 256 }
200 - case "timezone-list": {
257 + break;
258 + case "timezone-list":
259 + {
201 260 // timezone list
202 - $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 ) );
203 265
204 - 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";
205 267 echo "<select name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "\" style=\"width: auto;\">\n";
206 - echo customFieldsInterface::__generateTimezoneSelectOptions( $selected_value );
268 + echo customFieldsInterface::generateTimezoneSelectOptions( $selected_value );
207 269 echo "</select>\n";
208 - break;
209 270 }
210 - case "checkbox": {
271 + break;
272 + case "checkbox":
273 + {
211 274 // Checkbox
212 - $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 ) );
213 279
214 - 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";
215 281 echo "<input type=\"checkbox\" name=\"" . $this->prefix . $customField['name'] . "\" id=\"" . $this->prefix . $customField['name'] . "\" value=\"yes\"";
216 - if ( $checked_value == "yes" )
282 + if ( $checked_value == "yes" ) {
217 283 echo " checked=\"checked\"";
218 - echo " style=\"width: 30px;\" />\n";
219 - break;
284 + }
285 + echo " />".__('Yes', 'timed-content')."</label>\n";
220 286 }
221 - case "checkbox-list": {
287 + break;
288 + case "checkbox-list":
289 + {
222 290 // Checkbox list
223 - $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 ) );
224 295
225 - echo "<strong>" . $customField[ 'title' ] . "</strong><br />\n";
226 - if ( sizeof ( $customField['values'] ) == 0 )
296 + echo "<strong>" . $customField['title'] . "</strong><br />\n";
297 + if ( sizeof( $customField['values'] ) == 0 ) {
227 298 echo "<em>" . __( "This menu is empty.", "timed-content" ) . "</em>\n";
228 - else {
299 + } else {
229 300 foreach ( $customField['values'] as $value => $label ) {
230 301 echo "<input type=\"checkbox\" name=\"" . $this->prefix . $customField['name'] . "[]\" id=\"" . $this->prefix . $customField['name'] . "_" . $value . "\" value=\"" . $value . "\"";
231 - if ( ( is_array( $checked_value ) ) && ( in_array( $value, $checked_value ) ) )
302 + if ( ( is_array( $checked_value ) ) && ( in_array( $value,
303 + $checked_value ) ) ) {
232 304 echo " checked=\"checked\"";
233 - 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";
234 307 }
235 308 }
236 - break;
237 309 }
238 - case "textarea":
239 - case "wysiwyg": {
240 - // Text area
241 - $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
242 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] ."\"><strong>" . $customField[ 'title' ] . "</strong></label>\n";
243 - echo "<textarea name=\"" . $this->prefix . $customField[ 'name' ] . "\" id=\"" . $this->prefix . $customField[ 'name' ] . "\" columns=\"30\" rows=\"3\">" . htmlspecialchars( $value ) . "</textarea>\n";
244 - // WYSIWYG
245 - if ( $customField[ 'type' ] == "wysiwyg" ) { ?>
246 -<script type="text/javascript">
247 -//<![CDATA[
248 - jQuery( document ).ready( function() {
249 - jQuery( "<?php echo $this->prefix . $customField[ 'name' ]; ?>" ).addClass( "mceEditor" );
250 - if ( typeof( tinyMCE ) == "object" && typeof( tinyMCE.execCommand ) == "function" ) {
251 - tinyMCE.execCommand( "mceAddControl", false, "<?php echo $this->prefix . $customField[ 'name' ]; ?>" );
252 - }
253 - });
254 -//]]>
255 -</script>
256 - <?php }
257 - break;
258 - }
259 - case "color-picker": {
260 - $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
261 - // Color picker using WP's built-in Iris jQuery plugin ?>
262 -<script type="text/javascript">
263 -//<![CDATA[
264 - jQuery(document).ready(function() {
265 - var <?php echo $this->prefix . $customField[ 'name' ]; ?>Options = {
266 - defaultColor: false,
267 - hide: true,
268 - palettes: true
269 - };
270 -
271 - jQuery("#<?php echo $this->prefix . $customField[ 'name' ]; ?>").wpColorPicker(<?php echo $this->prefix . $customField[ 'name' ]; ?>Options);
272 - });
273 -//]]>
274 -</script>
275 - <?php
276 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\"><strong>" . $customField[ 'title' ] . "</strong></label>&nbsp;&nbsp;\n";
277 - echo "<input type=\"text\" name=\"" . $this->prefix . $customField[ 'name' ] . "\" id=\"" . $this->prefix . $customField[ 'name' ] . "\" value=\"" . $value . "\" size=\"7\" maxlength=\"7\" style=\"width: 100px;\" />\n";
278 - break;
279 - }
280 - case "date": {
281 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\" style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></label>&nbsp;&nbsp;\n";
282 -// echo "<span style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></span>&nbsp;&nbsp;\n";
283 - $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
284 - // Date picker using WP's built-in Datepicker jQuery plugin ?>
285 -<script type="text/javascript">
286 -//<![CDATA[
287 - jQuery(document).ready(function() {
288 - jQuery( "#<?php echo $this->prefix . $customField[ 'name' ]; ?>" ).datepicker(
289 - {
290 - <?php if( isset( $customField[ 'custom_functions' ] ) ) echo $customField[ 'custom_functions' ]; ?>
291 - changeMonth: true,
292 - changeYear: true
293 - }
294 - );
295 - });
296 -//]]>
297 -</script>
298 - <?php
299 - echo "<input type=\"text\" name=\"" . $this->prefix . $customField[ 'name' ] . "\" id=\"" . $this->prefix . $customField[ 'name' ] . "\" value=\"" . htmlspecialchars( $value ) . "\" style=\"width: 175px;\" />\n";
300 - break;
301 - }
302 - case "datetime": {
303 - echo "<span style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></span><br />\n";
304 - $value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
305 - foreach ( $value as $k => $v )
306 - $value[$k] = htmlspecialchars( $v );
307 - // Date picker using WP's built-in Datepicker jQuery plugin
308 - // Time picker using jQuery UI Timepicker: http://fgelinas.com/code/timepicker
309 - ?>
310 -<script type="text/javascript">
311 -//<![CDATA[
312 - jQuery(document).ready(function() {
313 - jQuery( "#<?php echo $this->prefix . $customField[ 'name' ]; ?>_date" ).datepicker(
314 - {
315 - changeMonth: true,
316 - changeYear: true
317 - }
318 - );
319 - jQuery( "#<?php echo $this->prefix . $customField[ 'name' ]; ?>_time" ).timepicker(
320 - {
321 - defaultTime: 'now'
322 - }
323 - );
324 - });
325 -//]]>
326 -</script>
327 - <?php
328 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "_date\" style=\"display:inline;\"><em>" . _x( 'Date', 'Date field label', 'timed-content' ) . ":</em></label>&nbsp;&nbsp;\n";
329 - echo "<input type=\"text\" name=\"" . $this->prefix . $customField[ 'name' ] . "[date]\" id=\"" . $this->prefix . $customField[ 'name' ] . "_date\" value=\"" . $value['date'] . "\" style=\"width: 175px;\" />\n";
330 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] ."_time\" style=\"display:inline;\"><em>" . _x( 'Time', 'Time field label', 'timed-content' ) . ":</em></label>&nbsp;&nbsp;\n";
331 - echo "<input type=\"text\" name=\"" . $this->prefix . $customField[ 'name' ] . "[time]\" id=\"" . $this->prefix . $customField[ 'name' ] . "_time\" value=\"" . $value['time'] . "\" style=\"width: 125px;\" />\n";
332 - break;
333 - }
334 - case "number": {
335 - (int)$value = ( "" === get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) ? $customField['default'] : get_post_meta( $post->ID, $this->prefix . $customField['name'], true ) );
336 - // Number picker using WP's built-in Spinner jQuery plugin ?>
337 -<script type="text/javascript">
338 -//<![CDATA[
339 - jQuery(document).ready(function() {
340 - jQuery( "#<?php echo $this->prefix . $customField[ 'name' ]; ?>" ).spinner(
341 - {
342 - stop: function( event, ui ) { jQuery( this ).trigger("change"); },
343 - <?php if ( isset( $customField[ 'min' ] ) ) { ?>min: <?php echo $customField[ 'min' ]; ?>, <?php } ?>
344 - <?php if ( isset( $customField[ 'max' ] ) ) { ?>max: <?php echo $customField[ 'max' ]; ?> <?php } ?>
345 - }
346 - );
347 - });
348 -//]]>
349 -</script>
350 - <?php
351 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\" style=\"display:inline;\"><strong>" . $customField[ 'title' ] . "</strong></label>&nbsp;&nbsp;\n";
352 - echo "<input type=\"text\" name=\"" . $this->prefix . $customField[ 'name' ] . "\" id=\"" . $this->prefix . $customField[ 'name' ] . "\" value=\"" . $value . "\" size=\"2\" />\n";
353 - break;
354 - }
355 - case "hidden": {
356 - $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 ) );
357 452 // Hidden field
358 - 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";
359 454 break;
360 455 }
361 - default: {
362 - $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 ) );
363 462 // Plain text field
364 - echo "<label for=\"" . $this->prefix . $customField[ 'name' ] . "\"><strong>" . $customField[ 'title' ] . "</strong></label>\n";
365 - 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";
366 465 break;
367 466 }
368 - }
369 - ?>
370 - <?php if ( isset( $customField[ 'description' ] ) ) echo "<p>" . $customField[ 'description' ] . "</p>\n"; ?>
371 - </div>
467 + }
468 + ?>
469 + <?php if ( isset( $customField['description'] ) ) {
470 + echo "<p>" . $customField['description'] . "</p>\n";
471 + } ?>
472 + </div>
372 473 <?php
373 - }
374 - } ?>
375 - </div>
376 - <?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;
377 487 }
378 - /**
379 - * Save the new Custom Fields values
380 - */
381 - function saveCustomFields( $post_id, $post ) {
382 - // Only save if the user intends to save
383 - if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
384 - return;
385 - // Make sure the Save request is coming from the right place
386 - if ( !isset( $_POST[ $this->handle . '_wpnonce' ] ) || !wp_verify_nonce( $_POST[ $this->handle . '_wpnonce' ], $this->handle ) )
387 - return;
388 - // Make sure the user can edit this specific post
389 - if ( !current_user_can( 'edit_post', $post_id ) )
390 - return;
391 - // Make sure this meta box is associated with the right post types
392 - if ( ! in_array( $post->post_type, $this->postTypes ) )
393 - return;
394 - foreach ( $this->customFields as $customField ) {
395 - if ( current_user_can( $customField['capability'], $post_id ) ) {
396 - if ( isset( $_POST[ $this->prefix . $customField['name'] ] ) ) {
397 - if ( is_array( $_POST[ $this->prefix . $customField['name'] ] ) ) {
398 - foreach ( $_POST[ $this->prefix . $customField['name'] ] as $k => $v )
399 - $_POST[ $this->prefix . $customField['name'] ][$k] = trim( $v );
400 - } else
401 - $_POST[ $this->prefix . $customField['name'] ] = trim( $_POST[ $this->prefix . $customField['name'] ] );
402 - $value = $_POST[ $this->prefix . $customField['name'] ];
403 - // Auto-paragraphs for any WYSIWYG
404 - if ( $customField['type'] == "wysiwyg" ) $value = wpautop( $value );
405 - if ( $customField['type'] == "checkbox" ) $value = "yes";
406 - if ( $customField['type'] == "number" ) $value = intval( $value );
407 - 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 + }
408 508 } else {
409 - delete_post_meta( $post_id, $this->prefix . $customField[ 'name' ] );
509 + $_POST[ $this->prefix . $customField['name'] ] = trim( $_POST[ $this->prefix . $customField['name'] ] );
410 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'] );
411 525 }
412 526 }
413 527 }
414 -
415 -
416 - } // End Class
417 -
418 -} // End if class exists statement
419 -?>
528 + }
529 +}