Overview

Classes

  • Papi_Admin
  • Papi_Admin_Ajax
  • Papi_Admin_Assets
  • Papi_Admin_Management_Pages
  • Papi_Admin_Menu
  • Papi_Admin_Meta_Box
  • Papi_Admin_Meta_Box_Tabs
  • Papi_Admin_Option_Handler
  • Papi_Admin_Post_Handler
  • Papi_Admin_View
  • Papi_Attachment_Type
  • Papi_Conditional_Rules
  • Papi_Container
  • Papi_Core_Autoload
  • Papi_Core_Conditional
  • Papi_Core_Conditional_Rule
  • Papi_Core_Data_Handler
  • Papi_Core_Page
  • Papi_Core_Property
  • Papi_Core_Type
  • Papi_Loader
  • Papi_Option_Page
  • Papi_Option_Type
  • Papi_Page_Type
  • Papi_Page_Type_Meta
  • Papi_Porter
  • Papi_Porter_Driver
  • Papi_Porter_Driver_Core
  • Papi_Post_Page
  • Papi_Property
  • Papi_Property_Bool
  • Papi_Property_Checkbox
  • Papi_Property_Color
  • Papi_Property_Datetime
  • Papi_Property_Divider
  • Papi_Property_Dropdown
  • Papi_Property_Editor
  • Papi_Property_Email
  • Papi_Property_File
  • Papi_Property_Flexible
  • Papi_Property_Gallery
  • Papi_Property_Hidden
  • Papi_Property_Html
  • Papi_Property_Image
  • Papi_Property_Link
  • Papi_Property_Number
  • Papi_Property_Post
  • Papi_Property_Radio
  • Papi_Property_Reference
  • Papi_Property_Relationship
  • Papi_Property_Repeater
  • Papi_Property_String
  • Papi_Property_Term
  • Papi_Property_Text
  • Papi_Property_Url
  • Papi_Property_User

Functions

  • current_page
  • papi
  • papi_action_delete_value
  • papi_action_include
  • papi_append_post_type_query
  • papi_body_class
  • papi_cache_delete
  • papi_cache_get
  • papi_cache_key
  • papi_cache_set
  • papi_camel_case
  • papi_cast_string_value
  • papi_convert_to_string
  • papi_current_user_is_allowed
  • papi_dashify
  • papi_delete_field
  • papi_delete_option
  • papi_delete_property_meta_value
  • papi_display_page_type
  • papi_doing_ajax
  • papi_esc_html
  • papi_f
  • papi_field
  • papi_field_shortcode
  • papi_field_value
  • papi_fields
  • papi_filter_conditional_rule_allowed
  • papi_filter_core_load_one_type_on
  • papi_filter_format_value
  • papi_filter_load_value
  • papi_filter_settings_directories
  • papi_filter_settings_only_page_type
  • papi_filter_settings_page_type_column_title
  • papi_filter_settings_show_page_type
  • papi_filter_settings_show_standard_page_type
  • papi_filter_settings_show_standard_page_type_in_filter
  • papi_filter_settings_sort_order
  • papi_filter_settings_standard_page_description
  • papi_filter_settings_standard_page_name
  • papi_filter_settings_standard_page_thumbnail
  • papi_filter_update_value
  • papi_from_property_array_slugs
  • papi_get_all_files_in_directory
  • papi_get_all_page_type_files
  • papi_get_all_page_types
  • papi_get_box_property
  • papi_get_class_name
  • papi_get_field
  • papi_get_file_path
  • papi_get_number_of_pages
  • papi_get_only_objects
  • papi_get_option
  • papi_get_options_and_properties
  • papi_get_or_post
  • papi_get_page
  • papi_get_page_new_url
  • papi_get_page_query_strings
  • papi_get_page_type
  • papi_get_page_type_base_path
  • papi_get_page_type_by_id
  • papi_get_page_type_by_post_id
  • papi_get_page_type_id
  • papi_get_page_type_key
  • papi_get_page_type_meta_value
  • papi_get_page_type_name
  • papi_get_page_type_template
  • papi_get_parent_post_id
  • papi_get_post_id
  • papi_get_post_type
  • papi_get_post_type_label
  • papi_get_post_types
  • papi_get_property_class_name
  • papi_get_property_meta_value
  • papi_get_property_options
  • papi_get_property_type
  • papi_get_property_type_key
  • papi_get_property_type_key_f
  • papi_get_qs
  • papi_get_sanitized_post
  • papi_get_slugs
  • papi_get_tab_options
  • papi_html_name
  • papi_html_tag
  • papi_include_template
  • papi_is_empty
  • papi_is_json
  • papi_is_method
  • papi_is_option_page
  • papi_is_option_type
  • papi_is_page_type
  • papi_is_property
  • papi_is_property_type_key
  • papi_is_rule
  • papi_management_page_type_render_box
  • papi_maybe_convert_to_array
  • papi_maybe_convert_to_object
  • papi_maybe_get_callable_value
  • papi_maybe_json_decode
  • papi_maybe_json_encode
  • papi_nl2br
  • papi_option_shortcode
  • papi_option_type_exists
  • papi_page_type_exists
  • papi_populate_properties
  • papi_property
  • papi_remove_papi
  • papi_remove_trailing_quotes
  • papi_render_html_tag
  • papi_render_properties
  • papi_render_property
  • papi_require_text
  • papi_required_html
  • papi_rule
  • papi_santize_data
  • papi_set_page_type_id
  • papi_setup_tabs
  • papi_slugify
  • papi_sort_order
  • papi_tab
  • papi_template
  • papi_template_include
  • papi_to_array
  • papi_to_property_array_slugs
  • papi_translate_keys
  • papi_underscorify
  • papi_update_field
  • papi_update_option
  • papi_update_property_meta_value
  • papi_with
  • papify
  • the_papi_field
  • the_papi_option
  • the_papi_page_type_name
  • Overview
  • Class
  1: <?php
  2: 
  3: /**
  4:  * Base property that implements the rendering of
  5:  * a property in WordPress admin.
  6:  */
  7: class Papi_Property extends Papi_Core_Property {
  8: 
  9:     /**
 10:      * Render property html.
 11:      */
 12:     public function html() {
 13:     }
 14: 
 15:     /**
 16:      * Render the property.
 17:      */
 18:     public function render() {
 19:         // Check so the property has a type and capabilities on the property.
 20:         if ( ! papi_current_user_is_allowed( $this->get_option( 'capabilities' ) ) ) {
 21:             return;
 22:         }
 23: 
 24:         // A disabled property should not be rendered.
 25:         if ( $this->disabled() ) {
 26:             return;
 27:         }
 28: 
 29:         // Only render if it's the right language if the definition exist.
 30:         if ( $this->get_option( 'lang' ) === strtolower( papi_get_qs( 'lang' ) ) ) {
 31:             $render = true;
 32:         } else {
 33:             $render = $this->get_option( 'lang' ) === false && papi_is_empty( papi_get_qs( 'lang' ) );
 34:         }
 35: 
 36:         if ( $this->display() ) {
 37:             $this->display = $this->render_is_allowed_by_rules();
 38:         }
 39: 
 40:         $this->render_row_html();
 41:         $this->render_hidden_html();
 42:         $this->render_rules_json();
 43:     }
 44: 
 45:     /**
 46:      * Render the property description.
 47:      */
 48:     protected function render_description_html() {
 49:         if ( papi_is_empty( $this->get_option( 'description' ) ) ) {
 50:             return;
 51:         }
 52: 
 53:         papi_render_html_tag( 'p', [
 54:             papi_nl2br( $this->get_option( 'description' ) )
 55:         ] );
 56:     }
 57: 
 58:     /**
 59:      * Output hidden input field that cointains which property is used.
 60:      */
 61:     protected function render_hidden_html() {
 62:         $slug = $this->get_option( 'slug' );
 63: 
 64:         if ( substr( $slug, - 1 ) === ']' ) {
 65:             $slug = substr( $slug, 0, - 1 );
 66:             $slug = papi_get_property_type_key( $slug );
 67:             $slug .= ']';
 68:         } else {
 69:             $slug = papi_get_property_type_key( $slug );
 70:         }
 71: 
 72:         $slug = papify( $slug );
 73: 
 74:         $options = $this->get_options();
 75:         $property_json = base64_encode( papi_maybe_json_encode( $options ) );
 76: 
 77:         papi_render_html_tag( 'input', [
 78:             'data-property' => strtolower( $this->get_option( 'type' ) ),
 79:             'name'          => $slug,
 80:             'type'          => 'hidden',
 81:             'value'         => $property_json
 82:         ] );
 83:     }
 84: 
 85:     /**
 86:      * Get label for the property.
 87:      */
 88:     protected function render_label_html() {
 89:         $title = $this->get_option( 'title' );
 90: 
 91:         papi_render_html_tag( 'label', [
 92:             'for'   => $this->html_id(),
 93:             'title' => trim(
 94:                 $title . ' ' . papi_require_text( $this->get_options() )
 95:             ),
 96:             $title,
 97:             papi_required_html( $this->get_options() )
 98:         ] );
 99:     }
100: 
101:     /**
102:      * Render property html.
103:      */
104:     protected function render_property_html() {
105:         papi_render_html_tag( 'div', [
106:             'class'         => 'papi-before-html ' . $this->get_option( 'before_class' ),
107:             'data-property' => $this->get_option( 'type' ),
108:             papi_maybe_get_callable_value( $this->get_option( 'before_html' ) )
109:         ] );
110: 
111:         $this->html();
112: 
113:         papi_render_html_tag( 'div', [
114:             'class'         => 'papi-after-html ' . $this->get_option( 'after_class' ),
115:             'data-property' => $this->get_option( 'type' ),
116:             papi_maybe_get_callable_value( $this->get_option( 'after_html' ) )
117:         ] );
118:     }
119: 
120:     /**
121:      * Render the final html that is displayed in the table.
122:      */
123:     protected function render_row_html() {
124:         $display_class = $this->display() ? '' : ' papi-hide';
125:         $rules_class   = papi_is_empty( $this->get_rules() ) ? '' : ' papi-rules-exists';
126:         $css_class     = trim( $display_class . $rules_class );
127: 
128:         if ( $this->get_option( 'raw' ) ) {
129:             echo sprintf( '<div class="%s">', $css_class );
130:             $this->render_property_html();
131:             echo '</div>';
132:         } else {
133:             ?>
134:             <tr class="<?php echo $css_class; ?>">
135:                 <?php if ( $this->get_option( 'sidebar' ) ): ?>
136:                     <td>
137:                         <?php
138:                             $this->render_label_html();
139:                             $this->render_description_html();
140:                         ?>
141:                     </td>
142:                 <?php endif; ?>
143:                 <td <?php echo $this->get_option( 'sidebar' ) ? '' : 'colspan="2"'; ?>>
144:                     <?php $this->render_property_html(); ?>
145:                 </td>
146:             </tr>
147:             <?php
148:         }
149:     }
150: 
151:     /**
152:      * Render Conditional rules as script tag with JSON.
153:      */
154:     protected function render_rules_json() {
155:         $rules = $this->get_rules();
156: 
157:         if ( empty( $rules ) ) {
158:             return;
159:         }
160: 
161:         $rules = $this->conditional->prepare_rules( $rules, $this );
162: 
163:         papi_render_html_tag( 'script', [
164:             'data-papi-rule-source-slug' => $this->html_name(),
165:             'data-papi-rules'            => 'true',
166:             'type'                       => 'application/json',
167:             json_encode( $rules )
168:         ] );
169:     }
170: }
171: 
API documentation generated by ApiGen