PluginProbe ʕ •ᴥ•ʔ
Pods – Custom Content Types and Fields / 2.7.31.4
Pods – Custom Content Types and Fields v2.7.31.4
2.7.31.4 2.8.23.5 2.9.19.5 3.0.10.5 3.1.4.3 3.2.8.4 3.3.9.2 2.8.23.4 2.9.19.4 3.0.10.4 3.1.4.2 3.2.8.3 3.3.9.1 trunk 1.14.8 2.7.31.3 2.8.23.3 2.9.19.3 3.0.10.3 3.1.4.1 3.2.0 3.2.1 3.2.1.1 3.2.2 3.2.4 3.2.5 3.2.6 3.2.7 3.2.7.1 3.2.8 3.2.8.1 3.2.8.2 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9
pods / ui / admin / setup-edit.php
pods / ui / admin Last commit date
upgrade 3 days ago widgets 3 days ago components-admin.php 3 days ago field-option.php 3 days ago form-settings.php 3 days ago form.php 3 days ago help.php 3 days ago postbox-header.php 3 days ago settings-reset.php 3 days ago settings-settings.php 3 days ago settings-tools.php 3 days ago settings.php 3 days ago setup-add.php 3 days ago setup-edit-field-fluid.php 3 days ago setup-edit-field.php 3 days ago setup-edit.php 3 days ago shortcode.php 3 days ago view.php 3 days ago
setup-edit.php
932 lines
1 <?php
2 // Don't load directly.
3 if ( ! defined( 'ABSPATH' ) || ! pods_is_admin( 'pods' ) ) {
4 die( '-1' );
5 }
6
7 global $pods_i;
8
9 $api = pods_api();
10
11 $pod = $api->load_pod( array( 'id' => $obj->id ) );
12
13 $pod_type = pods_v( 'type', $pod );
14
15 if ( 'taxonomy' == $pod[ 'type' ] && 'none' == $pod[ 'storage' ] && 1 == pods_v( 'enable_extra_fields' ) ) {
16 $api->save_pod( array( 'id' => $obj->id, 'storage' => 'table' ) );
17
18 $pod = $api->load_pod( array( 'id' => $obj->id ) );
19
20 unset( $_GET[ 'enable_extra_fields' ] );
21
22 pods_message( __( 'Extra fields were successfully enabled for this Custom Taxonomy.', 'pods' ) );
23 }
24
25 $field_types = PodsForm::field_types();
26
27 $field_types_select = array();
28
29 foreach ( $field_types as $type => $field_type_data ) {
30 /**
31 * @var $field_type PodsField
32 */
33 $field_type = PodsForm::field_loader( $type, $field_type_data[ 'file' ] );
34
35 $field_type_vars = get_class_vars( get_class( $field_type ) );
36
37 if ( !isset( $field_type_vars[ 'pod_types' ] ) )
38 $field_type_vars[ 'pod_types' ] = true;
39
40 // Only show supported field types
41 if ( true !== $field_type_vars[ 'pod_types' ] ) {
42 if ( empty( $field_type_vars[ 'pod_types' ] ) )
43 continue;
44 elseif ( is_array( $field_type_vars[ 'pod_types' ] ) && !in_array( $pod_type, $field_type_vars[ 'pod_types' ], true ) )
45 continue;
46 elseif ( !is_array( $field_type_vars[ 'pod_types' ] ) && $pod_type != $field_type_vars[ 'pod_types' ] )
47 continue;
48 }
49
50 if ( !empty( PodsForm::$field_group ) ) {
51 if ( !isset( $field_types_select[ PodsForm::$field_group ] ) )
52 $field_types_select[ PodsForm::$field_group ] = array();
53
54 $field_types_select[ PodsForm::$field_group ][ $type ] = $field_type_data[ 'label' ];
55 }
56 else {
57 if ( !isset( $field_types_select[ __( 'Other', 'pods' ) ] ) )
58 $field_types_select[ __( 'Other', 'pods' ) ] = array();
59
60 $field_types_select[ __( 'Other', 'pods' ) ][ $type ] = $field_type_data[ 'label' ];
61 }
62 }
63
64 $field_defaults = array(
65 'name' => 'new_field',
66 'label' => 'New Field',
67 'description' => '',
68 'type' => 'text',
69 'pick_object' => '',
70 'sister_id' => '',
71 'required' => 0,
72 'unique' => 0,
73 );
74
75 $pick_object = PodsForm::field_method( 'pick', 'related_objects', true );
76
77 $tableless_field_types = PodsForm::tableless_field_types();
78 $simple_tableless_objects = PodsForm::field_method( 'pick', 'simple_objects' );
79 $bidirectional_objects = PodsForm::field_method( 'pick', 'bidirectional_objects' );
80
81 foreach ( $pod[ 'options' ] as $_option => $_value ) {
82 $pod[ $_option ] = $_value;
83 }
84
85 foreach ( $pod[ 'fields' ] as $_field => $_data ) {
86 $_data[ 'options' ] = (array) $_data[ 'options' ];
87
88 foreach ( $_data[ 'options' ] as $_option => $_value ) {
89 $pod[ 'fields' ][ $_field ][ $_option ] = $_value;
90 }
91 }
92
93 $pod_name = $pod[ 'name' ];
94
95 $field_defaults = apply_filters( 'pods_field_defaults', apply_filters( "pods_field_defaults_{$pod_name}", $field_defaults, $pod ) );
96
97 $pick_table = pods_transient_get( 'pods_tables' );
98
99 if ( empty( $pick_table ) ) {
100 $pick_table = array(
101 '' => __( '-- Select Table --', 'pods' )
102 );
103
104 global $wpdb;
105
106 $tables = $wpdb->get_results( "SHOW TABLES", ARRAY_N );
107
108 if ( !empty( $tables ) ) {
109 foreach ( $tables as $table ) {
110 $pick_table[ $table[ 0 ] ] = $table[ 0 ];
111 }
112 }
113
114 pods_transient_set( 'pods_tables', $pick_table );
115 }
116
117 $field_settings = array(
118 'field_types_select' => $field_types_select,
119 'field_defaults' => $field_defaults,
120 'pick_object' => $pick_object,
121 'pick_table' => $pick_table,
122 'sister_id' => array( '' => __( 'No Related Fields Found', 'pods' ) )
123 );
124
125 $field_settings = apply_filters( 'pods_field_settings', apply_filters( "pods_field_settings_{$pod_name}", $field_settings, $pod ) );
126
127 $pod[ 'fields' ] = apply_filters( 'pods_fields_edit', apply_filters( "pods_fields_edit_{$pod_name}", $pod[ 'fields' ], $pod ) );
128
129 global $wpdb;
130 $max_length_name = 64;
131 $max_length_name -= 10; // Allow for WP Multisite or prefix changes in the future
132 $max_length_name -= strlen( $wpdb->prefix . 'pods_' );
133
134 $tabs = PodsInit::$admin->admin_setup_edit_tabs( $pod );
135 $tab_options = PodsInit::$admin->admin_setup_edit_options( $pod );
136
137 $field_tabs = PodsInit::$admin->admin_setup_edit_field_tabs( $pod );
138 $field_tab_options = PodsInit::$admin->admin_setup_edit_field_options( $pod );
139
140 $no_additional = array();
141
142 foreach ( $field_tab_options[ 'additional-field' ] as $field_type => $field_type_fields ) {
143 if ( empty( $field_type_fields ) )
144 $no_additional[] = $field_type;
145 }
146
147 /**
148 * Make use of the WP core meta box functionality
149 *
150 * Currently only context 'side' is available
151 *
152 * @since 2.7.0
153 * @see https://codex.wordpress.org/Plugin_API/Action_Reference/add_meta_boxes
154 * @param array $pod The Pod object as an array
155 */
156 do_action( 'pods_add_meta_boxes', '_pods_pod', $pod );
157
158 $pod_post = get_post( $pod['id'] );
159
160 /** This action is documented in wp-admin/edit-form-advanced.php */
161 do_action( 'add_meta_boxes', $pod_post->post_type, $pod_post );
162 ?>
163 <div class="wrap pods-admin">
164 <div id="icon-pods" class="icon32"><br /></div>
165 <form action="" method="post" class="pods-submittable pods-nav-tabbed">
166 <div class="pods-submittable-fields">
167 <input type="hidden" name="action" value="pods_admin" />
168 <input type="hidden" name="method" value="save_pod" />
169 <input type="hidden" name="_wpnonce" value="<?php echo esc_attr( wp_create_nonce( 'pods-save_pod' ) ); ?>" />
170 <input type="hidden" name="id" value="<?php echo esc_attr( (int) $pod[ 'id' ] ); ?>" />
171 <input type="hidden" name="old_name" value="<?php echo esc_attr( $pod[ 'name' ] ); ?>" />
172
173 <h2>
174 <?php esc_html_e( 'Edit Pod', 'pods' ); ?>:
175 <?php
176 if ( ( in_array( $pod[ 'type' ], array( 'post_type', 'taxonomy' ), true ) && !empty( $pod[ 'object' ] ) ) || in_array( $pod[ 'type' ], array( 'media', 'user', 'comment' ), true ) ) {
177 ?>
178 <em><?php echo esc_html( $pod[ 'name' ] ); ?></em>
179 <?php
180 }
181 else {
182 ?>
183 <span class="pods-sluggable">
184 <span class="pods-slug">
185 <em><?php echo esc_html( $pod[ 'name' ] ); ?></em>
186 <input type="button" class="edit-slug-button button" value="<?php esc_attr_e( 'Edit', 'pods' ); ?>" />
187 </span>
188 <span class="pods-slug-edit">
189 <?php echo PodsForm::field( 'name', pods_v( 'name', $pod ), 'db', array(
190 'attributes' => array(
191 'maxlength' => $max_length_name,
192 'size' => 25
193 ),
194 'class' => 'pods-validate pods-validate-required'
195 ) ); ?>
196 <input type="button" class="save-button button" value="<?php esc_attr_e( 'OK', 'pods' ); ?>" /> <a class="cancel" href="#cancel-edit"><?php esc_html_e( 'Cancel', 'pods' ); ?></a>
197 </span>
198 </span>
199 <?php
200 }
201 ?>
202 </h2>
203
204 <?php
205 if ( !empty( $tabs ) ) {
206 ?>
207
208 <h2 class="nav-tab-wrapper pods-nav-tabs">
209 <?php
210 $default = sanitize_title( pods_v( 'tab', 'get', 'manage-fields', null, true ) );
211
212 if ( !isset( $tabs[ $default ] ) ) {
213 $tab_keys = array_keys( $tabs );
214
215 $default = current( $tab_keys );
216 }
217
218 foreach ( $tabs as $tab => $label ) {
219 if ( !in_array( $tab, array( 'manage-fields', 'labels', 'extra-fields' ), true ) && ( !isset( $tab_options[ $tab ] ) || empty( $tab_options[ $tab ] ) ) )
220 continue;
221
222 $class = '';
223
224 $tab = sanitize_title( $tab );
225
226 if ( $tab == $default )
227 $class = ' nav-tab-active';
228 ?>
229 <a href="#pods-<?php echo esc_attr( $tab ); ?>" class="nav-tab<?php echo esc_attr( $class ); ?> pods-nav-tab-link">
230 <?php echo $label; ?>
231 </a>
232 <?php
233 }
234 ?>
235 </h2>
236 <?php
237 }
238 ?>
239 </div>
240
241 <?php
242 if ( isset( $_GET[ 'do' ] ) ) {
243 $action = __( 'saved', 'pods' );
244
245 $do = pods_v( 'do', 'get', 'save' );
246
247 if ( 'create' == $do )
248 $action = __( 'created', 'pods' );
249 elseif ( 'duplicate' ==$do )
250 $action = __( 'duplicated', 'pods' );
251
252 $message = sprintf( __( '<strong>Success!</strong> %1$s %2$s successfully.', 'pods' ), $obj->item, $action );
253
254 echo $obj->message( $message );
255 }
256 ?>
257
258 <div id="poststuff" class="poststuff">
259 <img src="<?php echo esc_url( PODS_URL ); ?>ui/images/pods-logo-notext-rgb-transparent.png" class="pods-leaf-watermark-right" />
260 <!-- /inner-sidebar -->
261 <div id="post-body" class="meta-box-holder columns-2">
262 <div id="post-body-content" class="pods-nav-tab-group">
263
264 <?php
265 if ( isset( $tabs[ 'manage-fields' ] ) ) {
266 ?>
267 <div id="pods-manage-fields" class="pods-nav-tab">
268 <p class="pods-manage-row-add pods-float-right">
269 <a href="#add-field" class="button-primary"><?php _e( 'Add Field', 'pods' ); ?></a>
270 </p>
271
272 <?php
273 if ( !empty( $tabs ) )
274 echo '<h2>' . __( 'Manage Fields', 'pods' ) . '</h2>';
275
276 do_action( 'pods_admin_ui_setup_edit_fields', $pod, $obj );
277 ?>
278
279 <!-- pods table -->
280 <table class="widefat fixed pages" cellspacing="0">
281 <thead>
282 <tr>
283 <th scope="col" id="cb" class="manage-column field-cb check-column">
284 <span>&nbsp;</span>
285 </th>
286 <th scope="col" id="label" class="manage-column field-label">
287 <span><?php esc_html_e( 'Label', 'pods' ); pods_help( "<h6>" . __( 'Label', 'pods' ) . "</h6>" . __( 'The label is the descriptive name to identify the Pod field.', 'pods' ) ); ?></span>
288 </th>
289 <th scope="col" id="machine-name" class="manage-column field-machine-name">
290 <span><?php esc_html_e( 'Name', 'pods' ); pods_help( "<h6>" . __( 'Name', 'pods' ) . "</h6>" . __( 'The name attribute is what is used to identify and access the Pod field programatically.', 'pods' ) ); ?></span>
291 </th>
292 <th scope="col" id="field-type" class="manage-column field-field-type">
293 <span><?php esc_html_e( 'Field Type', 'pods' ); pods_help( "<h6>" . __( 'Field Type', 'pods' ) . "</h6>" . __( 'Field types are used to determine what kind of data will be stored in the Pod. They can range from, dates, text, files, etc.', 'pods' ) ); ?></span>
294 </th>
295 </tr>
296 </thead>
297 <tfoot>
298 <tr>
299 <th scope="col" class="manage-column field-cb check-column">
300 <span>&nbsp;</span>
301 </th>
302 <th scope="col" class="manage-column field-label">
303 <span><?php esc_html_e( 'Label', 'pods' ); pods_help( "<h6>" . __( 'Label', 'pods' ) . "</h6>" . __( 'The label is the descriptive name to identify the Pod field.', 'pods' ) ); ?></span>
304 </th>
305 <th scope="col" class="manage-column field-machine-name">
306 <span><?php esc_html_e( 'Name', 'pods' ); pods_help( "<h6>" . __( 'Name', 'pods' ) . "</h6>" . __( 'The name attribute is what is used to identify and access the Pod field programatically.', 'pods' ) ); ?></span>
307 </th>
308 <th scope="col" class="manage-column field-field-type">
309 <span><?php esc_html_e( 'Field Type', 'pods' ); pods_help( "<h6>" . __( 'Field Type', 'pods' ) . "</h6>" . __( 'Field types are used to determine what kind of data will be stored in the Pod. They can range from, dates, text, files, etc.', 'pods' ) ); ?></span>
310 </th>
311 </tr>
312 </tfoot>
313 <tbody class="pods-manage-list">
314 <?php
315 // Empty Row for Flexible functionality
316 $pods_i = '--1';
317
318 $field = array(
319 'id' => '__1',
320 'name' => '',
321 'label' => '',
322 'type' => 'text'
323 );
324
325 include PODS_DIR . 'ui/admin/setup-edit-field-fluid.php';
326
327 $pods_i = 1;
328
329 foreach ( $pod[ 'fields' ] as $field ) {
330 include PODS_DIR . 'ui/admin/setup-edit-field.php';
331
332 $pods_i++;
333 }
334 ?>
335 <tr class="no-items<?php echo esc_attr( 1 < $pods_i ? ' hidden' : '' ); ?>">
336 <td class="colspanchange" colspan="4"><?php esc_html_e( 'No fields have been added yet', 'pods' ); ?></td>
337 </tr>
338 </tbody>
339 </table>
340 <!-- /pods table -->
341 <p class="pods-manage-row-add">
342 <a href="#add-field" class="button-primary"><?php _e( 'Add Field', 'pods' ); ?></a>
343 </p>
344 </div>
345 <?php
346 }
347
348 $pods_tab_form = true;
349
350 if ( isset( $tabs[ 'labels' ] ) ) {
351 ?>
352 <div id="pods-labels" class="pods-nav-tab pods-manage-field pods-dependency pods-submittable-fields">
353 <?php
354
355 $fields = $tab_options[ 'labels' ];
356 $field_options = PodsForm::fields_setup( $fields );
357 $field = $pod;
358
359 include PODS_DIR . 'ui/admin/field-option.php';
360
361 ?>
362 </div>
363 <?php
364 }
365
366 if ( isset( $tabs[ 'advanced' ] ) ) {
367 ?>
368 <div id="pods-advanced" class="pods-nav-tab pods-manage-field pods-dependency pods-submittable-fields">
369 <?php
370 if ( 'post_type' == $pod_type && strlen( pods_v( 'object', $pod ) ) < 1 ) {
371 $fields = $tab_options[ 'advanced' ];
372 $field_options = PodsForm::fields_setup( $fields );
373 $field = $pod;
374
375 include PODS_DIR . 'ui/admin/field-option.php';
376 ?>
377 <div class="pods-field-option-group">
378 <p class="pods-field-option-group-label">
379 <?php _e( 'Supports', 'pods' ); ?>
380 </p>
381
382 <div class="pods-pick-values pods-pick-checkbox">
383 <ul>
384 <li>
385 <div class="pods-field pods-boolean">
386 <?php echo PodsForm::field( 'supports_title', pods_v( 'supports_title', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Title', 'pods' ) ) ); ?>
387 </div>
388 </li>
389 <li>
390 <div class="pods-field pods-boolean">
391 <?php echo PodsForm::field( 'supports_editor', pods_v( 'supports_editor', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Editor', 'pods' ) ) ); ?>
392 </div>
393 </li>
394 <li>
395 <div class="pods-field pods-boolean">
396 <?php echo PodsForm::field( 'supports_author', pods_v( 'supports_author', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Author', 'pods' ) ) ); ?>
397 </div>
398 </li>
399 <li>
400 <div class="pods-field pods-boolean">
401 <?php echo PodsForm::field( 'supports_thumbnail', pods_v( 'supports_thumbnail', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Featured Image', 'pods' ), 'dependency' => true ) ); ?>
402 </div>
403 </li>
404 <li>
405 <div class="pods-field pods-boolean">
406 <?php echo PodsForm::field( 'supports_excerpt', pods_v( 'supports_excerpt', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Excerpt', 'pods' ) ) ); ?>
407 </div>
408 </li>
409 <li>
410 <div class="pods-field pods-boolean">
411 <?php echo PodsForm::field( 'supports_trackbacks', pods_v( 'supports_trackbacks', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Trackbacks', 'pods' ) ) ); ?>
412 </div>
413 </li>
414 <li>
415 <div class="pods-field pods-boolean">
416 <?php echo PodsForm::field( 'supports_custom_fields', pods_v( 'supports_custom_fields', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Custom Fields', 'pods' ) ) ); ?>
417 </div>
418 </li>
419 <li>
420 <div class="pods-field pods-boolean">
421 <?php echo PodsForm::field( 'supports_comments', pods_v( 'supports_comments', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Comments', 'pods' ) ) ); ?>
422 </div>
423 </li>
424 <li>
425 <div class="pods-field pods-boolean">
426 <?php echo PodsForm::field( 'supports_revisions', pods_v( 'supports_revisions', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Revisions', 'pods' ) ) ); ?>
427 </div>
428 </li>
429 <li>
430 <div class="pods-field pods-boolean">
431 <?php echo PodsForm::field( 'supports_page_attributes', pods_v( 'supports_page_attributes', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Page Attributes', 'pods' ) ) ); ?>
432 </div>
433 </li>
434 <li>
435 <div class="pods-field pods-boolean">
436 <?php echo PodsForm::field( 'supports_post_formats', pods_v( 'supports_post_formats', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Post Formats', 'pods' ) ) ); ?>
437 </div>
438 </li>
439
440 <?php if ( function_exists( 'genesis' ) ) { ?>
441 <li>
442 <div class="pods-field pods-boolean">
443 <?php echo PodsForm::field( 'supports_genesis_seo', pods_v( 'supports_genesis_seo', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Genesis: SEO', 'pods' ) ) ); ?>
444 </div>
445 </li>
446 <li>
447 <div class="pods-field pods-boolean">
448 <?php echo PodsForm::field( 'supports_genesis_layouts', pods_v( 'supports_genesis_layouts', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Genesis: Layouts', 'pods' ) ) ); ?>
449 </div>
450 </li>
451 <li>
452 <div class="pods-field pods-boolean">
453 <?php echo PodsForm::field( 'supports_genesis_simple_sidebars', pods_v( 'supports_genesis_simple_sidebars', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Genesis: Simple Sidebars', 'pods' ) ) ); ?>
454 </div>
455 </li>
456 <?php } ?>
457
458 <?php if ( defined( 'YARPP_VERSION' ) ) { ?>
459 <li>
460 <div class="pods-field pods-boolean">
461 <?php echo PodsForm::field( 'supports_yarpp_support', pods_v( 'supports_yarpp_support', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'YARPP Support', 'pods' ) ) ); ?>
462 </div>
463 </li>
464 <?php } ?>
465
466 <?php if ( class_exists( 'Jetpack' ) ) { ?>
467 <li>
468 <div class="pods-field pods-boolean">
469 <?php echo PodsForm::field( 'supports_jetpack_publicize', pods_v( 'supports_jetpack_publicize', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Jetpack Publicize Support', 'pods' ) ) ); ?>
470 </div>
471 </li>
472 <li>
473 <div class="pods-field pods-boolean">
474 <?php echo PodsForm::field( 'supports_jetpack_markdown', pods_v( 'supports_jetpack_markdown', $pod, false ), 'boolean', array( 'boolean_yes_label' => __( 'Jetpack Markdown Support', 'pods' ) ) ); ?>
475 </div>
476 </li>
477 <?php } ?>
478 </ul>
479 </div>
480 </div>
481 <div class="pods-field-option">
482 <?php echo PodsForm::label( 'supports_custom', __( 'Advanced Supports', 'pods' ), __( 'Comma-separated list of custom "supports" values to pass to register_post_type.', 'pods' ) ); ?>
483 <?php echo PodsForm::field( 'supports_custom', pods_v( 'supports_custom', $pod, '' ), 'text' ); ?>
484 </div>
485 <div class="pods-field-option-group">
486 <p class="pods-field-option-group-label">
487 <?php _e( 'Built-in Taxonomies', 'pods' ); ?>
488 </p>
489
490 <div class="pods-pick-values pods-pick-checkbox">
491 <ul>
492 <?php
493 foreach ( (array) $field_settings[ 'pick_object' ][ __( 'Taxonomies', 'pods' ) ] as $taxonomy => $label ) {
494 $taxonomy = pods_str_replace( 'taxonomy-', '', $taxonomy, 1 );
495 ?>
496 <li>
497 <div class="pods-field pods-boolean">
498 <?php echo PodsForm::field( 'built_in_taxonomies_' . $taxonomy, pods_v( 'built_in_taxonomies_' . $taxonomy, $pod, false ), 'boolean', array( 'boolean_yes_label' => $label . ' <small>(' . $taxonomy . ')</small>' ) ); ?>
499 </div>
500 </li>
501 <?php
502 }
503 ?>
504 </ul>
505 </div>
506 </div>
507 <?php
508 }
509 elseif ( 'taxonomy' == $pod_type && strlen( pods_v( 'object', $pod ) ) < 1 ) {
510 $fields = $tab_options[ 'advanced' ];
511 $field_options = PodsForm::fields_setup( $fields );
512 $field = $pod;
513
514 include PODS_DIR . 'ui/admin/field-option.php';
515 ?>
516 <div class="pods-field-option-group">
517 <p class="pods-field-option-group-label">
518 <?php _e( 'Associated Post Types', 'pods' ); ?>
519 </p>
520
521 <div class="pods-pick-values pods-pick-checkbox">
522 <ul>
523 <?php
524 foreach ( (array) $field_settings[ 'pick_object' ][ __( 'Post Types', 'pods' ) ] as $post_type => $label ) {
525 $post_type = pods_str_replace( 'post_type-', '', $post_type, 1 );
526 $label = str_replace( array( '(', ')' ), array( '<small>(', ')</small>' ), $label );
527 ?>
528 <li>
529 <div class="pods-field pods-boolean">
530 <?php echo PodsForm::field( 'built_in_post_types_' . $post_type, pods_v( 'built_in_post_types_' . $post_type, $pod, false ), 'boolean', array( 'boolean_yes_label' => $label ) ); ?>
531 </div>
532 </li>
533 <?php
534 }
535 ?>
536 <li>
537 <div class="pods-field pods-boolean">
538 <?php echo PodsForm::field( 'built_in_post_types_attachment', pods_v( 'built_in_post_types_attachment', $pod, false ), 'boolean', array( 'boolean_yes_label' => 'Media <small>(attachment)</small>' ) ); ?>
539 </div>
540 </li>
541 </ul>
542 </div>
543 </div>
544 <?php
545 }
546 elseif ( 'pod' == $pod_type ) {
547 ?>
548 <div class="pods-field-option">
549 <?php echo PodsForm::label( 'detail_url', __( 'Detail Page URL', 'pods' ), __( 'help', 'pods' ) ); ?>
550 <?php echo PodsForm::field( 'detail_url', pods_v( 'detail_url', $pod ), 'text' ); ?>
551 </div>
552
553 <?php
554 $index_fields = array( 'id' => 'ID' );
555
556 foreach ( $pod[ 'fields' ] as $field ) {
557 if ( !in_array( $field[ 'type' ], $tableless_field_types, true ) )
558 $index_fields[ $field[ 'name' ] ] = $field[ 'label' ];
559 }
560 ?>
561
562 <div class="pods-field-option">
563 <?php echo PodsForm::label( 'pod_index', __( 'Title Field', 'pods' ), __( 'If you delete the "name" field, we need to specify the field to use as your primary title field. This field will serve as an index of your content. Most commonly this field represents the name of a person, place, thing, or a summary field.', 'pods' ) ); ?>
564 <?php echo PodsForm::field( 'pod_index', pods_v( 'pod_index', $pod, 'name' ), 'pick', array( 'data' => $index_fields ) ); ?>
565 </div>
566
567 <div class="pods-field-option">
568 <?php echo PodsForm::label( 'hierarchical', __( 'Hierarchical', 'pods' ), __( 'help', 'pods' ) ); ?>
569 <?php echo PodsForm::field( 'hierarchical', (int) pods_v( 'hierarchical', $pod, 0 ), 'boolean', array( 'dependency' => true, 'boolean_yes_label' => '' ) ); ?>
570 </div>
571
572 <?php
573 $hierarchical_fields = array();
574
575 foreach ( $pod[ 'fields' ] as $field ) {
576 if ( 'pick' == $field[ 'type' ] && 'pod' == pods_v( 'pick_object', $field ) && $pod[ 'name' ] == pods_v( 'pick_val', $field ) && 'single' == pods_v( 'pick_format_type', $field[ 'options' ] ) )
577 $hierarchical_fields[ $field[ 'name' ] ] = $field[ 'label' ];
578 }
579
580 if ( empty( $hierarchical_fields ) )
581 $hierarchical_fields = array( '' => __( 'No Hierarchical Fields found', 'pods' ) );
582 ?>
583
584 <div class="pods-field-option pods-depends-on pods-depends-on-hierarchical">
585 <?php echo PodsForm::label( 'pod_parent', __( 'Hierarchical Field', 'pods' ), __( 'help', 'pods' ) ); ?>
586 <?php echo PodsForm::field( 'pod_parent', pods_v( 'pod_parent', $pod, 'name' ), 'pick', array( 'data' => $hierarchical_fields ) ); ?>
587 </div>
588
589 <?php
590 if ( class_exists( 'Pods_Helpers' ) ) {
591 ?>
592
593 <div class="pods-field-option">
594 <?php
595 $pre_save_helpers = array( '' => '-- Select --' );
596
597 $helpers = $api->load_helpers( array( 'options' => array( 'helper_type' => 'pre_save' ) ) );
598
599 foreach ( $helpers as $helper ) {
600 $pre_save_helpers[ $helper[ 'name' ] ] = $helper[ 'name' ];
601 }
602
603 echo PodsForm::label( 'pre_save_helpers', __( 'Pre-Save Helper(s)', 'pods' ), __( 'help', 'pods' ) );
604 echo PodsForm::field( 'pre_save_helpers', pods_v( 'pre_save_helpers', $pod ), 'pick', array( 'data' => $pre_save_helpers ) );
605 ?>
606 </div>
607 <div class="pods-field-option">
608 <?php
609 $post_save_helpers = array( '' => '-- Select --' );
610
611 $helpers = $api->load_helpers( array( 'options' => array( 'helper_type' => 'post_save' ) ) );
612
613 foreach ( $helpers as $helper ) {
614 $post_save_helpers[ $helper[ 'name' ] ] = $helper[ 'name' ];
615 }
616
617 echo PodsForm::label( 'post_save_helpers', __( 'Post-Save Helper(s)', 'pods' ), __( 'help', 'pods' ) );
618 echo PodsForm::field( 'post_save_helpers', pods_v( 'post_save_helpers', $pod ), 'pick', array( 'data' => $post_save_helpers ) );
619 ?>
620 </div>
621 <div class="pods-field-option">
622 <?php
623 $pre_delete_helpers = array( '' => '-- Select --' );
624
625 $helpers = $api->load_helpers( array( 'options' => array( 'helper_type' => 'pre_delete' ) ) );
626
627 foreach ( $helpers as $helper ) {
628 $pre_delete_helpers[ $helper[ 'name' ] ] = $helper[ 'name' ];
629 }
630
631 echo PodsForm::label( 'pre_delete_helpers', __( 'Pre-Delete Helper(s)', 'pods' ), __( 'help', 'pods' ) );
632 echo PodsForm::field( 'pre_delete_helpers', pods_v( 'pre_delete_helpers', $pod ), 'pick', array( 'data' => $pre_delete_helpers ) );
633 ?>
634 </div>
635 <div class="pods-field-option">
636 <?php
637 $post_delete_helpers = array( '' => '-- Select --' );
638
639 $helpers = $api->load_helpers( array( 'options' => array( 'helper_type' => 'post_delete' ) ) );
640
641 foreach ( $helpers as $helper ) {
642 $post_delete_helpers[ $helper[ 'name' ] ] = $helper[ 'name' ];
643 }
644
645 echo PodsForm::label( 'post_delete_helpers', __( 'Post-Delete Helper(s)', 'pods' ), __( 'help', 'pods' ) );
646 echo PodsForm::field( 'post_delete_helpers', pods_v( 'post_delete_helpers', $pod ), 'pick', array( 'data' => $post_delete_helpers ) );
647 ?>
648 </div>
649 <?php
650 }
651 }
652 ?>
653 </div>
654 <?php
655 }
656
657 foreach ( $tabs as $tab => $tab_label ) {
658 $tab = sanitize_title( $tab );
659
660 if ( in_array( $tab, array( 'manage-fields', 'labels', 'advanced', 'extra-fields' ), true ) || !isset( $tab_options[ $tab ] ) || empty( $tab_options[ $tab ] ) )
661 continue;
662 ?>
663 <div id="pods-<?php echo esc_attr( $tab ); ?>" class="pods-nav-tab pods-manage-field pods-dependency pods-submittable-fields">
664 <?php
665 $fields = $tab_options[ $tab ];
666 $field_options = PodsForm::fields_setup( $fields );
667 $field = $pod;
668
669 include PODS_DIR . 'ui/admin/field-option.php';
670 ?>
671 </div>
672 <?php
673 }
674
675 if ( isset( $tabs[ 'extra-fields' ] ) ) {
676 ?>
677 <div id="pods-extra-fields" class="pods-nav-tab">
678 <p><?php _e( 'Taxonomies do not support extra fields natively, but Pods can add this feature for you easily. Table based storage will operate in a way where each field you create for your content type becomes a field in a table.', 'pods' ); ?></p>
679
680 <p><?php echo sprintf( __( 'Enabling extra fields for this taxonomy will add a custom table into your database as <em>%s</em>.', 'pods' ), $wpdb->prefix . 'pods_' . pods_v( 'name', $pod ) ); ?></p>
681
682 <p><a href="https://pods.io/docs/comparisons/compare-storage-types/" target="_blank" rel="noopener noreferrer"><?php _e( 'Find out more', 'pods' ); ?> &raquo;</a></p>
683
684 <p class="submit">
685 <a href="<?php echo esc_url( pods_query_arg( array( 'enable_extra_fields' => 1 ) ) ); ?>" class="button-primary"><?php _e( 'Enable Extra Fields', 'pods' ); ?></a>
686 </p>
687 </div>
688 <?php
689 }
690 ?>
691 </div>
692 <!-- /#post-body-content -->
693
694 <div id="postbox-container-1" class="postbox-container pods_floatmenu">
695 <div id="side-info-field" class="inner-sidebar">
696 <div id="side-sortables">
697 <div id="submitdiv" class="postbox pods-no-toggle">
698 <h3><span><?php esc_html_e( 'Manage', 'pods' ); ?> <small>(<a href="<?php echo esc_url( pods_query_arg( array( 'action' . $obj->num => 'manage', 'id' . $obj->num => '' ) ) ); ?>">&laquo; <?php _e( 'Back to Manage', 'pods' ); ?></a>)
699 </small></span></h3>
700 <div class="inside">
701 <div class="submitbox" id="submitpost">
702 <div id="major-publishing-actions">
703 <div id="delete-action">
704 <a href="<?php echo esc_url( pods_query_arg( array( 'action' . $obj->num => 'delete', '_wpnonce' => wp_create_nonce( 'pods-ui-action-delete' ) ) ) ); ?>" class="submitdelete deletion pods-confirm" data-confirm="<?php _e( 'Are you sure you want to delete this Pod? All fields and data will be removed.', 'pods' ); ?>"> <?php _e( 'Delete', 'pods' ); ?> Pod </a>
705 </div>
706 <div id="publishing-action">
707 <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
708 <button class="button-primary" type="submit"><?php esc_html_e( 'Save Pod', 'pods' ); ?></button>
709 </div>
710 <div class="clear"></div>
711 </div>
712 </div>
713 </div>
714 </div>
715 <!-- /#submitdiv -->
716 <div class="pods-submittable-fields">
717 <?php do_meta_boxes( '_pods_pod', 'side', $pod_post ); ?>
718 </div>
719 </div>
720 </div>
721 </div>
722 </div>
723 <!-- /#post-body -->
724 </div>
725 <!-- /poststuff -->
726 </form>
727 </div>
728 <script type="text/javascript">
729 <?php
730 $pods_field_types = array();
731
732 foreach ( $field_types as $field_type => $field_type_data ) {
733 $pods_field_types[] = "'" . esc_js( $field_type ) . "' : '" . esc_js( $field_type_data[ 'label' ] ) . "'";
734 }
735
736 $pods_pick_objects = array();
737
738 $pick_object_singular = array(
739 __( 'Pods', 'pods' ) => __( 'Pod', 'pods' ),
740 __( 'Post Types', 'pods' ) => __( 'Post Type', 'pods' ),
741 __( 'Taxonomies', 'pods' ) => __( 'Taxonomy', 'pods' )
742 );
743
744 foreach ( $field_settings[ 'pick_object' ] as $object => $object_label ) {
745 if ( is_array( $object_label ) ) {
746 if ( isset( $pick_object_singular[ $object ] ) )
747 $object = ' <small>(' . esc_js( $pick_object_singular[ $object ] ) . ')</small>';
748 else
749 $object = '';
750
751 foreach ( $object_label as $sub_object => $sub_object_label ) {
752 $pods_pick_objects[] = "'" . esc_js( $sub_object ) . "' : '" . esc_js( $sub_object_label ) . $object . "'";
753 }
754 }
755 elseif ( '-- Select --' != $object_label )
756 $pods_pick_objects[] = "'" . esc_js( $object ) . "' : '" . esc_js( $object_label ) . "'";
757 }
758 ?>
759 var pods_field_types = {
760 <?php echo implode( ",\n ", $pods_field_types ); ?>
761 };
762 var pods_pick_objects = {
763 <?php echo implode( ",\n ", $pods_pick_objects ); ?>
764 };
765
766 jQuery( function ( $ ) {
767 $( document ).Pods( 'validate' );
768 $( document ).Pods( 'submit' );
769 $( document ).Pods( 'sluggable' );
770 $( document ).Pods( 'sortable' );
771 $( document ).Pods( 'collapsible', $( 'tbody.pods-manage-list tr.flexible-row div.pods-manage-field' ) );
772 $( document ).Pods( 'toggled' );
773 $( document ).Pods( 'tabbed' );
774 $( document ).Pods( 'nav_tabbed' );
775 $( document ).Pods( 'dependency' );
776 $( document ).Pods( 'flexible', $( 'tbody.pods-manage-list tr.flexible-row' ) );
777 $( document ).Pods( 'confirm' );
778 $( document ).Pods( 'exit_confirm' );
779 } );
780
781 var pods_admin_submit_callback = function ( id ) {
782 id = parseInt( id );
783 var thank_you = '<?php echo pods_slash( pods_query_arg( array( 'do' => 'save' ) ) ); ?>';
784
785 document.location = thank_you.replace( 'X_ID_X', id );
786 };
787
788 var sisterFieldsProcessing = {};
789
790 /*global PodsDFV */
791 var pods_sister_field = function ( $el ) {
792 var postData, relatedPodName, selectedValue, $container;
793 var fieldModel, collection, selectField;
794
795 var id = $el.closest( 'tr.pods-manage-row' ).data( 'row' );
796 var fieldKey = id + '_' + $el.prop( 'id' );
797
798 if ( 'undefined' != typeof sisterFieldsProcessing[ fieldKey ] && true == sisterFieldsProcessing[ fieldKey ] ) {
799 return;
800 }
801
802 relatedPodName = jQuery( '#pods-form-ui-field-data-' + id + '-pick-object' ).val() + '';
803 selectedValue = jQuery( '#pods-form-ui-field-data-' + id + '-sister-id' ).val() + '';
804 $container = $el.find( '.pods-sister-field' );
805
806 if ( 0 != relatedPodName.indexOf( 'pod-' )
807 && 0 != relatedPodName.indexOf( 'post_type-' )
808 && 0 != relatedPodName.indexOf( 'taxonomy-' )
809 && 0 != relatedPodName.indexOf( 'user' )
810 && 0 != relatedPodName.indexOf( 'media' )
811 && 0 != relatedPodName.indexOf( 'comment' ) ) {
812
813 sisterFieldsProcessing[ fieldKey ] = false;
814 return;
815 }
816
817 sisterFieldsProcessing[ fieldKey ] = true;
818
819 fieldModel = new PodsDFV.models.PodsDFVFieldModel( {
820 htmlAttr: {
821 id : "pods-form-ui-field-data-" + id + "-sister-id",
822 "class" : "pods-form-ui-field pods-form-ui-field-type-pick pods-form-ui-field-name-field-data-sister-id",
823 name : "field_data[" + id + "][sister_id]",
824 name_clean: "field-data-sister-id"
825 }
826 } );
827
828 collection = new PodsDFV.models.RelationshipCollection( {
829 id : "",
830 name: <?php echo json_encode( __( 'Loading available fields..', 'pods' ) ); ?>
831 } );
832
833 selectField = new PodsDFV.fields.Pick( {
834 el : $container,
835 model : fieldModel,
836 collection: collection
837 } );
838
839 selectField.render();
840
841 postData = {
842 action : 'pods_admin',
843 method : 'load_sister_fields',
844 _wpnonce : '<?php echo esc_js( wp_create_nonce( 'pods-load_sister_fields' ) ); ?>',
845 pod : '<?php echo esc_js( pods_v( 'name', $pod ) ); ?>',
846 related_pod: relatedPodName
847 };
848
849 jQuery.ajax( {
850 type : 'POST',
851 dataType: 'html',
852 url : ajaxurl + '?pods_ajax=1',
853 cache : false,
854 data : postData,
855 success : function ( d ) {
856 var json, newItems, fieldID, fieldName;
857
858 newItems = [];
859
860 if ( -1 == d.indexOf( '<e>' ) && -1 == d.indexOf('</e>') && -1 != d && '[]' != d ) {
861
862 json = d.match( /{.*}$/ );
863
864 if ( null !== json && 0 < json.length ) {
865 json = jQuery.parseJSON( json[ 0 ] );
866 } else {
867 json = {};
868 }
869
870 if ( 'object' != typeof json || ! jQuery.isEmptyObject( json ) ) {
871
872 if ( 'object' != typeof json ) {
873 if ( window.console ) console.log( d );
874 if ( window.console ) console.log( json );
875
876 newItems.push( {
877 id: "",
878 name: <?php echo json_encode( __( 'There was a server error with your AJAX request.', 'pods' ) ); ?>
879 } );
880
881 } else {
882 newItems.push( {
883 id : "",
884 name: <?php echo json_encode( __( '-- Select Related Field --', 'pods' ) ); ?>
885 } );
886
887 for ( fieldID in json ) {
888 if ( json.hasOwnProperty( fieldID ) ) {
889 fieldName = json[ fieldID ];
890
891 newItems.push( {
892 id : fieldID,
893 name : fieldName,
894 selected: (selectedValue == fieldID)
895 } );
896 }
897 }
898 }
899 collection.reset( newItems );
900 jQuery( '#pods-form-ui-field-data-' + id + '-sister-id' ).val( selectedValue );
901
902 } else {
903 // None found
904 collection.reset( {
905 id : "",
906 name: <?php echo json_encode( __( 'No Related Fields Found', 'pods' ) ); ?>
907 } );
908 }
909
910 } else {
911 // None found
912 collection.reset( {
913 id : "",
914 name: <?php echo json_encode( __( 'No Related Fields Found', 'pods' ) ); ?>
915 } );
916 }
917
918 sisterFieldsProcessing[ fieldKey ] = false;
919 },
920 error : function () {
921 // None found
922 collection.reset( {
923 id : "",
924 name: <?php echo json_encode( __( 'No Related Fields Found', 'pods' ) ); ?>
925 } );
926
927 sisterFieldsProcessing[ fieldKey ] = false;
928 }
929 } );
930 }
931 </script>
932