/** * Rendering Meta Interface * @access public * @since 1.0.0 * @param array $meta_box * @return void * */ function get_meta_interface($meta_box, $name_trailing = true) { $defaults = array('type' => '', 'std' => '', 'class' => '', 'title' => '', 'options' => '', 'repeat_num' => '', 'repeat_child' => ''); $meta_box = wp_parse_args($meta_box, $defaults); extract($meta_box); $id = $name; if ($name_trailing) { $name = $name . '[]'; } if (!empty($value)) { if (!is_array($value)) { $value = empty($value) ? esc_html($std) : esc_html($value); } } else { $value = esc_html($std); } switch ($meta_box['type']) { case "text": ?> <div class="bon-builder-meta-body"> <label><?php echo $title; ?> </label> <div class="bon-builder-meta-input"> <input type="text" class="<?php echo $class; ?> " name="<?php echo $name; ?> " value="<?php echo $value; ?> " /> <?php if (isset($description)) { ?> <span class="bon-builder-meta-description"><?php echo $description; ?> </span> <?php } ?> </div> </div> <?php break; case "upload": ?> <div class="bon-builder-meta-body"> <label><?php echo $title; ?> </label> <div class="bon-builder-meta-input"> <input name="<?php echo $name; ?> " type="text" class="upload_media_text_meta <?php echo $class; ?> " value="<?php echo $value; ?> " /> <a href="#" class="bon-builder-upload-button button"><?php _e('Upload Image', 'bon-toolkit'); ?> </a> <?php if (isset($description)) { ?> <span class="bon-builder-meta-description"><?php echo $description; ?> </span> <?php } ?> </div> </div> <?php break; case "textarea": ?> <div class="bon-builder-meta-body"> <label><?php echo $title; ?> </label> <div class="bon-builder-meta-input"> <textarea class="<?php echo $class; ?> " name="<?php echo $name; ?> " ><?php echo stripslashes($value); ?> </textarea> <?php if (isset($description)) { ?> <span class="bon-builder-meta-description"><?php echo $description; ?> </span> <?php } ?> </div> </div> <?php break; case "select": ?> <div class="bon-builder-meta-body"> <label><?php echo $title; ?> </label> <div class="bon-builder-meta-input"> <select class="<?php echo $class; ?> " name="<?php echo $name; ?> "> <?php foreach ($options as $key_option => $option) { ?> <option value="<?php echo $key_option; ?> " <?php if ($key_option == esc_html($value)) { echo 'selected'; } ?> ><?php echo $option; ?> </option> <?php } ?> </select> <?php if (isset($description)) { ?> <span class="bon-builder-meta-description"><?php echo $description; ?> </span> <?php } ?> </div> </div> <?php break; case "info": ?> <div class="bon-builder-meta-body"> <div class="bon-builder-meta-description"> <?php if (isset($description)) { ?> <strong><span class="bon-builder-meta-description big-desc"><?php echo $description; ?> </span></strong> <?php } ?> </div> </div> <?php break; case "repeatable": ?> <div class="bon-builder-elements-meta-body"> <div class="bon-builder-meta-repeat"> <input type="hidden" id="repeat-count" name="<?php echo $repeat_num; ?> []" value="<?php echo empty($value) ? 1 : count($value); ?> " /> <div class="bon-builder-added-tab" id="bon-builder-added-tab"> <ul> <?php if (!empty($repeat_child)) { if (!empty($value) && is_array($value)) { foreach ($value as $child_val) { ?> <li> <?php $i = 0; foreach ($repeat_child as $child_key => $child_meta) { $child_meta['value'] = $child_val[$child_key]; $child_meta['name'] = $meta_box['name'] . '[' . $child_meta['name'] . '][]'; $this->get_meta_interface($child_meta, false); } ?> <div class="bon-builder-repeat-action"> <a id="bon-builder-add-child" title="<?php _e('Add Field', 'bon-toolkit'); ?> " class="bon-builder-add-child button">+</a> <a class="bon-builder-remove-child button" title="<?php _e('Remove Field', 'bon-toolkit'); ?> " >-</a> </div> </li> <?php $i++; } } else { ?> <li> <?php $i = 0; foreach ($repeat_child as $child) { $child['name'] = $meta_box['name'] . '[' . $child['name'] . '][]'; $this->get_meta_interface($child, false); $i++; } ?> <div class="bon-builder-repeat-action"> <a id="bon-builder-add-child" title="<?php _e('Add Field', 'bon-toolkit'); ?> " class="bon-builder-add-child button">+</a> <a class="bon-builder-remove-child button" title="<?php _e('Remove Field', 'bon-toolkit'); ?> " >-</a> </div> </li> <?php } } ?> </ul> </div> </div> </div> <?php break; case "icon": ?> <?php if (function_exists('bon_icon_select_field')) { ?> <div class="bon-builder-meta-body" id="bon-builder-meta-body-<?php echo $id; ?> "> <label><?php echo $title; ?> </label> <div class="bon-builder-meta-input"> <?php echo bon_icon_select_field($id, $name, '#bon-builder-meta-modal #bon-builder-meta-body-' . $id, esc_attr($value)); ?> </div> </div> <?php } else { ?> <div class="bon-builder-meta-body"> <label><?php echo $title; ?> </label> <div class="bon-builder-meta-input"> <input type="text" class="<?php echo $class; ?> " name="<?php echo $name; ?> " value="<?php echo $value; ?> " /> <?php if (isset($description)) { ?> <span class="bon-builder-meta-description"><?php echo $description; ?> </span> <?php } ?> </div> </div> <?php } ?> <?php break; } }
/** * Adding option field to options block * * @since 0.1.0 * @access public * @return void */ function add_option($key, $item, $args) { $adv_key = BON_ADVANCED_MENU_KEY; $defaults = array('level' => '0-plus', 'desc' => '', 'label' => '', 'type' => 'text', 'options' => array(), 'std' => ''); apply_filters('bon_nav_menu_option_defaults', $defaults); $args = wp_parse_args($args, $defaults); extract($args); $val = $this->get_option($item->ID, $key); if ($val == '') { $val = $std; } $desc = $this->get_desc($label, $desc); $id = 'edit-menu-item-' . $key . '-' . $item->ID; $name = $adv_key . '[' . $key . '][' . $item->ID . ']'; ?> <div class="bon-nav-menu-field description description-wide level-<?php echo $level; ?> "> <label for="<?php echo $id; ?> "> <?php switch ($type) { case 'text': echo $desc; echo '<input class="widefat bon-edit-menu-item" type="text" value="' . esc_attr($val) . '" id="' . $id . '" name="' . $name . '" />'; break; case 'textarea': echo $desc; echo '<textarea class="widefat bon-edit-menu-item" id="' . $id . '" name="' . $name . '">' . wp_kses_data($val) . '</textarea>'; break; case 'select': echo $desc; echo '<select class="widefat bon-edit-menu-item" id="' . $id . '" name="' . $name . '">'; foreach ($options as $opt_key => $opt_label) { echo '<option value="' . $opt_key . '" ' . selected($val, $opt_key, false) . ' >' . $opt_label . '</option>'; } echo '</select>'; break; case 'checkbox': echo '<input type="checkbox" class="bon-edit-menu-item" id="' . $id . '" name="' . $name . '" value="1" ' . checked($val, 1, false) . '/>'; echo $desc; break; case 'upload': echo $desc; $class = ''; if ($val) { $class = ' has-file'; } echo '<span class="bon-edit-menu-fieldset">'; echo '<input type="text" class="bon-edit-menu-item bon-edit-menu-upload' . $class . '" value="' . esc_attr($val) . '" id="' . $id . '" placeholder="' . __('No file chosen', 'bon') . '" name="' . $name . '" />'; if (function_exists('wp_enqueue_media')) { if ($val == '') { echo '<input data-choose="' . __('Choose an image', 'bon') . '" data-update="' . __('Use this image', 'bon') . '" id="upload-' . $id . '" class="upload-button button" type="button" value="' . __('Upload', 'bon') . '" />' . "\n"; } else { echo '<input id="remove-edit-menu-item-' . $item->ID . '" class="remove-file button" type="button" value="' . __('Remove', 'bon') . '" />' . "\n"; } } echo '<span class="bon-edit-menu-screenshot" id="edit-menu-item-' . $item->ID . '-image">' . "\n"; $image = preg_match('/(^.*\\.jpg|jpeg|png|gif|ico*)/i', $val); $img_cls = ''; if ($val == '') { $img_cls = 'no-image'; } $remove = '<a class="remove-image ' . $img_cls . '"><i class="dashicons dashicons-no"></i></a>'; echo '<img class="' . $img_cls . '" src="' . $val . '" alt="" />' . $remove . ''; echo '</span>' . "\n"; echo '</span>'; break; case 'icon': echo $desc; echo bon_icon_select_field($id, $name, 'li#menu-item-' . $item->ID, esc_attr($val), array('bon-edit-menu-fieldset'), array('bon-edit-menu-item', 'bon-edit-menu-icon')); break; case 'editor': echo $desc; echo '<input type="button" class="button bon-menu-open-editor" data-button-submit="' . __('Save Content', 'bon') . '" data-dialog-title="' . __('Edit Custom Content', 'bon') . '" data-id="' . $item->ID . '" value="' . __('Edit Custom Content', 'bon') . '"/>'; echo '<textarea class="widefat bon-edit-menu-item bon-textarea-editor" id="' . $id . '" name="' . $name . '">' . $val . '</textarea>'; break; } ?> </label></div> <?php }