$lat, 'lng' => $long)); } $draggable = fansub_get_value_by_key($args, 'draggable', false); $marker_title = fansub_get_value_by_key($args, 'marker_title'); $post_id = fansub_get_value_by_key($args, 'post_id'); $scrollwheel = fansub_get_value_by_key($args, 'scrollwheel', false); if(empty($marker_title)) { if('vi' == $lang) { $marker_title = 'Di chuyển để tìm địa điểm!'; } else { $marker_title = __('Drag to find address!', 'fansub'); } } fansub_field_before($args); ?>
'google_maps', 'label' => '', 'field_callback' => 'fansub_field_input_hidden', 'value' => $google_maps)); fansub_field_after($args); } function fansub_field_before(&$args = array()) { //$container_class = isset($args['container_class']) ? $args['container_class'] : ''; $before = isset($args['before']) ? $args['before'] : ''; echo $before; $label = isset($args['label']) ? $args['label'] : ''; if(!empty($label)) { $class = isset($args['label_class']) ? $args['label_class'] : ''; fansub_field_label(array('for' => $args['id'], 'text' => $label, 'class' => $class)); } unset($args['label']); } function fansub_field_after($args = array()) { fansub_field_description($args); $after = isset($args['after']) ? $args['after'] : ''; $label = isset($args['label']) ? $args['label'] : ''; if(!empty($label)) { $class = isset($args['label_class']) ? $args['label_class'] : ''; fansub_field_label(array('for' => $args['id'], 'text' => $args['label'], 'class' => $class)); } echo $after; } function fansub_field_captcha($args = array()) { $lang = fansub_get_language(); fansub_sanitize_field_args($args); $captcha = new FANSUB_Captcha(); $id = isset($args['id']) ? $args['id'] : ''; if(fansub_string_empty($id)) { $id = 'fansub_captcha'; } $placeholder = isset($args['placeholder']) ? $args['placeholder'] : ('vi' == $lang) ? 'Nhập mã bảo mật' : __('Enter captcha code', 'fansub'); $class = isset($args['class']) ? $args['class'] : ''; $input_width = isset($args['input_width']) ? absint($args['input_width']) : 125; if(is_numeric($input_width) && '%' !== fansub_get_last_char($input_width)) { $input_width .= 'px'; } $name = fansub_get_value_by_key($args, 'name', 'captcha'); if(empty($name)) { $name = 'captcha'; fansub_transmit_id_and_name($id, $name); } fansub_add_string_with_space_before($class, 'fansub-captcha-code'); $args['id'] = $id; fansub_field_before($args); $image_url = $captcha->generate_image(); ?> isset($args['for']) ? fansub_sanitize_id($args['for']) : '', 'text' => isset($args['text']) ? $args['text'] : '', 'class' => isset($args['class']) ? $args['class'] : '' ); $html->set_attribute_array($atts); $attributes = isset($args['attributes']) ? $args['attributes'] : array(); $html->set_attribute_array($attributes); $html->output(); } function fansub_field_description($args = array()) { fansub_sanitize_field_args($args); $description = $args['description']; if(!empty($description)) { $id = $args['id']; if(!empty($id)) { $id .= '_description'; } $p = new FANSUB_HTML('p'); $p->set_text($description); $p->set_class('description'); $p->set_attribute('id', $id); $p->output(); } } function fansub_field_sanitize_args(&$args = array()) { return fansub_sanitize_field_args($args); } function fansub_field_sanitize_widget_args(&$args = array()) { $args['before'] = isset($args['before']) ? $args['before'] : '

'; $args['after'] = isset($args['after']) ? $args['after'] : '

'; $class = isset($args['class']) ? $args['class'] : ''; fansub_add_string_with_space_before($class, 'widefat'); $args['class'] = $class; $args['sanitize_id'] = false; return $args; } function fansub_field_sanitize_publish_box_args(&$args = array()) { $name = isset($args['name']) ? $args['name'] : ''; $class = 'misc-pub-section'; if(!empty($name)) { fansub_add_string_with_space_before($class, fansub_sanitize_file_name('misc-pub-'. $name)); } $args['before'] = isset($args['before']) ? $args['before'] : '
'; $args['after'] = isset($args['after']) ? $args['after'] : '
'; return $args; } function fansub_field_color_picker($args = array()) { fansub_sanitize_field_args($args); //$value = fansub_get_value_by_key($args, 'value'); $class = fansub_get_value_by_key($args, 'class'); fansub_add_string_with_space_before($class, 'fansub-color-picker'); $args['class'] = $class; $atts = fansub_get_value_by_key($args, 'attributes'); $atts['autocomplete'] = 'off'; $args['attributes'] = $atts; fansub_field_input($args); } function fansub_field_datetime_picker($args = array()) { fansub_sanitize_field_args($args); $class = fansub_get_value_by_key($args, 'class'); fansub_add_string_with_space_before($class, 'fansub-datetime-picker'); $min_date = fansub_get_value_by_key($args, 'min_date'); $max_date = fansub_get_value_by_key($args, 'max_date'); $date_format = fansub_get_value_by_key($args, 'date_format', fansub_get_date_format()); $value = fansub_get_value_by_key($args, 'value'); $args['class'] = $class; $atts = fansub_get_value_by_key($args, 'attributes'); $atts['autocomplete'] = 'off'; $atts['data-min-date'] = $min_date; $atts['data-max-date'] = $max_date; $atts['data-date-format'] = fansub_convert_datetime_format_to_jquery($date_format); $args['attributes'] = $atts; $args['type'] = 'text'; if(is_numeric($value) && $value > 0) { $value = date($date_format, $value); } if(is_numeric($value) && 0 == $value) { $value = ''; } $args['value'] = $value; fansub_field_input($args); } function fansub_field_sortable($args = array()) { fansub_sanitize_field_args($args); $value = isset($args['value']) ? $args['value'] : ''; $connect = isset($args['connect']) ? $args['connect'] : false; $class = isset($args['class']) ? $args['class'] : ''; fansub_add_string_with_space_before($class, 'sortable fansub-sortable'); if($connect) { fansub_add_string_with_space_before($class, 'connected-list'); } $items = isset($args['items']) ? $args['items'] : ''; fansub_field_before($args); $ul = new FANSUB_HTML('ul'); $ul->set_class($class); $ul->set_text($items); $ul->output(); if($connect) { fansub_add_string_with_space_before($class, 'connected-result'); $active_items = isset($args['active_items']) ? $args['active_items'] : ''; $ul_connect = new FANSUB_HTML('ul'); $ul_connect->set_class($class); $ul_connect->set_text($active_items); $ul_connect->output(); } $input_args = array( 'type' => 'hidden', 'name' => isset($args['name']) ? $args['name'] : '', 'value' => $value, 'class' => 'input-result', 'attributes' => array( 'autocomplete' => 'off' ) ); fansub_field_input($input_args); fansub_field_after($args); } function fansub_field_sortable_term($args = array()) { $value = isset($args['value']) ? $args['value'] : ''; $items = isset($args['items']) ? $args['items'] : ''; $connect = fansub_get_value_by_key($args, 'connect', false); $active_terms = fansub_json_string_to_array($value); $save_ids = array(); if($connect) { foreach($active_terms as $data) { $id = isset($data['id']) ? $data['id'] : ''; if(is_numeric($id)) { $save_ids[] = $id; } } } if(empty($items)) { $taxonomy = isset($args['taxonomy']) ? $args['taxonomy'] : 'category'; $term_args = isset($args['term_args']) ? $args['term_args'] : array(); $defaults = array( 'hide_empty' => false, 'exclude' => $save_ids ); $term_args = wp_parse_args($term_args, $defaults); $terms = fansub_get_terms($taxonomy, $term_args); if(!$connect) { $results = $active_terms; if(fansub_array_has_value($results)) { $new_lists = array(); foreach($results as $data) { $id = isset($data['id']) ? $data['id'] : ''; $dtax = fansub_get_value_by_key($data, 'taxonomy'); if(!fansub_id_number_valid($id) || empty($dtax)) { continue; } $item = get_term($id, $dtax); if(fansub_object_valid($item)) { foreach($terms as $key => $aitem) { if($aitem->term_id == $item->term_id) { $new_lists[] = $item; unset($terms[$key]); break; } } } } $terms = $new_lists + $terms; } } foreach($terms as $term) { $li = new FANSUB_HTML('li'); $li->set_class('ui-state-default'); $attributes = array( 'data-taxonomy' => $term->taxonomy, 'data-id' => $term->term_id ); $li->set_attribute_array($attributes); $li->set_text($term->name); $items .= $li->build(); } } if($connect) { $active_items = isset($args['active_items']) ? $args['active_items'] : ''; if(empty($active_items)) { foreach($active_terms as $data) { $id = isset($data['id']) ? $data['id'] : ''; $id = absint($id); $taxonomy = isset($data['taxonomy']) ? $data['taxonomy'] : ''; $term = get_term_by('id', $id, $taxonomy); if(fansub_object_valid($term) && is_a($term, 'WP_Term') && term_exists($term->term_id, $taxonomy)) { $li = new FANSUB_HTML('li'); $li->set_class('ui-state-default'); $attributes = array( 'data-taxonomy' => $term->taxonomy, 'data-id' => $term->term_id ); $li->set_attribute_array($attributes); $li->set_text($term->name); $active_items .= $li->build(); } } } $args['active_items'] = $active_items; } $args['items'] = $items; $class = isset($args['class']) ? $args['class'] : ''; fansub_add_string_with_space_before($class, 'term-sortable'); $args['class'] = $class; fansub_field_sortable($args); } function fansub_field_sortable_post_type($args = array()) { $value = isset($args['value']) ? $args['value'] : ''; $items = isset($args['items']) ? $args['items'] : ''; if(empty($items)) { $active_items = fansub_json_string_to_array($value); $default_args = array( 'public' => true ); $post_type_args = isset($args['post_type_args']) ? $args['post_type_args'] : array(); $post_type_args = wp_parse_args($post_type_args, $default_args); $lists = get_post_types($post_type_args, 'objects'); unset($lists['nav_menu_item']); unset($lists['attachment']); unset($lists['revision']); foreach($active_items as $aitem) { unset($lists[$aitem['id']]); } foreach($lists as $key => $list_item) { $li = new FANSUB_HTML('li'); $li->set_class('ui-state-default'); $attributes = array( 'data-id' => $key ); $li->set_attribute_array($attributes); $li->set_text($list_item->labels->singular_name); $items .= $li->build(); } } $active_items = isset($args['active_items']) ? $args['active_items'] : ''; if(empty($active_items)) { $lists = fansub_json_string_to_array($value); foreach($lists as $data) { $id = isset($data['id']) ? $data['id'] : ''; $post_type = get_post_type_object($id); if(fansub_object_valid($post_type) && isset($post_type->name) && post_type_exists($post_type->name)) { $li = new FANSUB_HTML('li'); $li->set_class('ui-state-default'); $attributes = array( 'data-id' => $id ); $li->set_attribute_array($attributes); $li->set_text($post_type->labels->singular_name); $active_items .= $li->build(); } } } $args['items'] = $items; $args['active_items'] = $active_items; $class = isset($args['class']) ? $args['class'] : ''; fansub_add_string_with_space_before($class, 'post-type-sortable'); $args['class'] = $class; fansub_field_sortable($args); } function fansub_field_sortable_taxonomy($args = array()) { $value = isset($args['value']) ? $args['value'] : ''; $items = isset($args['items']) ? $args['items'] : ''; $connect = fansub_get_value_by_key($args, 'connect', false); if(empty($items)) { $active_items = fansub_json_string_to_array($value); $default_args = array( 'public' => true ); $taxonomy_args = isset($args['taxonomy_args']) ? $args['taxonomy_args'] : array(); $taxonomy_args = wp_parse_args($taxonomy_args, $default_args); $lists = get_taxonomies($taxonomy_args, 'objects'); fansub_exclude_special_taxonomies($lists); if((bool)$connect) { foreach($active_items as $aitem) { if(fansub_array_has_value($aitem)) { unset($lists[$aitem['id']]); } } } else { $results = fansub_json_string_to_array($value); if(fansub_array_has_value($results)) { $new_lists = array(); foreach($results as $data) { $id = isset($data['id']) ? $data['id'] : ''; $item = get_taxonomy($id); if(fansub_object_valid($item) && taxonomy_exists($item)) { foreach($lists as $key => $taxonomy) { if($taxonomy->name == $item->name) { $new_lists[] = $item; unset($lists[$key]); break; } } } } $lists = $new_lists + $lists; } } foreach($lists as $key => $list_item) { $li = new FANSUB_HTML('li'); $li->set_class('ui-state-default'); $attributes = array( 'data-id' => $key ); $li->set_attribute_array($attributes); $li->set_text($list_item->labels->singular_name); $items .= $li->build(); } } if((bool)$connect) { $active_items = isset($args['active_items']) ? $args['active_items'] : ''; if(empty($active_items)) { $lists = fansub_json_string_to_array($value); foreach($lists as $data) { $id = isset($data['id']) ? $data['id'] : ''; $item = get_taxonomy($id); if(fansub_object_valid($item) && isset($item->name) && taxonomy_exists($item->name)) { $li = new FANSUB_HTML('li'); $li->set_class('ui-state-default'); $attributes = array( 'data-id' => $id ); $li->set_attribute_array($attributes); $li->set_text($item->labels->singular_name); $active_items .= $li->build(); } } } $args['active_items'] = $active_items; } $args['items'] = $items; $class = isset($args['class']) ? $args['class'] : ''; fansub_add_string_with_space_before($class, 'taxonomy-sortable'); $args['class'] = $class; fansub_field_sortable($args); } function fansub_field_recaptcha($args = array()) { $site_key = isset($args['site_key']) ? $args['site_key'] : ''; if(empty($site_key)) { return; } $div = new FANSUB_HTML('div'); $div->set_class('g-recaptcha'); $div->set_attribute('data-sitekey', $site_key); if(isset($args['id'])) { $div->set_attribute('id', $args['id']); } $div->output(); ?> set_text($text); $headline->output(); } function fansub_field_fieldset($args = array()) { $args = fansub_field_sanitize_args($args); $label = isset($args['label']) ? $args['label'] : ''; $callback = fansub_sanitize_callback($args); $container_class = isset($args['container_class']) ? $args['container_class'] : ''; $func_args = fansub_sanitize_callback_args($args); if(!is_array($callback)) { fansub_add_string_with_space_before($container_class, fansub_sanitize_file_name($callback)); } else { $cb_class = isset($callback[1]) ? $callback[1] : ''; if(!empty($cb_class)) { fansub_add_string_with_space_before($container_class, fansub_sanitize_file_name($cb_class)); } } fansub_add_string_with_space_before($container_class, 'fansub-fieldset'); unset($args['label']); fansub_field_before($args); ?>
x'; $id = explode('_', $id_width); $id = fansub_sanitize_array($id); //$last = array_pop($id); $args['id'] = implode('_', $id); $args['label_class'] = 'label-input-size'; fansub_field_before($args); $input_args = array( 'id' => $id_width, 'field_class' => $field_class, 'name' => $name_width, 'autocomplete' => false, 'value' => isset($value[0]) ? $value[0] : 0, 'only' => true ); fansub_field_input_number($input_args); echo $sep; $input_args['id'] = $id_height; $input_args['name'] = $name_height; $input_args['value'] = isset($value[1]) ? $value[1] : (isset($value[0]) ? $value[0] : 0); fansub_field_input_number($input_args); fansub_field_after($args); } function fansub_field_textarea($args = array()) { $tmp_class = isset($args['class']) ? $args['class'] : 'widefat'; fansub_sanitize_field_args($args); $id = isset($args['id']) ? $args['id'] : ''; $name = isset($args['name']) ? $args['name'] : ''; $value = isset($args['value']) ? $args['value'] : ''; //$description = isset($args['description']) ? $args['description'] : ''; $class = isset($args['class']) ? $args['class'] : ''; fansub_add_string_with_space_before($class, $tmp_class); //$container_class = isset($args['container_class']) ? $args['container_class'] : ''; $value = trim($value); if(empty($value)) { $value = fansub_get_value_by_key($args, 'default'); } $autocomplete = isset($args['autocomplete']) ? $args['autocomplete'] : false; $row = isset($args['row']) ? $args['row'] : 5; if(isset($args['textarea_rows'])) { $row = $args['textarea_rows']; } $args['label_class'] = 'vertical-align-top'; fansub_field_before($args); $html = new FANSUB_HTML('textarea'); $atts = array( 'id' => $id, 'name' => $name, 'text' => $value, 'class' => $class, 'rows' => $row ); if($autocomplete) { $atts['autocomplete'] = 'off'; } $html->set_attribute_array($atts); $html->output(); fansub_field_after($args); } function fansub_field_input($args) { fansub_sanitize_field_args($args); $name = isset($args['name']) ? $args['name'] : ''; if(empty($name)) { _e('Please setup name for this field.', 'fansub'); return; } $right_label = false; $checked = false; $value = isset($args['value']) ? $args['value'] : ''; $readonly = (bool)fansub_get_value_by_key($args, 'readonly', false); $attributes = isset($args['attributes']) ? $args['attributes'] : array(); $placeholder = fansub_get_value_by_key($args, 'placeholder'); $required = (bool)fansub_get_value_by_key($args, 'required', false); if(!empty($placeholder)) { $attributes['placeholder'] = $placeholder; } if($required) { $attributes['required'] = 'true'; } if(fansub_string_empty($value)) { $value = isset($args['default']) ? $args['default'] : ''; } if(is_array($value)) { $value = json_encode($value); } $sanitize_id = isset($args['sanitize_id']) ? $args['sanitize_id'] : true; $id = isset($args['id']) ? $args['id'] : ''; if(!empty($id) && $sanitize_id) { $id = fansub_sanitize_id($id); } if(empty($id)) { $id = fansub_sanitize_id($name); } $option_value = isset($args['option_value']) ? $args['option_value'] : ''; $type = isset($args['type']) ? $args['type'] : 'text'; $class = isset($args['class']) ? $args['class'] : ''; if('checkbox' == $type) { fansub_add_string_with_space_before($class, 'checkbox'); $option_value = 1; } if('radio' == $type) { fansub_add_string_with_space_before($class, 'radio'); } if('radio' == $type || 'checkbox' == $type) { if($value == $option_value) { $checked = true; } $right_label = true; $attributes['autocomplete'] = 'off'; } $widefat = $args['widefat']; if($widefat && !$right_label && 'button' != $type) { fansub_add_string_with_space_before($class, 'widefat'); } $regular_text = isset($args['regular_text']) ? (bool)$args['regular_text'] : ($GLOBALS['pagenow'] == 'widgets.php' || defined('DOING_AJAX')) ? false : true; if($regular_text && !$right_label && 'button' != $type) { fansub_add_string_with_space_before($class, 'regular-text'); } $atts = array( 'type' => $type, 'class' => $class, 'value' => $value ); if($checked) { $atts['checked'] = 'checked'; } $description = isset($args['description']) ? $args['description'] : ''; if(!empty($description)) { $atts['aria-describedby'] = $id . '_description'; } $atts['id'] = $id; $atts['name'] = $name; $label = isset($args['label']) ? $args['label'] : ''; if($right_label) { unset($args['label']); } fansub_field_before($args); $input = new FANSUB_HTML('input'); if('radio' == $type || 'checkbox' == $type) { if(!empty($option_value) || is_numeric($option_value)) { $atts['value'] = $option_value; } } if($readonly) { $attributes['readonly'] = 'readonly'; } $input->set_attribute_array($attributes); $input->set_attribute_array($atts); $input->output(); if($right_label) { $args['label_class'] = 'full-width'; $args['label'] = $label; } fansub_field_after($args); } function fansub_field_button($args = array()) { $class = fansub_get_value_by_key($args, 'class'); fansub_add_string_with_space_before($class, 'button'); $args['class'] = $class; $args['type'] = 'button'; $args['regular_text'] = false; fansub_field_input($args); } function fansub_field_input_file($args = array()) { $args['type'] = 'file'; $image = (bool)fansub_get_value_by_key($args, 'image'); $max = fansub_get_value_by_key($args, 'max'); $attributes = fansub_get_value_by_key($args, 'attributes'); $attributes = fansub_sanitize_array($attributes); $multiple = fansub_get_value_by_key($args, 'multiple'); $class = fansub_get_value_by_key($args, 'class'); $name = fansub_get_value_by_key($args, 'name'); if(empty($name)) { $name = 'file_names'; } fansub_add_string_with_space_before($class, 'fansub-field-upload'); if($image) { $attributes['accept'] = 'image/*'; } if(fansub_id_number_valid($max)) { $attributes['data-max'] = $max; if(1 < $max) { $multiple = true; } } if($multiple) { $attributes['multiple'] = 'multiple'; if(false === strpos($name, '[]')) { $name .= '[]'; } fansub_add_string_with_space_before($class, 'multiple-file'); } else { fansub_add_string_with_space_before($class, 'single-file'); } $args['attributes'] = $attributes; $args['class'] = $class; $after = fansub_get_value_by_key($args, 'after'); $after = '
' . $after; $args['after'] = $after; $args['name'] = $name; fansub_field_input($args); } function fansub_field_input_text($args = array()) { fansub_field_input($args); } function fansub_field_input_number($args = array()) { $args['type'] = 'number'; $atts = array(); if(isset($args['min'])) { $atts['min'] = $args['min']; } if(isset($args['max'])) { $atts['max'] = $args['max']; } if(fansub_array_has_value($atts)) { $args['attributes'] = $atts; } fansub_field_input($args); } function fansub_field_input_hidden($args = array()) { $args['type'] = 'hidden'; fansub_field_input($args); } function fansub_field_input_url($args = array()) { $args['type'] = 'url'; fansub_field_input($args); } function fansub_field_input_right_label($type, $args = array()) { $options = isset($args['options']) ? $args['options'] : array(); $value = isset($args['value']) ? $args['value'] : ''; $label = isset($args['label']) ? $args['label'] : ''; $id = fansub_get_value_by_key($args, 'id'); $name = fansub_get_value_by_key($args, 'name'); fansub_transmit_id_and_name($id, $name); if(!fansub_array_has_value($options)) { $option_item = array( 'label' => $label, 'value' => $value, 'default' => fansub_get_value_by_key($args, 'default'), 'id' => $id, 'name' => $name ); $options[] = $option_item; } $count = 0; foreach($options as $option) { $value = isset($option['value']) ? $option['value'] : $value; $option['type'] = $type; $option['before'] = isset($args['before']) ? $args['before'] : '

'; $option['after'] = isset($args['after']) ? $args['after'] : '

'; $option['name'] = isset($option['name']) ? $option['name'] : $name; $option['value'] = $value; if(fansub_string_empty($value) && 0 == $count && 'radio' == $type) { $option['attributes']['checked'] = 'checked'; } fansub_field_input($option); $count++; } } function fansub_field_input_radio($args = array()) { fansub_field_input_right_label('radio', $args); } function fansub_field_input_checkbox($args = array()) { fansub_field_input_right_label('checkbox', $args); } function fansub_field_publish_box($callback, $args = array()) { $args['before'] = '
'; $args['after'] = '
'; call_user_func($callback, $args); } function fansub_field_media_upload($args = array()) { fansub_field_sanitize_args($args); $id = isset($args['id']) ? $args['id'] : ''; $name = isset($args['name']) ? $args['name'] : ''; $value = isset($args['value']) ? $args['value'] : ''; $value = fansub_sanitize_media_value($value); $media_url = $value['url']; fansub_field_before($args); $media_preview = new FANSUB_HTML('span'); $media_preview->set_class('media-preview'); if(!empty($media_url)) { $image = new FANSUB_HTML('img'); $image->set_attribute('src', $media_url); if(isset($value['is_image']) && !(bool)$value['is_image']) { $type_icon = fansub_get_value_by_key($value, 'type_icon'); if(!empty($type_icon)) { $image->set_attribute('src', $type_icon); } } $media_preview->set_text($image->build()); } $media_preview->output(); if(empty($id)) { $id = fansub_sanitize_id($name); } $url_args = array( 'id' => $id . '_url', 'name' => $name . '[url]', 'class' => 'media-url', 'type' => 'url', 'value' => $media_url, 'attributes' => array( 'autocomplete' => 'off' ) ); fansub_field_input($url_args); $btn_insert_args = array( 'data_editor' => $id . '_url' ); if(!empty($media_url)) { $btn_insert_args['class'] = 'hidden'; } fansub_field_insert_media_button($btn_insert_args); $btn_remove_args = array(); if(empty($media_url)) { $btn_remove_args['class'] = 'hidden'; } fansub_field_remove_button($btn_remove_args); $id_args = array( 'id' => $id . '_id', 'name' => $name . '[id]', 'class' => 'media-id', 'value' => $value['id'] ); fansub_field_input_hidden($id_args); fansub_field_after($args); } function fansub_field_media_upload_simple($args = array()) { fansub_field_sanitize_args($args); $id = fansub_get_value_by_key($args, 'id'); $name = fansub_get_value_by_key($args, 'name'); if(empty($name)) { _e('Please setup name for this field.', 'fansub'); return; } $value = fansub_get_value_by_key($args, 'value'); $value = fansub_sanitize_media_value($value); $media_url = $value['url']; $btn_insert_class = 'btn-insert-media simple'; $btn_remove_class = 'btn-remove simple'; $img = ''; if(!empty($value['url'])) { fansub_add_string_with_space_before($btn_insert_class, 'hidden'); $image = new FANSUB_HTML('img'); $image->set_attribute('src', $media_url); if(isset($value['is_image']) && !(bool)$value['is_image']) { $type_icon = fansub_get_value_by_key($value, 'type_icon'); if(!empty($type_icon)) { $image->set_attribute('src', $type_icon); } } $img = $image->build(); } else { fansub_add_string_with_space_before($btn_remove_class, 'hidden'); } ?>

set_class($class); $button->set_text(__('Add media', 'fansub')); $button->output(); } function fansub_field_remove_button($args = array()) { $class = isset($args['class']) ? $args['class'] : ''; fansub_add_string_with_space_before($class, 'btn button btn-remove'); $button = new FANSUB_HTML('button'); $button->set_class($class); $button->set_text(__('Remove', 'fansub')); $button->output(); } function fansub_field_rich_editor($args = array()) { fansub_field_editor($args); } function fansub_field_editor($args = array()) { fansub_sanitize_field_args($args); $value = isset($args['value']) ? $args['value'] : ''; $id = isset($args['id']) ? $args['id'] : ''; $name = isset($args['name']) ? $args['name'] : ''; if(empty($id)) { $id = fansub_sanitize_id($name); } $textarea_rows = isset($args['textarea_rows']) ? $args['textarea_rows'] : fansub_get_value_by_key($args, 'rows', 5); $class = isset($args['class']) ? $args['class'] : ''; fansub_field_before($args); $args['textarea_name'] = $name; $args['editor_class'] = $class; $args['textarea_rows'] = $textarea_rows; $teeny = fansub_get_value_by_key($args, 'teeny', false); if($teeny) { $args['tinymce'] = false; $args['wpautop'] = false; } $toolbar = fansub_get_value_by_key($args, 'toolbar', true); if(!$toolbar) { $args['quicktags'] = false; } $prevent_id = array( 'gallery' ); if(in_array($prevent_id, $prevent_id)) { $id = 'fansub_' . $id; } wp_editor($value, $id, $args); fansub_field_after($args); } function fansub_field_get_option($args = array()) { $value = isset($args['value']) ? $args['value'] : ''; $text = isset($args['text']) ? $args['text'] : ''; $selected = isset($args['selected']) ? $args['selected'] : ''; $option = new FANSUB_HTML('option'); $option->set_attribute('value', $value); $option->set_text($text); $attributes = isset($args['attributes']) ? $args['attributes'] : array(); foreach($attributes as $data_name => $att_value) { $option->set_attribute($data_name, $att_value); } if($selected == $value) { $option->set_attribute('selected', 'selected'); } return $option->build(); } function fansub_field_option($args = array()) { echo fansub_field_get_option($args); } function fansub_field_select_chosen($args = array()) { fansub_field_sanitize_args($args); $class = isset($args['class']) ? $args['class'] : ''; $controller_class = isset($args['controller_class']) ? $args['controller_class'] : 'chosen-select'; $controller_class = apply_filters('fansub_chosen_select_controller_class', $controller_class); fansub_add_string_with_space_before($class, $controller_class); fansub_add_string_with_space_before($class, 'chooseable'); $args['field_class'] = $class; $multiple = isset($args['multiple']) ? $args['multiple'] : false; $attributes = isset($args['attributes']) ? $args['attributes'] : array(); if((bool)$multiple) { $attributes['multiple'] = 'multiple'; } $placeholder = isset($args['placeholder']) ? $args['placeholder'] : ''; if(!empty($placeholder)) { $attributes['data-placeholder'] = $placeholder; } $args['attributes'] = $attributes; $before = fansub_get_value_by_key($args, 'before', '
'); $after = fansub_get_value_by_key($args, 'after', '
'); $args['before'] = $before; $args['after'] = $after; if($multiple) { $name = isset($args['name']) ? $args['name'] : ''; $id = isset($args['id']) ? $args['id'] : ''; $args['name'] = $name . '_chosen'; $args['id'] = $id . '_chosen'; $after = isset($args['after']) ? $args['after'] : ''; $value = isset($args['value']) ? $args['value'] : ''; if(is_array($value)) { $value = json_encode($value); } $input_result = ''; $args['after'] = $input_result . $after; fansub_field_select($args); } else { fansub_field_select($args); } } function fansub_field_select($args = array()) { $args = fansub_field_sanitize_args($args); $id = isset($args['id']) ? $args['id'] : ''; $name = isset($args['name']) ? $args['name'] : ''; $list_options = isset($args['list_options']) ? $args['list_options'] : array(); $options = isset($args['options']) ? $args['options'] : array(); $load_item = isset($args['load_item']) ? $args['load_item'] : true; $value = isset($args['value']) ? $args['value'] : ''; $field_class = isset($args['field_class']) ? $args['field_class'] : 'widefat'; if(!is_array($options) || count($options) < 1) { $options = $list_options; } $all_option = isset($args['all_option']) ? $args['all_option'] : ''; $autocomplete = isset($args['autocomplete']) ? $args['autocomplete'] : false; if(!$autocomplete) { $autocomplete = 'off'; } $select_option = isset($args['default_option']) ? $args['default_option'] : ''; if($load_item && empty($all_option)) { foreach($options as $key => $text) { $select_option .= fansub_field_get_option(array('value' => $key, 'text' => $text, 'selected' => $value)); } } else { $select_option .= $all_option; } if(!$load_item) { $custom_options = isset($args['custom_options']) ? $args['custom_options'] : ''; $select_option .= $custom_options; } fansub_field_before($args); $html = new FANSUB_HTML('select'); $attributes = isset($args['attributes']) ? fansub_sanitize_array($args['attributes']) : array(); $atts = array( 'id' => fansub_sanitize_id($id), 'name' => $name, 'class' => $field_class, 'autocomplete' => $autocomplete, 'text' => $select_option ); $html->set_attribute_array($atts); foreach($attributes as $key => $value) { $html->set_attribute($key, $value); } $html->output(); fansub_field_after($args); } function fansub_field_select_language($args = array()) { fansub_field_sanitize_args($args); $class = isset($args['class']) ? $args['class'] : ''; fansub_add_string_with_space_before($class, 'select-language'); $args['field_class'] = $class; $select_none = isset($args['select_none']) ? $args['select_none'] : ''; $lists = fansub_supported_languages(); $value = isset($args['value']) ? $args['value'] : ''; $all_option = $select_none; foreach($lists as $key => $data) { $option = fansub_field_get_option(array('value' => $key, 'text' => $data, 'selected' => $value)); $all_option .= $option; } $args['all_option'] = $all_option; fansub_field_select($args); } function fansub_field_select_country($args = array()) { fansub_field_sanitize_args($args); $class = isset($args['class']) ? $args['class'] : ''; fansub_add_string_with_space_before($class, 'select-country'); $args['field_class'] = $class; $select_none = isset($args['select_none']) ? $args['select_none'] : ''; $countries = fansub_get_countries(); $value = isset($args['value']) ? $args['value'] : ''; $all_option = $select_none; foreach($countries as $code => $country) { $option = fansub_field_get_option(array('value' => $code, 'text' => $country['name'], 'selected' => $value)); $all_option .= $option; } $args['all_option'] = $all_option; fansub_field_select($args); } function fansub_field_select_page($args = array()) { $query = fansub_query_all('page'); $choose_text = __('Choose page', 'fansub'); $choose_text = apply_filters('fansub_theme_select_page_text', $choose_text); $all_option = ''; $value = isset($args['value']) ? $args['value'] : ''; while($query->have_posts()) { $query->the_post(); $post_id = get_the_ID(); $all_option .= ''; } wp_reset_postdata(); $args['all_option'] = $all_option; fansub_field_select($args); } function fansub_field_select_sidebar($args = array()) { $sidebars = fansub_get_sidebars(); $choose_text = __('Choose sidebar', 'fansub'); $choose_text = apply_filters('fansub_theme_select_sidebar_text', $choose_text); $all_option = ''; $value = isset($args['value']) ? $args['value'] : ''; foreach($sidebars as $key => $sidebar) { $sidebar_name = fansub_get_value_by_key($sidebar, 'name', $key); $all_option .= ''; } $args['all_option'] = $all_option; fansub_field_select($args); } function fansub_field_select_theme($args = array()) { $themes = wp_get_themes(); $choose_text = __('Choose theme', 'fansub'); $choose_text = apply_filters('fansub_theme_select_theme_text', $choose_text); $all_option = ''; $value = isset($args['value']) ? $args['value'] : ''; if(fansub_array_has_value($themes)) { foreach($themes as $name => $data) { $all_option .= ''; } } $args['all_option'] = $all_option; fansub_field_select($args); } function fansub_field_select_plugin($args = array()) { $lists = fansub_get_my_plugins(); $choose_text = __('Choose plugin', 'fansub'); $choose_text = apply_filters('fansub_theme_select_plugin_text', $choose_text); $all_option = ''; $value = isset($args['value']) ? $args['value'] : ''; if(fansub_array_has_value($lists)) { foreach($lists as $name => $data) { $all_option .= ''; } } $args['all_option'] = $all_option; fansub_field_select($args); } function fansub_field_select_term($args = array()) { fansub_field_sanitize_args($args); $taxonomy = fansub_get_value_by_key($args, 'taxonomy'); $taxonomies = fansub_get_value_by_key($args, 'taxonomies'); $taxonomies = fansub_sanitize_array($taxonomies); $taxonomies = fansub_remove_empty_array_item($taxonomies); if(!fansub_array_has_value($taxonomies) && empty($taxonomy)) { $taxonomy = 'category'; } $taxonomies[] = $taxonomy; $taxonomies = fansub_sanitize_array($taxonomies); $options = isset($args['options']) ? $args['options'] : array(); $force_empty = isset($args['force_empty']) ? (bool)$args['force_empty'] : false; $tax = get_taxonomy($taxonomy); if(!$force_empty) { if(!fansub_array_has_value($taxonomies) && !fansub_array_has_value($options)) { _e('Please pass a taxonomy or set options for arguments.', 'fansub'); return; } } $only_parent = isset($args['only_parent']) ? $args['only_parent'] : false; $id = isset($args['id']) ? $args['id'] : ''; $name = isset($args['name']) ? $args['name'] : ''; $field_class = isset($args['field_class']) ? $args['field_class'] : ''; if(is_object($tax)) { fansub_add_string_with_space_before($field_class, 'select-' . $tax->rewrite['slug'] . '-terms'); } $args['field_class'] = fansub_add_string_with_space_before($field_class, 'select-term'); $label = isset($args['label']) ? $args['label'] : ''; $value = isset($args['value']) ? $args['value'] : ''; $description = isset($args['description']) ? $args['description'] : ''; $taxonomy_id = isset($args['taxonomy_id']) ? $args['taxonomy_id'] : ''; $taxonomy_name = isset($args['taxonomy_name']) ? $args['taxonomy_name'] : ''; $show_count = isset($args['show_count']) ? $args['show_count'] : true; $load_item = isset($args['load_item']) ? (bool)$args['load_item'] : true; $option_default = ''; if(isset($args['option_default'])) { $option_default = $args['option_default']; } else { $default_text = isset($args['default_text']) ? $args['default_text'] : __('Choose term'); $option_default = ''; } $all_option = $option_default; $args['before'] = ''; if($load_item) { $options = wp_parse_args($options, $taxonomies); $options = fansub_sanitize_array($options); if(fansub_array_has_value($options)) { foreach($options as $tax) { if(!is_object($tax)) { $tax = get_taxonomy($tax); } $term_args = array(); if($only_parent) { $term_args['parent'] = 0; } if(!is_object($tax)) { continue; } $terms = fansub_get_terms($tax->name, $term_args); if(fansub_array_has_value($terms)) { $show_count = isset($args['show_count']) ? $args['show_count'] : true; $hirachical = isset($args['hirachical']) ? $args['hirachical'] : true; $option_group = isset($args['option_group']) ? $args['option_group'] : true; $select_args = array( 'selected' => $value, 'taxonomy' => $tax->name, 'show_count' => $show_count, 'hirachical' => $hirachical ); $select = fansub_get_term_drop_down($select_args); $select = fansub_remove_select_tag_keep_content($select); $tmp = ''; if(!empty($select)) { if($option_group) { $tmp = ''; $tmp .= $select; $tmp .= ''; } else { $tmp .= $select; } } $all_option .= $tmp; } } } } $args['all_option'] = $all_option; $args['label'] = ''; if(!isset($args['attributes']['data-taxonomy'])) { $args['attributes']['data-taxonomy'] = $taxonomy; } $args['attributes']['data-show-count'] = absint($show_count); fansub_field_select($args); } function fansub_field_widget_before($class = '', $inner = false) { if($inner) { fansub_add_string_with_space_before($class, 'fansub-widget-field-group'); } else { fansub_add_string_with_space_before($class, 'fansub-widget'); } echo '
'; } function fansub_field_widget_after() { echo '
'; } function fansub_widget_field($callback, $args) { if(fansub_callback_exists($callback)) { $hidden = isset($args['hidden']) ? $args['hidden'] : false; $container_class = ''; if($hidden) { fansub_add_string_with_space_before($container_class, 'hidden'); } fansub_field_widget_before($container_class, true); $args = fansub_field_sanitize_widget_args($args); if('fansub_field_select_chosen' == $callback) { $args['before'] = '
'; $args['after'] = '
'; } call_user_func($callback, $args); fansub_field_widget_after(); } } function fansub_field_widget_field_title($id, $name, $value) { $args = array( 'id' => $id, 'name' => $name, 'value' => $value, 'label' => __('Title:', 'fansub') ); fansub_widget_field('fansub_field_input', $args); } function fansub_widget_field_title($id, $name, $value) { fansub_field_widget_field_title($id, $name, $value); } function fansub_field_widget_field_show_title($id, $name, $value) { $args = array( 'id' => $id, 'name' => $name, 'value' => $value, 'label' => __('Show widget title?', 'fansub') ); fansub_widget_field('fansub_field_input_checkbox', $args); } function fansub_field_admin_postbox($args = array()) { $title = fansub_get_value_by_key($args, 'title'); $content = fansub_get_value_by_key($args, 'content'); ?>