/** * Loader * * @param string URL path to this directory */ public static final function load($url_path = null) { // Set URL path for assets if (!is_null($url_path)) { self::$url_path = $url_path; } else { self::$url_path = plugin_dir_url(__FILE__); } // Supported field types self::$types = apply_filters('form_field_types', self::$types); }
/** * Print fields * * @since 0.1.0 * @access protected * @uses add_action() Calls 'menu_icons_before_fields' hook * @uses add_action() Calls 'menu_icons_after_fields' hook * @wp_hook action menu_item_custom_fields/10/3 * * @param object $item Menu item data object. * @param int $depth Nav menu depth. * @param array $args Menu item args. * @param int $id Nav menu ID. * * @return string Form fields */ public static function _fields($id, $item, $depth, $args) { if (!class_exists('Kucrut_Form_Field')) { require_once Menu_Icons::get('dir') . 'includes/library/form-fields.php'; } $type_ids = array_values(array_filter(array_keys(self::_get_types()))); $input_id = sprintf('menu-icons-%d', $item->ID); $input_name = sprintf('menu-icons[%d]', $item->ID); $current = wp_parse_args(Menu_Icons::get_meta($item->ID), Menu_Icons_Settings::get_menu_settings(Menu_Icons_Settings::get_current_menu_id())); ?> <div class="field-icon description-wide menu-icons-wrap"> <?php /** * Allow plugins/themes to inject HTML before menu icons' fields * * @param object $item Menu item data object. * @param int $depth Nav menu depth. * @param array $args Menu item args. * @param int $id Nav menu ID. * */ do_action('menu_icons_before_fields', $item, $depth, $args, $id); ?> <div class="easy"> <p class="description submitbox"> <label><?php esc_html_e('Icon:', 'menu-icons'); ?> </label> <?php printf('<a id="menu-icons-%1$d-select" class="_select" title="%2$s" data-id="%1$d" data-text="%2$s">%3$s</a>', esc_attr__($item->ID), esc_attr__('Select', 'menu-icons'), self::_get_preview($item->ID, $current)); ?> <?php printf('<a id="menu-icons-%1$s-remove" class="_remove hidden submitdelete" data-id="%1$s">%2$s</a>', esc_attr($item->ID), esc_html__('Remove', 'menu-icons')); ?> </p> </div> <div class="original hidden"> <p class="description"> <label for="<?php echo esc_attr($input_id); ?> -type"><?php esc_html_e('Icon type', 'menu-icons'); ?> </label> <?php printf('<select id="%s-type" name="%s[type]" class="_type hasdep" data-dep-scope="div.menu-icons-wrap" data-dep-children=".field-icon-child" data-key="type">', esc_attr($input_id), esc_attr($input_name)); ?> <?php foreach (self::_get_types() as $id => $props) { ?> <?php printf('<option value="%s"%s>%s</option>', esc_attr($id), selected(isset($current['type']) && $id === $current['type'], true, false), esc_html($props['label'])); ?> <?php } ?> </select> </p> <?php foreach (self::_get_types() as $props) { ?> <?php if (!empty($props['field_cb']) && is_callable($props['field_cb'])) { ?> <?php call_user_func_array($props['field_cb'], array($item->ID, $current)); ?> <?php } ?> <?php } ?> <?php foreach (self::_get_fields($current) as $field) { $field = Kucrut_Form_Field::create($field, array('keys' => array('menu-icons', $item->ID), 'inline_description' => true)); ?> <p class="description field-icon-child" data-dep-on='<?php echo wp_json_encode($type_ids); ?> '> <?php printf('<label for="%s">%s</label>', esc_attr($field->id), esc_html($field->label)); ?> <?php $field->render(); ?> </p> <?php } ?> </div> <?php /** * Allow plugins/themes to inject HTML after menu icons' fields * * @param object $item Menu item data object. * @param int $depth Nav menu depth. * @param array $args Menu item args. * @param int $id Nav menu ID. * */ do_action('menu_icons_after_fields', $item, $depth, $args, $id); ?> </div> <?php }
/** * load option font icons * @param WP_Widget $t: widget object * @param array $instance: widget data */ function do_widget_feature($t, $instance = array()) { //valid if (!class_exists('Menu_Icons_Admin_Nav_Menus', false)) { echo 'Không tìm thấy class (Menu_Icons_Admin_Nav_Menus)'; return; } $this->widget_instance = $instance; $item_id = 10000 + (int) $t->number; $input_id = sprintf('menu-icons-%d', $item_id); $input_name = sprintf('menu-icons[%d]', $item_id); $type_ids = array_values(array_filter(array_keys(Menu_Icons_Admin_Nav_Menus::_get_types()))); $current = array('hide_label' => '', 'position' => 'before', 'image_size' => 'full', 'vertical_align' => 'middle', 'font_size' => 1.9); //field values $font_icon = $this->get_field_value('font_icon'); //font icon $font_icon_obj = self::decode_icon($font_icon); $title = AWC_WidgetFeature_title_link::get_widget_title($t, $instance); //find widget title echo '<div class="awc-widget-feature-fonticons menu-icons-wrap"><fieldset><legend>Biểu tượng</legend>'; printf('<a id="menu-icons-%1$d-select" class="_select button" href="javascript:void(0)" title="%2$s" data-id="%1$d" data-text="%2$s">%3$s</a>', esc_attr__($item_id), esc_attr(HW_Menu_Icons::render_icon($font_icon_obj, 'Chọn')), HW_Menu_Icons::render_icon($font_icon_obj, 'Chọn')); echo 'Biểu tượng cho tiêu đề widget'; echo '<p><em>Chú ý: Đặt tiêu đề widget và nhấn lưu widget một lần nữa.</em></p>'; //require one or more field to indicate this feature form' fields in order to call 'validation' method. echo '<input type="hidden" name="' . $this->get_field_name('font_icon') . '" id="' . $this->get_field_id('font_icon') . '" value="' . $font_icon . '"/>'; echo '<input type="hidden" name="' . $this->get_field_name('widget_id') . '" id="' . $this->get_field_id('widget_id') . '" value="' . $item_id . '"/>'; ?> <!-- hidden fields --> <input type="hidden" name="<?php echo $this->get_field_name('widget_name'); ?> " id="<?php echo $this->get_field_id('widget_name'); ?> " value="<?php echo $t->id_base; ?> "/> <input type="hidden" name="<?php echo $this->get_field_name('title'); ?> " id="<?php echo $this->get_field_id('title'); ?> " value="<?php echo $title; ?> "/> <div class="original hidden"> <?php ?> <p class="description"> <label for="<?php echo esc_attr($input_id); ?> -type"><?php esc_html_e('Icon type'); ?> </label> <?php printf('<select id="%s-type" name="%s[type]" class="_type hasdep" data-dep-scope="div.menu-icons-wrap" data-dep-children=".field-icon-child" data-key="type">', esc_attr($input_id), esc_attr($input_name)); ?> <?php foreach (Menu_Icons_Admin_Nav_Menus::_get_types() as $id => $props) { ?> <?php printf('<option value="%s"%s>%s</option>', esc_attr($id), selected(isset($current['type']) && $id === $current['type'], true, false), esc_html($props['label'])); ?> <?php } ?> </select> </p> <?php ?> <?php foreach (Menu_Icons_Admin_Nav_Menus::_get_types() as $props) { ?> <?php if (!empty($props['field_cb']) && is_callable($props['field_cb'])) { ?> <?php call_user_func_array($props['field_cb'], array($item_id, $current)); ?> <?php } ?> <?php } ?> <?php foreach (Menu_Icons_Admin_Nav_Menus::_get_fields($current) as $field) { $field = Kucrut_Form_Field::create($field, array('keys' => array('menu-icons', $item_id), 'inline_description' => true)); ?> <p class="description field-icon-child" data-dep-on='<?php echo json_encode($type_ids); ?> '> <?php printf('<label for="%s">%s</label>', esc_attr($field->id), esc_html($field->label)); ?> <?php $field->render(); ?> </p> <?php } ?> </div> <?php echo '</fieldset></div>'; }
/** * Get processed settings fields * * @since 0.3.0 * @access private * @return array */ private static function _get_fields() { if (!class_exists('Kucrut_Form_Field')) { require_once Menu_Icons::get('dir') . 'includes/library/form-fields.php'; } $keys = array('menu-icons', 'settings'); $sections = self::get_fields(); foreach ($sections as &$section) { $_keys = array_merge($keys, array($section['id'])); $_args = array_merge(array('keys' => $_keys), $section['args']); foreach ($section['fields'] as &$field) { $field = Kucrut_Form_Field::create($field, $_args); } unset($field); } unset($section); return $sections; }