PluginProbe
LoftLoader / 1.0.1
LoftLoader v1.0.1
trunk 1.0.0 1.0.1 1.0.2 2.0.0 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.3 2.3.1 2.3.2 2.3.3 All 34 releases
loftloader / settings / form / class-loftloader-preview.php

class-loftloader-preview.php in LoftLoader 1.0.1, at settings/form/class-loftloader-preview.php

211 lines 8.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 // Not allowed by directly accessing.
3 if(!defined('ABSPATH')){
4 die('Access not allowed!');
5 }
6 /**
7 * Plugin option form element class
8 * Type Preloader_Preview, actually this includes a set of settings and a preview for these settings
9 *
10 * @package LoftLoader
11 * @version 1.0
12 * @link http://www.loftocean.com/
13 * @author Suihai Huang from Loft Ocean Team
14
15 * @since version 1.0
16 */
17
18 if(!class_exists('LoftLoader_Preloader_Preview')){
19 class LoftLoader_Preloader_Preview extends LoftLoader_Form_Base{
20 private $preview; // Section preview
21 private $setting; // Section setting
22 public function __construct($name, $title, $description, $options, $values, $extra = array()){
23 parent::__construct($name, $title, $description, $options, $values, $extra);
24 // Assign the setting for each section
25 foreach($options as $section){
26 switch($section['section']){
27 case 'preview':
28 $this->preview = $section;
29 break;
30 case 'setting':
31 $this->setting = $section;
32 break;
33 }
34 }
35 }
36 /**
37 * @description rewrite the render function
38 */
39 public function render(){
40 if(!empty($this->preview) && !empty($this->setting)){
41 $replace = array(
42 '[[PREVIEW-TITLE]]' => $this->preview_title(),
43 '[[PREVIEW-DESCRIPTION]]' => $this->preview_description(),
44 '[[PREVIEW-CONTENT]]' => $this->preview_content(),
45 '[[SETTING-CONTENT]]' => $this->setting_content()
46 );
47 echo strtr($this->template(), $replace);
48 }
49 }
50 /**
51 * @description rewrite the html template function
52 */
53 protected function template(){
54 $html = <<<ETO
55 <div class="preview-section">
56 <div class="preview-wrapper"><h3>[[PREVIEW-TITLE]]</h3>[[PREVIEW-DESCRIPTION]][[PREVIEW-CONTENT]]</div>
57 <div class="preview-settings">[[SETTING-CONTENT]]</div>
58 </div>
59 ETO;
60 return $html;
61 }
62 /**
63 * @description add new function to get the preview title
64 */
65 protected function preview_title(){
66 return $this->get_property($this->preview, 'title');
67 }
68 /**
69 * @description add new function to get the preview description
70 */
71 protected function preview_description(){
72 $description = $this->get_property($this->preview, 'description');
73 if($description){
74 return '<span class="description">' . $description . '</span>';
75 }
76 }
77 /**
78 * @description add new function to get the preview content
79 */
80 protected function preview_content(){
81 $html = '<div class="preview-frame">';
82 $html .= '<div id="loftloader-wrapper">';
83 $html .= '<div class="loader-inner"><div id="loader"><span></span></div></div>';
84 $html .= '<div class="loader-section section-up"></div>';
85 $html .= '<div class="loader-section section-down"></div>';
86 $html .= '</div>';
87 $html .= '</div>';
88 return $html;
89 }
90 /**
91 * @description add new function to get the settings content
92 */
93 protected function setting_content(){
94 $html = '';
95 if(!empty($this->setting)){
96 foreach((array)$this->setting['content'] as $item){
97 $returnHTML = $this->setting_section_html($item['content']);
98 if(!empty($returnHTML)){
99 $html .= '<div class="setting-group">';
100 $html .= '<h3>' . $item['title'] . '</h3>';
101 $html .= '<ul>' . $returnHTML . '</ul>';
102 $html .= '</div>';
103 }
104 }
105 }
106 return $html;
107 }
108 /**
109 * @description add new function to get the settings elements html
110 */
111 protected function setting_section_html($section){
112 $html = '';
113 $values = $this->values;
114 foreach((array)$section as $element){
115 $elementHTML = '';
116 if(strpos($element['name'], '[') !== false){
117 $subs = (strpos($element['name'], '[') !== false) ? strtr($element['name'], array(']' => '', '[' => '][')) : $element['name'];
118 $name = $this->name . '[' . $subs . ']'; // Name of the element
119 $value = $values;
120 foreach(explode('][', $subs) as $sub){
121 $value = $value[$sub];
122 }
123 }
124 else{
125 $name = $this->name . '[' . $element['name'] . ']'; // Element name
126 $value = $values[$element['name']]; // Element value
127 }
128 $value = is_array($value) ? $value : trim($value);
129 switch($element['type']){
130 case 'number':
131 $elementHTML .= '<input type=number name="' . $name . '" value="' . $value . '" min=1 max=400 title="Number between 1-400"> px';
132 break;
133 case 'select':
134 if(is_array($element['options']) && (count($element['options']) > 0)){
135 $class = (isset($element['extra']) && isset($element['extra']['class']) && $element['extra']['class']) ? ' class="' . $element['extra']['class'] . '"' : '';
136 $id = (isset($element['extra']) && isset($element['extra']['id']) && $element['extra']['id']) ? ' id="' . $element['extra']['id'] . '"' : '';
137 $elementHTML = '<select name="' . $name . '"'. $class . $id .'>';
138 foreach((array)$element['options'] as $val => $attr){
139 $selected = selected($value, $val, false);
140 $elementHTML .= '<option value="' . $val . '"' . $selected . '>' . $attr['label'] . '</option>';
141 }
142 $elementHTML .= '</select>';
143 }
144 break;
145 case 'color-picker':
146 $id = (isset($element['extra']) && isset($element['extra']['id']) && $element['extra']['id']) ? ' id="' . $element['extra']['id'] . '"' : '';
147 $value = !empty($value) ? $value : $element['options']['defaultValue'];
148 $value = !empty($value) ? $value : '#222222';
149 $elementHTML = '<input' . $id . ' class="loader-color-picker" type="text" name="' . $name . '" value="' . $value . '" data-default-color="' . $value . '" />';
150 break;
151 case 'media':
152 $val = array_filter($value);
153 if(!empty($val)){
154 $elementHTML = '<div class="bg-img-holder"><img src="' . $value['url'] . '"></div>';
155 $elementHTML .= '<a class="button loader-set-image hide">' . esc_html__('Upload Image', 'loftloader') . '</a>';
156 $elementHTML .= '<span class="bg-img-remove">' . esc_html__('Remove Image', 'loftloader') . '</span>';
157 $elementHTML .= '<input class="admin-image-id" type="hidden" value="' . ($value['id'] ? $value['id']: '') . '" name="' . $name . '[id]">';
158 $elementHTML .= '<input class="admin-image-url preloader-preview-image" type="hidden" value="' . ($value['url'] ? $value['url'] : '') . '" name="' . $name . '[url]">';
159 }
160 else{
161 $elementHTML = '<a class="button loader-set-image">' . esc_html__('Upload Image', 'loftloader') . '</a>';
162 $elementHTML .= '<span class="bg-img-remove hide">' . esc_html__('Remove Image', 'loftloader') . '</span>';
163 $elementHTML .= '<input class="admin-image-id" type="hidden" name="' . $name . '[id]">';
164 $elementHTML .= '<input class="admin-image-url preloader-preview-image" type="hidden" name="' . $name . '[url]">';
165 }
166 break;
167 case 'slider':
168 $class = (isset($element['extra']) && isset($element['extra']['class']) && $element['extra']['class']) ? ' ' . $element['extra']['class'] : '';
169 $value = !empty($value) ? $value : $element['options']['default'];
170 $value = !empty($value) ? $value : '100';
171 $min = (isset($element['options']) && isset($element['options']['min']) && $element['options']['min']) ? $element['options']['min'] : 0;
172 $max = (isset($element['options']) && isset($element['options']['max']) && $element['options']['max']) ? $element['options']['max'] : 100;
173 $step = (isset($element['options']) && isset($element['options']['step']) && $element['options']['step']) ? $element['options']['step'] : 5;
174 $elementHTML .= '<label class="amount opacity">';
175 $elementHTML .= '<input name="' . $name . '" type="text" class="opacity-amount" readonly value="' . $value . '">';
176 $elementHTML .= '</label>';
177 $elementHTML .= '<div class="ui-slider loader-ui-slider' . $class . '" data-default="' . intval($value) . '" data-min="' . $min . '" data-max="' . $max . '" data-step="' . $step . '"></div>';
178 $elementHTML .= '</fieldset>';
179 break;
180 }
181 $wrapperClass = (isset($element['extra']) && isset($element['extra']['wrapperClass']) && $element['extra']['wrapperClass']) ? $element['extra']['wrapperClass'] : '';
182 $template = $this->element_template($wrapperClass);
183 $replace = array('[[TITLE]]' => $element['title'], '[[CONTENT]]' => $elementHTML);
184 $html .= strtr($template, $replace);
185 }
186 return !empty($html) ? $html : false;
187 }
188 /**
189 * @description the element template
190 */
191 private function element_template($class){
192 $class = !empty($class) ? ' class="' . $class . '"' : '';
193 $html = <<<ETO
194 <li$class>
195 <h4>[[TITLE]]</h4>
196 <fieldset><legend class="screen-reader-text"><span>[[TITLE]]</span></legend>[[CONTENT]]</fieldset>
197 </li>
198 ETO;
199 return $html;
200 }
201 /**
202 * @description helper function to get the element from array provided
203 */
204 private function get_property($var, $index){
205 if(isset($var[$index])){
206 return $var[$index];
207 }
208 return false;
209 }
210 }
211 }