AlkantarClanX12
Current Path : /home/thanudqk/siamfreetour.com/wp-content/plugins/thegem-elements/inc/ |
Current File : /home/thanudqk/siamfreetour.com/wp-content/plugins/thegem-elements/inc/diagram.php |
<?php add_action( 'widgets_init', 'thegem_diagram_register_widgets' ); function thegem_diagram_register_widgets() { if ( !is_blog_installed() ) return; register_widget('The_Gem_Widget_Diagram'); } class The_Gem_Widget_Diagram extends WP_Widget { function __construct() { $widget_ops = array('diagram' => 'widget_diagram', 'description' => __('diagram', 'thegem')); parent::__construct('diagram', __('diagram', 'thegem'), $widget_ops); } function widget( $args, $instance ) { extract($args); $style = ''; $title = apply_filters('widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base); if (!isset($instance['effects_enabled'])) { $instance['effects_enabled'] = false; } echo $before_widget; echo '<div class="diagram-item">'; echo '<div class="diagram-wrapper">'; thegem_build_diagram($title, $instance['summary'], $instance['type'], $instance['skills'], true, $instance['effects_enabled'], $instance['effects_enabled_delay'], $style); echo '</div>'; echo '</div>'; echo $after_widget; } function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['summary'] = strip_tags($new_instance['summary']); $instance['type'] = strip_tags($new_instance['type']); $instance['skills'] = $new_instance['skills']; $instance['effects_enabled'] = (bool) $new_instance['effects_enabled']; $instance['effects_enabled_delay'] = $new_instance['effects_enabled_delay']; return $instance; } function get_skill_code($id, $data=null) { wp_enqueue_script('color-picker'); wp_enqueue_style('color-picker'); if (!is_array($data)) $data = array( 'title' => '', 'amount' => '', 'color' => '', ); ?> <fieldset style="border: 1px dashed #DFDFDF; padding: 0 5px; margin: 0 0 10px 0;"> <p><label for="skill_<?php echo esc_attr($id.'_'.$this->get_field_id('title')); ?>"><?php _e('Title:', 'thegem'); ?></label> <input class="widefat" id="skill_<?php echo esc_attr($this->get_field_id('title')); ?>" name="<?php echo esc_attr($this->get_field_name('skills').'['.$id.'][title]'); ?>" type="text" value="<?php echo esc_attr($data['title']); ?>" /></p> <p><label for="skill_<?php echo esc_attr($id.'_'.$this->get_field_id('amount')); ?>"><?php _e('Amount (in percents):', 'thegem'); ?></label> <input class="widefat" id="skill_<?php echo esc_attr($this->get_field_id('amount')); ?>" name="<?php echo esc_attr($this->get_field_name('skills').'['.$id.'][amount]'); ?>" type="text" value="<?php echo esc_attr($data['amount']); ?>" /></p> <div><label for="skill_<?php echo esc_attr($id.'_'.$this->get_field_id('color')); ?>"><?php _e('Color:', 'thegem'); ?></label> <div><input class="widefat color-select" style="float: left;" id="skill_<?php echo esc_attr($this->get_field_id('color')); ?>" name="<?php echo esc_attr($this->get_field_name('skills').'['.$id.'][color]'); ?>" type="text" value="<?php echo esc_attr($data['color']); ?>" /></div><br style="clear: both;"></div> <div class="widget-control-actions"><a href="#" class="diagram-delete-skill">Delete skill</a></div> </fieldset> <?php } function form( $instance ) { $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'summary' => '', 'type' => '', 'skills' => array(), 'effects_enabled' => false ) ); $title = strip_tags($instance['title']); $summary = strip_tags($instance['summary']); $type = strip_tags($instance['type']); $skills = $instance['skills']; $effects_enabled = (bool) $instance['effects_enabled']; $effects_enabled_delay = $instance['effects_enabled_delay'] ?> <script class="diagram-edit-skill-template" type="text/template"> <?php $this->get_skill_code('%INDEX%'); ?> </script> <p><label for="<?php echo esc_attr($this->get_field_id('title')); ?>"><?php _e('Title:', 'thegem'); ?></label> <input class="widefat" id="<?php echo esc_attr($this->get_field_id('title')); ?>" name="<?php echo esc_attr($this->get_field_name('title')); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p> <p><label for="<?php echo esc_attr($this->get_field_id('summary')); ?>"><?php _e('Summary:', 'thegem'); ?></label> <textarea class="widefat" id="<?php echo esc_attr($this->get_field_id('summary')); ?>" name="<?php echo esc_attr($this->get_field_name('summary')); ?>"><?php echo esc_textarea($summary); ?></textarea></p> <p><label for="<?php echo esc_attr($this->get_field_id('type')); ?>"><?php _e('Type:', 'thegem'); ?></label> <select class="widefat" id="<?php echo esc_attr($this->get_field_id('type')); ?>" name="<?php echo esc_attr($this->get_field_name('type')); ?>"> <option <?php if ($type == 'circle') echo 'selected="selected"'; ?> value="circle"><?php _e('Circle', 'thegem'); ?></option> <option <?php if ($type == 'line') echo 'selected="selected"'; ?> value="line"><?php _e('Lines', 'thegem'); ?></option> </select></p> <p> <input type="checkbox" name="<?php echo esc_attr($this->get_field_name('effects_enabled')); ?>" id="<?php echo esc_attr($this->get_field_id('effects_enabled')); ?>" value="1" <?php checked($effects_enabled, 1); ?> /> <label for="<?php echo esc_attr($this->get_field_id('effects_enabled')); ?>"><?php _e('Lazy loading enabled', 'thegem'); ?></label> </p> <p> <label for="<?php echo esc_attr($this->get_field_id('effects_enabled_delay')); ?>"><?php _e('Animation delay (ms)', 'thegem'); ?></label> <input class="widefat" id="<?php echo esc_attr($this->get_field_id('effects_enabled_delay')); ?>" name="<?php echo esc_attr($this->get_field_name('effects_enabled_delay')); ?>" type="text" value="<?php echo esc_attr($effects_enabled_delay); ?>" /> </p> <p><?php _e('Skills', 'thegem'); ?>:</p> <div class="diagram-edit-skills"> <?php if (count($skills) > 0) foreach ($skills as $key=>$skill) $this->get_skill_code($key, $skill); else $this->get_skill_code(0); ?> <div class="widget-control-actions" style="margin-top: 10px;"><a class="diagram-edit-add-skill" href="#">Add skill</a></div> </div> <script type="text/javascript"> if (thegem_init_diagram_edit != undefined) thegem_init_diagram_edit(); </script> <?php } } add_action( 'admin_enqueue_scripts', 'thegem_admin_diagram_scripts_init' ); function thegem_admin_diagram_scripts_init() { wp_enqueue_script('thegem-diagram-edit', THEGEM_THEME_URI . '/js/diagram_edit.js', array('jquery','color-picker'), THEGEM_THEME_VERSION); } function thegem_build_diagram($title, $summary, $type, $skills, $is_widget, $effects_enabled, $effects_enabled_delay, $style, $background = '', $title_color = '', $summary_color = '', $line_color = '') { if ($type == 'line') { thegem_build_line_diagram($title, $summary, $skills, $is_widget, $effects_enabled, $effects_enabled_delay, $style, $background, $title_color, $summary_color, $line_color ); } if ($type == 'circle') { thegem_build_circle_diagram($title, $summary, $skills, $is_widget, $effects_enabled, $effects_enabled_delay, $style); } } function thegem_build_line_diagram($title, $summary, $skills, $is_widget, $effects_enabled, $effects_enabled_delay, $style, $background, $title_color, $summary_color, $line_color ) { wp_enqueue_script('thegem-diagram-line'); if ($effects_enabled) { thegem_lazy_loading_enqueue(); } ?> <?php if (!empty($title)): ?> <h3 <?php if ($is_widget): ?>class="widget-title"<?php endif; ?><?php echo ($title_color ? ' style="color: '.esc_attr($title_color).'"' : ''); ?>><?php echo $title; ?></h3> <?php endif; ?> <?php if (!empty($summary)): ?> <div <?php if ($is_widget): ?>class="diagram-summary diagram-summary-skill-line"<?php else: ?>class="diagram-summary-text"<?php endif; ?><?php echo ($summary_color ? ' style="color: '.esc_attr($summary_color).'"' : ''); ?>><?php echo $summary; ?></div> <?php endif; ?> <?php $delay = 'data-ll-item-delay="0"'; if(isset($effects_enabled_delay) && !empty($effects_enabled_delay)) { $delay = 'data-ll-item-delay="'.$effects_enabled_delay.'"'; } ?> <div class="<?php if($effects_enabled): ?>lazy-loading lazy-loading-not-hide<?php endif; ?>" <?php if($effects_enabled): ?><?php echo $delay; ?> <?php endif; ?>> <div class="digram-line-box <?php if($effects_enabled): ?>lazy-loading-item<?php endif; ?>" <?php if($effects_enabled): ?>data-ll-effect="action" data-ll-action-func="thegem_start_line_digram"<?php endif; ?><?php echo ($background ? ' style="background-color: '.esc_attr($background).'"' : ''); ?>> <?php foreach ($skills as $skill): ?> <div class="skill-element"> <div class="skill-title"<?php echo (isset($skill['title_color']) ? ' style="color: '.esc_attr($skill['title_color']).'"' : ''); ?>><?php echo $skill['title'];?> <?php if ($style == "style-3") echo '<span'.(isset($skill['title_color']) ? ' style="color: '.esc_attr($skill['title_color']).'"' : '').'>' .$skill['amount']. '%</span>'; ?></div> <div class="clearfix"> <div style="color:<?php echo $skill['color']; ?>" class="skill-amount">0%</div> <div class="skill-line"<?php echo ($line_color ? ' style="background-color: '.esc_attr($line_color).'"' : ''); ?>><div data-amount="<?php echo esc_attr($skill['amount']); ?>" style="width: 0; background: <?php echo $skill['color']; ?>;"></div></div> </div> </div> <?php endforeach; ?> </div> </div> <?php } function thegem_build_circle_diagram($title, $summary, $skills, $is_widget, $effects_enabled, $effects_enabled_delay, $style) { wp_enqueue_script('thegem-diagram-circle'); $max_font_size = 0; if(thegem_get_option('h5_font_size')) { $max_font_size = thegem_get_option('h5_font_size'); } else if (thegem_get_option('body_font_size')) { $max_font_size = thegem_get_option('body_font_size'); } if ($effects_enabled) { thegem_lazy_loading_enqueue(); } ?> <div class="diagram-circle clearfix" <?php if ($max_font_size != 0): ?>data-max-font-size="<?php echo esc_attr($max_font_size); ?>"<?php endif; ?> data-title="<?php echo esc_attr(htmlspecialchars($title)); ?>" data-summary="<?php echo esc_attr(htmlspecialchars($summary)); ?>"> <div class="box-wrapper"> <div class="box"></div> </div> <div class="skills"> <?php foreach ($skills as $skill): ?> <div class="skill-arc"> <span class="title"><?php echo $skill['title']; ?></span> <input type="hidden" class="percent" value="<?php echo esc_attr($skill['amount']); ?>" /> <input type="hidden" class="color" value="<?php echo esc_attr($skill['color']); ?>" /> <input type="hidden" class="title_color" value="<?php echo esc_attr($skill['title_color']); ?>" /> </div> <?php endforeach; ?> </div> </div> <?php } // Shortcode function thegem_diagram_shortcode($atts, $content) { extract(shortcode_atts(array( 'title' => '', 'summary' => '', 'style' => 'style-1', 'type' => 'circle', 'background' => '', 'title_color' => '', 'summary_color' => '', 'line_color' => '', 'effects_enabled' => false, 'effects_enabled_delay' => '' ), $atts, 'gem_diagram')); $pattern = get_shortcode_regex(); $matches = array(); preg_match_all("/$pattern/s", $content, $matches); $skills = array(); foreach ($matches[0] as $v) { $js = do_shortcode($v); $skill = json_decode($js, true); $skills[] = $skill; } $return_html = '<div class="diagram-item">'; $return_html .= '<div class="diagram-wrapper '.$style.'">'; ob_start(); thegem_build_diagram($title, $summary, $type, $skills, false, $effects_enabled, $effects_enabled_delay, $style, $background, $title_color, $summary_color, $line_color); $return_html .= trim(preg_replace('/\s\s+/', '', ob_get_clean())); $return_html .= '</div>'; $return_html .= "</div>"; return $return_html; } function thegem_skill_shortcode($atts) { return json_encode($atts); }