PluginProbe ʕ •ᴥ•ʔ
Interactive Image Map Builder / trunk
Interactive Image Map Builder vtrunk
3.2 trunk 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1
interactive-image-map-builder / shortcode.php
interactive-image-map-builder Last commit date
assets 3 months ago settings 3 months ago functions.php 3 months ago header.php 2 years ago home.php 1 year ago index.php 14 hours ago license.php 2 years ago output-common-css.css 10 months ago output-css.php 2 years ago readme.txt 14 hours ago shortcode.php 1 year ago template-menu.php 2 years ago
shortcode.php
215 lines
1 <?php
2 global $wpdb;
3 $style_table = $wpdb->prefix . 'isimb_6310_style';
4 $font_awesome = isimb_6310_get_option('isimb_6310_font_awesome_status');
5 $closeIcon = isimb_6310_get_option('isimb_6310_close_icon');
6 $desktopSize = isimb_6310_get_option('isimb_6310_desktop_size');
7 $mobileSize = isimb_6310_get_option('isimb_6310_mobile_size');
8
9 $closeIcon = $closeIcon ? esc_attr($closeIcon) : 'https://wpmart.org/wp-content/uploads/2022/08/close.png';
10 $desktopSize = $desktopSize ? esc_attr($desktopSize) : 30;
11 $mobileSize = $mobileSize ? esc_attr($mobileSize) : 20;
12
13 $admin_login = 0;
14 if (is_user_logged_in()) {
15 $current_user = wp_get_current_user();
16 if (in_array('editor', $current_user->roles) || in_array('administrator', $current_user->roles)) {
17 $admin_login = 1;
18 }
19 }
20 wp_enqueue_script('jquery');
21
22 $cssData = [];
23 if ($ids) {
24 $styledata = $wpdb->get_row($wpdb->prepare("SELECT * FROM $style_table WHERE id = %d ", $ids), ARRAY_A);
25 if (!$styledata) return;
26 $css = explode("!!##!!", $styledata['css']);
27 $key = explode(",", $css[0]);
28 $value = explode("||##||", $css[1]);
29 $filterKey = [];
30 $filterValue = [];
31 for ($i = 0; $i < count($key); $i++) {
32 $filterKey[] = esc_attr($key[$i]);
33 }
34 for ($i = 0; $i < count($value); $i++) {
35 $filterValue[] = esc_attr($value[$i]);
36 }
37 $cssData = array_combine($filterKey, $filterValue);
38 }
39 $jsonData = isset($cssData['json_data']) ? json_decode(stripslashes(html_entity_decode($cssData['json_data']))) : [];
40 $font_awesome = isimb_6310_get_option('isimb_6310_font_awesome_status');
41 if ($font_awesome != 1) {
42 wp_enqueue_style('isimb-6310-font-awesome-5-0-13', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/all.min.css');
43 wp_enqueue_style('isimb-6310-font-awesome-4-07', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css');
44 }
45 wp_enqueue_style('isimb-6310-jquery-ui-css', 'https://code.jquery.com/ui/1.13.0/themes/base/jquery-ui.css');
46 wp_enqueue_script('isimb-6310-jquery-ui', 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js', array('jquery'), TRUE);
47 wp_enqueue_style('isimb-6310-owl-carousel', plugins_url('output-common-css.css', __FILE__));
48 include isimb_6310_plugin_url . "output-css.php";
49
50 $image_zoom = isset($cssData['zoom_feature']) ? esc_attr($cssData['zoom_feature']) : 0;
51 $tooltip_position = isset($cssData['tooltip_position']) ? esc_attr($cssData['tooltip_position']) : 0;
52 $top_bottom = isset($cssData['top_bottom']) ? esc_attr($cssData['top_bottom']) : 0;
53 $left_right = isset($cssData['left_right']) ? esc_attr($cssData['left_right']) : 0;
54
55 if ($image_zoom == 2) {
56 $image_zoom = 1;
57 } else {
58 $image_zoom = 0;
59 }
60 ?>
61 <div class="isimb-6310-annotation-box-wrapper isimb-6310-annotation-box-wrapper-<?php echo $ids; ?>">
62 <div class="isimb-6310-zoom-buttons" style="display: none;">
63 <img src="<?php echo isset($cssData['zoom_in_icon']) && $cssData['zoom_in_icon'] ? esc_url($cssData['zoom_in_icon']) : isimb_6310_plugin_dir_url . 'assets/images/zoom-in.png' ?>" alt="" class="isimb-6310-zoom-in">
64 <img src="<?php echo isset($cssData['zoom_out_icon']) && $cssData['zoom_out_icon'] ? esc_url($cssData['zoom_out_icon']) : isimb_6310_plugin_dir_url . 'assets/images/zoom-out.png' ?>" alt="" class="isimb-6310-zoom-out">
65 </div>
66 <div class="isimb-6310-builder-box isimb-6310-builder-box-<?php echo $ids; ?>"
67 data-id="<?php echo $ids; ?>"
68 data-image-zoom="<?php echo $admin_login ? $image_zoom : 0; ?>"
69 data-tooltip-position="<?php echo $admin_login ? $tooltip_position : 0; ?>"
70 data-top-bottom="<?php echo $top_bottom; ?>"
71 data-left-right="<?php echo $left_right; ?>"
72 data-login-status="<?php echo $admin_login; ?>">
73 <div class="isimb-6310-annotation-box-inner">
74 <svg class="isimb-6310-main-svg isimb-6310-main-svg-<?php echo $ids ?>">
75 <?php
76 if ($jsonData) {
77 $counter = 1;
78 foreach ($jsonData as $js) {
79 $jsonCode = json_encode($js);
80 if ($js->viewMoodType == 2) {
81 $classlist = "isimb-6310-pol-loaded isimb-6310-pol-{$ids}-{$counter} isimb-6310-modal-element";
82 } else {
83 $classlist = "isimb-6310-pol-loaded isimb-6310-pol-{$ids}-{$counter}";
84 }
85
86 $url = '';
87 if (isset($js->linkURL) && $js->linkURL && isset($js->linkingArea) && $js->linkingArea == 1) {
88 $url = "data-link-url='{$js->linkURL}'" . (isset($js->openNewTab) && $js->openNewTab ? ' data-target="_blank" ' : '');
89 }
90 echo "<polygon title='' data-id='{$ids}-{$counter}' {$url} class= '{$classlist}' data-json='" . esc_attr($jsonCode) . "' />";
91 $pointCssCode = "
92 .ui-tooltip{
93 padding:0 !important;
94 }
95 .ui-widget-content{
96 border: none !important;
97 background: none;
98 }
99 .ui-widget-shadow{
100 box-shadow: none;
101 }
102 .isimb-6310-main-svg .isimb-6310-pol-{$ids}-{$counter}{
103 fill: " . esc_attr($js->selectAreaColor) . " !important;
104 stroke:" . esc_attr($js->areaBorderColor) . " !important;
105 stroke-width:" . esc_attr($js->areaBorderSize) . "px !important;
106 }
107 .isimb-6310-main-svg .isimb-6310-pol-{$ids}-{$counter}:hover{
108 fill: " . esc_attr($js->selectAreaHoverColor) . " !important;
109 stroke:" . esc_attr($js->areaBorderHoverColor) . " !important;
110 stroke-width:" . esc_attr($js->areaBorderSize) . "px !important;
111 cursor: pointer;
112 filter: drop-shadow(0px 0px " . esc_attr($js->areaShadowith) . "px " . esc_attr($js->areaShadowColor) . ");
113 }
114 ";
115 wp_register_style("isimb-6310-template-{$ids}-{$counter}-css", "");
116 wp_enqueue_style("isimb-6310-template-{$ids}-{$counter}-css");
117 wp_add_inline_style("isimb-6310-template-{$ids}-{$counter}-css", $pointCssCode);
118
119 if ($counter == 4) break;
120 $counter++;
121 }
122 }
123 ?>
124 </svg>
125 <?php
126 $counter = 1;
127 foreach ($jsonData as $js) {
128 isimb_6310_load_templates($js, $counter, $ids);
129 $counter++;
130 }
131 ?>
132 <img src="<?php echo isset($cssData['main_image']) ? $cssData['main_image'] : '' ?>" class="isimb-6310-main-image isimb-6310-img" data-isimb-cls="isimb-6310-main-image isimb-6310-img" data-isimb-value="<?php echo isset($cssData['main_image']) ? $cssData['main_image'] : '' ?>" />
133 <?php
134 $pointCssCode = "
135 .isimb-6310-main-svg-{$ids}{
136 background-image: url(" . (isset($cssData['main_image']) ? $cssData['main_image'] : '') . ");
137 }
138 ";
139 wp_register_style("isimb-6310-template-main-css-{$ids}", "");
140 wp_enqueue_style("isimb-6310-template-main-css-{$ids}");
141 wp_add_inline_style("isimb-6310-template-main-css-{$ids}", $pointCssCode);
142 ?>
143
144 </div>
145 </div>
146 </div>
147
148 <?php
149 $customCSS = $cssData['custom_css'];
150 $customCSS .= "
151 .isimb-6310-close-button{
152 width: {$desktopSize}px;
153 height: {$desktopSize}px;
154 background-image: url('{$closeIcon}');
155 right: -" . ($desktopSize / 2) . "px;
156 top: -" . ($desktopSize / 2) . "px;
157 background-size: cover;
158 }
159 .isimb-6310-close-button-mobile{
160 display: none;
161 }
162 @media screen and (max-width: 767px) {
163 .isimb-6310-close-button{
164 width: {$mobileSize}px;
165 height: {$mobileSize}px;
166 right: -" . ($mobileSize / 2) . "px;
167 top: -" . ($mobileSize / 2) . "px;
168 background-size: cover;
169 }
170 .isimb-6310-close-button-mobile{
171 display: block;
172 }
173 }
174 ";
175 if ($admin_login) {
176 $customCSS .= "
177 .isimb-6310-annotation-box-wrapper-{$ids} .isimb-6310-zoom-buttons{
178 display: " . (isset($cssData['zoom_feature']) && $cssData['zoom_feature'] == 2 && $cssData['display_device'] != 1 ? 'flex' : 'none') . " !important;
179 justify-content: " . (isset($cssData['icon_position']) ? $cssData['icon_position'] : 'flex-start') . ";
180 margin-bottom: 20px;
181 }
182 .isimb-6310-annotation-box-wrapper-{$ids} .isimb-6310-zoom-buttons img{
183 width: " . (isset($cssData['desktop_icon_size']) ? $cssData['desktop_icon_size'] : '30') . "px;
184 height: " . (isset($cssData['desktop_icon_size']) ? $cssData['desktop_icon_size'] : '30') . "px;
185 cursor: pointer;
186 margin: 0 10px;
187 }
188 @media screen and (max-width: 767px) {
189 .isimb-6310-annotation-box-wrapper-{$ids} .isimb-6310-zoom-buttons{
190 display: " . (isset($cssData['zoom_feature']) && $cssData['zoom_feature'] == 2 && $cssData['display_device'] != 2 ? 'flex' : 'none') . " !important;
191 }
192 .isimb-6310-annotation-box-wrapper-{$ids} .isimb-6310-zoom-buttons img{
193 width: " . (isset($cssData['mobile_icon_size']) ? $cssData['mobile_icon_size'] : '25') . "px;
194 height: " . (isset($cssData['mobile_icon_size']) ? $cssData['mobile_icon_size'] : '25') . "px;
195 margin: 0 10px;
196 }
197 }
198 ";
199 }
200
201 if ($admin_login && $image_zoom) {
202 $customCSS .= "
203 .isimb-6310-builder-box-{$ids} .isimb-6310-annotation-box-inner{
204 cursor: grab;
205 }
206 ";
207 }
208
209 wp_register_style("isimb-6310-custom-code-" . esc_attr($ids) . "-css", "");
210 wp_enqueue_style("isimb-6310-custom-code-" . esc_attr($ids) . "-css");
211 wp_add_inline_style("isimb-6310-custom-code-" . esc_attr($ids) . "-css", $customCSS);
212
213 wp_enqueue_script('isimb-6310-output', plugins_url('assets/js/main-output-file.js', __FILE__), array('jquery'), TRUE);
214 wp_enqueue_script('isimb-6310-zoom-in-out-drag', plugins_url('assets/js/zoom-in-out-drag.js', __FILE__), array('jquery'), TRUE);
215 ?>