1343 lines
53 KiB
PHP
1343 lines
53 KiB
PHP
<?php
|
|
if(!function_exists('add_filter')) exit;
|
|
|
|
function fansub_field_google_maps($args = array()) {
|
|
fansub_field_sanitize_args($args);
|
|
$lat_lng = fansub_get_default_lat_long();
|
|
$id = fansub_get_value_by_key($args, 'id', 'maps_content');
|
|
if(empty($id)) {
|
|
$id = 'maps_content';
|
|
}
|
|
$address = fansub_get_value_by_key($args, 'address');
|
|
$long = fansub_get_value_by_key($args, 'long');
|
|
$lat = fansub_get_value_by_key($args, 'lat');
|
|
$lang = fansub_get_language();
|
|
$zoom = fansub_get_value_by_key($args, 'zoom', 15);
|
|
$google_maps = fansub_get_value_by_key($args, 'google_maps');
|
|
if(empty($long) || empty($lat)) {
|
|
$lat = $lat_lng['lat'];
|
|
$long = $lat_lng['lng'];
|
|
$zoom = 5;
|
|
}
|
|
if(empty($google_maps)) {
|
|
$google_maps = json_encode(array('lat' => $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);
|
|
?>
|
|
<div id="<?php echo $id; ?>" class="fansub-field-maps" data-scrollwheel="<?php echo fansub_bool_to_int($scrollwheel); ?>" data-post-id="<?php echo $post_id; ?>" data-zoom="<?php echo $zoom; ?>" data-marker-title="<?php echo $marker_title; ?>" data-draggable="<?php echo fansub_bool_to_int($draggable); ?>" data-address="<?php echo $address; ?>" data-long="<?php echo $long; ?>" data-lat="<?php echo $lat; ?>" style="width: 100%; height: 350px; position: relative; background-color: rgb(229, 227, 223); overflow: hidden;"></div>
|
|
<?php
|
|
fansub_field_input_hidden(array('id' => '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();
|
|
?>
|
|
<input autocomplete="off" id="<?php echo esc_attr($id); ?>" name="<?php echo esc_attr($name); ?>" placeholder="<?php echo esc_attr($placeholder); ?>" class="<?php echo esc_attr($class); ?>" type="text" style="width: <?php echo $input_width; ?>;" required>
|
|
<img class="fansub-captcha-image" src="<?php echo $image_url; ?>">
|
|
<img class="fansub-captcha-reload" src="<?php echo FANSUB_URL . '/images/icon-refresh-captcha.png'; ?>">
|
|
<?php
|
|
fansub_field_after($args);
|
|
}
|
|
|
|
function fansub_field_label($args = array()) {
|
|
fansub_sanitize_field_args($args);
|
|
$text = isset($args['text']) ? $args['text'] : '';
|
|
if(empty($text)) {
|
|
return;
|
|
}
|
|
$html = new FANSUB_HTML('label');
|
|
$atts = array(
|
|
'for' => 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'] : '<p>';
|
|
$args['after'] = isset($args['after']) ? $args['after'] : '</p>';
|
|
$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'] : '<div class="' . $class . '">';
|
|
$args['after'] = isset($args['after']) ? $args['after'] : '</div>';
|
|
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();
|
|
?>
|
|
<noscript>
|
|
<div style="width: 302px; height: 425px;">
|
|
<div style="width: 302px; height: 425px; position: relative;">
|
|
<div style="width: 302px; height: 425px; position: absolute;">
|
|
<iframe src="https://www.google.com/recaptcha/api/fallback?k=<?php echo $site_key; ?>&hl=<?php echo fansub_get_recaptcha_language(); ?>" frameborder="0" scrolling="no" style="width: 302px; height:425px; border-style: none;"></iframe>
|
|
</div>
|
|
<div style="width: 300px; height: 60px; bottom: 12px; left: 25px; margin: 0; padding: 0; right: 25px; background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px;">
|
|
<label for="g-recaptcha-response" style="display: none"></label>
|
|
<textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px; height: 40px; border: 1px solid #c1c1c1; margin: 10px 25px; padding: 0; resize: none;"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</noscript>
|
|
<?php
|
|
}
|
|
|
|
function fansub_field_headline($args = array()) {
|
|
$args = fansub_field_sanitize_args($args);
|
|
$tag = isset($args['tag']) ? $args['tag'] : 'h2';
|
|
$text = isset($args['text']) ? $args['text'] : '';
|
|
$headline = new FANSUB_HTML($tag);
|
|
$headline->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);
|
|
?>
|
|
<fieldset class="<?php echo $container_class; ?>">
|
|
<legend><?php echo $label; ?></legend>
|
|
<?php call_user_func($callback, $func_args); ?>
|
|
</fieldset>
|
|
<?php
|
|
fansub_field_after($args);
|
|
}
|
|
|
|
function fansub_field_input_size($args = array()) {
|
|
fansub_field_size($args);
|
|
}
|
|
|
|
function fansub_field_size($args = array()) {
|
|
$args = fansub_field_sanitize_args($args);
|
|
$field_class = $args['class'];
|
|
$id_width = isset($args['id_width']) ? $args['id_width'] : '';
|
|
$id_height = isset($args['id_height']) ? $args['id_height'] : '';
|
|
$name_width = isset($args['name_width']) ? $args['name_width'] : '';
|
|
$name_height = isset($args['name_height']) ? $args['name_height'] : '';
|
|
$value = isset($args['value']) ? (array)$args['value'] : array(0, 0);
|
|
if(!fansub_array_has_value($value)) {
|
|
$value = array(0, 0);
|
|
}
|
|
fansub_add_string_with_space_before($field_class, 'fansub-number image-size');
|
|
$sep = isset($args['sep']) ? $args['sep'] : '<span>x</span>';
|
|
$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 = '<div class="image-preview"></div>' . $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'] : '<p>';
|
|
$option['after'] = isset($args['after']) ? $args['after'] : '</p>';
|
|
$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'] = '<div class="misc-pub-section misc-pub-visibility">';
|
|
$args['after'] = '</div>';
|
|
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');
|
|
}
|
|
?>
|
|
<p class="hide-if-no-js">
|
|
<span class="media-preview"><?php echo $img; ?></span>
|
|
<a class="<?php echo $btn_insert_class; ?>" href="#" title="<?php _e('Set image', 'fansub'); ?>"><?php _e('Set image', 'fansub'); ?></a>
|
|
<a class="<?php echo $btn_remove_class; ?>" href="#" title="<?php _e('Remove image', 'fansub'); ?>"><?php _e('Remove image', 'fansub'); ?></a>
|
|
<input id="<?php echo $id; ?>_url" type="hidden" value="<?php echo $value['url']; ?>" name="<?php echo $name; ?>[url]" class="media-url">
|
|
<input id="<?php echo $id; ?>_id" type="hidden" value="<?php echo $value['id']; ?>" name="<?php echo $name; ?>[id]" class="media-id">
|
|
</p>
|
|
<?php
|
|
}
|
|
|
|
function fansub_field_insert_media_button($args = array()) {
|
|
//$data_editor = isset($args['data_editor']) ? $args['data_editor'] : 'content';
|
|
//$id = isset($args['id']) ? $args['id'] : $data_editor . '_insert_media_button';
|
|
$class = isset($args['class']) ? $args['class'] : '';
|
|
fansub_add_string_with_space_before($class, 'button btn-add-media btn btn-insert-media');
|
|
$button = new FANSUB_HTML('button');
|
|
$button->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', '<div class="fansub-chosen-field fansub-field-group">');
|
|
$after = fansub_get_value_by_key($args, 'after', '</div>');
|
|
$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 = '<input type="hidden" id="' . esc_attr($id) . '" name="' . esc_attr($name) . '" class="chosen-result" value="' . esc_attr($value) . '" autocomplete="off">';
|
|
$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'] : '<option value="">--' . __('Choose language', 'fansub') . '--</option>';
|
|
$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'] : '<option value="">--' . __('Choose country', 'fansub') . '--</option>';
|
|
$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 = '<option value="0">-- ' . $choose_text . ' --</option>';
|
|
$value = isset($args['value']) ? $args['value'] : '';
|
|
while($query->have_posts()) {
|
|
$query->the_post();
|
|
$post_id = get_the_ID();
|
|
$all_option .= '<option value="' . esc_attr($post_id) . '" ' . selected($value, $post_id, false) . '>' . get_the_title() . '</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 = '<option value="0">-- ' . $choose_text . ' --</option>';
|
|
$value = isset($args['value']) ? $args['value'] : '';
|
|
foreach($sidebars as $key => $sidebar) {
|
|
$sidebar_name = fansub_get_value_by_key($sidebar, 'name', $key);
|
|
$all_option .= '<option value="' . esc_attr($key) . '" ' . selected($value, $key, false) . '>' . $sidebar_name . '</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 = '<option value="0">-- ' . $choose_text . ' --</option>';
|
|
$value = isset($args['value']) ? $args['value'] : '';
|
|
if(fansub_array_has_value($themes)) {
|
|
foreach($themes as $name => $data) {
|
|
$all_option .= '<option value="' . esc_attr($name) . '" ' . selected($value, $name, false) . '>' . $data->get('Name') . '</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 = '<option value="0">-- ' . $choose_text . ' --</option>';
|
|
$value = isset($args['value']) ? $args['value'] : '';
|
|
if(fansub_array_has_value($lists)) {
|
|
foreach($lists as $name => $data) {
|
|
$all_option .= '<option value="' . esc_attr($name) . '" ' . selected($value, $name, false) . '>' . $data['Name'] . '</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 = '<option value="0" data-taxonomy="">-- ' . $default_text . ' --</option>';
|
|
}
|
|
$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 = '<optgroup label="' . $tax->labels->singular_name . '" data-taxonomy="' . $tax->name . '">';
|
|
$tmp .= $select;
|
|
$tmp .= '</optgroup>';
|
|
} 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 '<div class="' . $class . '">';
|
|
}
|
|
|
|
function fansub_field_widget_after() {
|
|
echo '</div>';
|
|
}
|
|
|
|
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'] = '<div class="fansub-widget-field">';
|
|
$args['after'] = '</div>';
|
|
}
|
|
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');
|
|
?>
|
|
<div class="meta-box-sortables ui-sortable">
|
|
<div class="postbox">
|
|
<button aria-expanded="true" class="handlediv button-link" type="button">
|
|
<span class="screen-reader-text"><?php printf(__('Toggle panel: %s', 'fansub'), $title); ?></span>
|
|
<span aria-hidden="true" class="toggle-indicator"></span>
|
|
</button>
|
|
<h2 class="hndle ui-sortable-handle">
|
|
<span><?php echo $title; ?></span>
|
|
</h2>
|
|
<div class="inside">
|
|
<div class="main">
|
|
<?php echo $content; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|