PluginProbe
Tracking Code Manager / 1.12.0
Tracking Code Manager v1.12.0
2.8.0 2.7.0 trunk 1.11.8 1.11.9 1.12.0 1.12.1 1.12.2 1.12.3 1.4 1.5 2.0.0 2.0.1 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.2.0 All 29 releases
← All changes | includes/admin/editor.php +414 -316 trunk1.12.0 View file →
@@ -1,316 +1,414 @@
1 -<?php
2 -if ( ! defined( 'ABSPATH' ) ) exit;
3 -function tcmp_notice_pro_features() {
4 - global $tcmp;
5 - ?>
6 - <br/>
7 - <div class="message updated below-h2 iwp">
8 - <div style="height:10px;"></div>
9 - <?php
10 - $i = 1;
11 - while ( $tcmp->lang->H( 'Notice.ProHeader' . $i ) ) {
12 - $tcmp->lang->P( 'Notice.ProHeader' . $i );
13 - echo '<br/>';
14 - ++$i;
15 - }
16 - $i = 1;
17 - ?>
18 - <br/>
19 - <?php
20 -
21 - /*$options = array('public' => TRUE, '_builtin' => FALSE);
22 - $q=get_post_types($options, 'names');
23 - if(is_array($q) && count($q)>0) {
24 - sort($q);
25 - $q=implode(', ', $q);
26 - $q='(<b>'.$q.'</b>)';
27 - } else {
28 - $q='';
29 - }*/
30 - $q = '';
31 - while ( $tcmp->lang->H( 'Notice.ProFeature' . $i ) ) {
32 - ?>
33 - <div style="clear:both; margin-top: 2px;"></div>
34 - <div style="float:left; vertical-align:middle; height:24px; margin-right:5px; margin-top:-5px;">
35 - <img src="<?php echo esc_url( TCMP_PLUGIN_IMAGES_URI . 'tick.png' ); ?>" />
36 - </div>
37 - <div style="float:left; vertical-align:middle; height:24px;">
38 - <?php $tcmp->lang->P( 'Notice.ProFeature' . $i, $q ); ?>
39 - </div>
40 - <?php
41 - ++$i;
42 - }
43 - ?>
44 - <div style="clear:both;"></div>
45 - <div style="height:10px;"></div>
46 - <div style="float:right;">
47 - <?php
48 - $url = TCMP_PAGE_PREMIUM . '?utm_source=free-users&utm_medium=wp-cta&utm_campaign=wp-plugin';
49 - ?>
50 - <a href="<?php echo esc_url( $url ); ?>" target="_blank">
51 - <b><?php $tcmp->lang->P( 'Notice.ProCTA' ); ?></b>
52 - </a>
53 - </div>
54 - <div style="height:10px; clear:both;"></div>
55 - </div>
56 - <br/>
57 - <?php
58 -}
59 -function tcmp_ui_editor_check( $snippet ) {
60 - global $tcmp;
61 -
62 - $snippet['trackMode'] = intval( $snippet['trackMode'] );
63 - $snippet['trackPage'] = intval( $snippet['trackPage'] );
64 -
65 - $snippet['includeEverywhereActive'] = 0;
66 - if ( TCMP_TRACK_PAGE_ALL === $snippet['trackPage'] ) {
67 - $snippet['includeEverywhereActive'] = 1;
68 - }
69 - $snippet = $tcmp->manager->sanitize( $snippet['id'], $snippet );
70 -
71 - if ( '' === $snippet['name'] ) {
72 - $tcmp->options->pushErrorMessage( 'Please enter a unique name' );
73 - } else {
74 - $exist = $tcmp->manager->exists( $snippet['name'] );
75 - if ( $exist && $exist['id'] !== $snippet['id'] ) {
76 - //nonostante il tutto il nome deve essee univoco
77 - $tcmp->options->pushErrorMessage( 'You have entered a name that already exists. IDs are NOT case-sensitive' );
78 - }
79 - }
80 - if ( '' === $snippet['code'] ) {
81 - $tcmp->options->pushErrorMessage( 'Paste your HTML Tracking Code into the textarea' );
82 - }
83 -
84 - if ( TCMP_TRACK_MODE_CODE === $snippet['trackMode'] ) {
85 -
86 - $types = $tcmp->utils->query( TCMP_QUERY_POST_TYPES );
87 - if ( TCMP_TRACK_PAGE_SPECIFIC === $snippet['trackPage'] ) {
88 - foreach ( $types as $v ) {
89 - $include_active_key = 'includePostsOfType_' . $v['id'] . '_Active';
90 - $include_array_key = 'includePostsOfType_' . $v['id'];
91 - $except_active_key = 'exceptPostsOfType_' . $v['id'] . '_Active';
92 - $except_array_key = 'exceptPostsOfType_' . $v['id'];
93 -
94 - if ( 1 === $snippet[ $include_active_key ] && 1 === $snippet[ $except_active_key ] ) {
95 - if ( in_array( -1, $snippet[ $include_array_key ] ) && in_array( -1, $snippet[ $except_array_key ] ) ) {
96 - $tcmp->options->pushErrorMessage( 'Error.IncludeExcludeAll', $v['name'] );
97 - }
98 - }
99 - if ( 1 === $snippet[ $include_active_key ] && 0 === count( $snippet[ $include_array_key ] ) ) {
100 - $tcmp->options->pushErrorMessage( 'Error.IncludeSelectAtLeastOne', $v['name'] );
101 - }
102 - }
103 -
104 - //second loop to respect the display order
105 - foreach ( $types as $v ) {
106 - $include_active_key = 'includePostsOfType_' . $v['id'] . '_Active';
107 - $include_array_key = 'includePostsOfType_' . $v['id'];
108 - $except_active_key = 'exceptPostsOfType_' . $v['id'] . '_Active';
109 - $except_array_key = 'exceptPostsOfType_' . $v['id'];
110 -
111 - if ( 1 === $snippet[ $include_active_key ] && in_array( -1, $snippet[ $include_array_key ] ) ) {
112 - if ( 1 === $snippet[ $except_active_key ] && 0 === count( $snippet[ $except_array_key ] ) ) {
113 - $tcmp->options->pushErrorMessage( 'Error.ExcludeSelectAtLeastOne', $v['name'] );
114 - }
115 - }
116 - }
117 - } else {
118 - foreach ( $types as $v ) {
119 - $except_active_key = 'exceptPostsOfType_' . $v['id'] . '_Active';
120 - $except_array_key = 'exceptPostsOfType_' . $v['id'];
121 -
122 - if ( isset( $snippet[ $except_active_key ] )
123 - && 1 === $snippet[ $except_active_key ]
124 - && 0 === count( $snippet[ $except_array_key ] ) ) {
125 - $tcmp->options->pushErrorMessage( 'Error.ExcludeSelectAtLeastOne', $v['name'] );
126 - }
127 - }
128 - }
129 - }
130 -}
131 -function tcmp_ui_editor() {
132 - global $tcmp;
133 -
134 - $tcmp->form->prefix = 'Editor';
135 - $id = tcmp_isqs( 'id', 0 );
136 - if ( 0 === $id && $tcmp->manager->is_limit_reached( false ) ) {
137 - $tcmp->utils->redirect( TCMP_TAB_MANAGER_URI );
138 - }
139 -
140 - $snippet = $tcmp->manager->get( $id, true );
141 - if ( wp_verify_nonce( tcmp_qs( 'tcmp_nonce' ), 'tcmp_nonce' ) ) {
142 - foreach ( $snippet as $k => $v ) {
143 - $snippet[ $k ] = tcmp_qs( $k );
144 - if ( is_string( $snippet[ $k ] ) ) {
145 - $snippet[ $k ] = stripslashes( $snippet[ $k ] );
146 - }
147 - }
148 -
149 - tcmp_ui_editor_check( $snippet );
150 - if ( ! $tcmp->options->hasErrorMessages() ) {
151 - $snippet = $tcmp->manager->put( $snippet['id'], $snippet );
152 - $id = $snippet['id'];
153 - $tcmp->utils->redirect( TCMP_PAGE_MANAGER . '&id=' . $id ); }
154 - }
155 - $tcmp->options->writeMessages();
156 -
157 - $tcmp->form->form_starts();
158 - $tcmp->form->hidden( 'id', $snippet );
159 - $tcmp->form->hidden( 'order', $snippet );
160 -
161 - $tcmp->form->checkbox( 'active', $snippet );
162 - $tcmp->form->text( 'name', $snippet );
163 - $tcmp->form->editor( 'code', $snippet );
164 -
165 - $values = array( TCMP_POSITION_HEAD, TCMP_POSITION_BODY, TCMP_POSITION_FOOTER );
166 - $tcmp->form->dropdown( 'position', $snippet, $values, false );
167 - $values = array( TCMP_DEVICE_TYPE_ALL, TCMP_DEVICE_TYPE_DESKTOP, TCMP_DEVICE_TYPE_MOBILE, TCMP_DEVICE_TYPE_TABLET );
168 - $tcmp->form->dropdown( 'deviceType', $snippet, $values, true );
169 -
170 - $args = array( 'id' => 'box-track-mode' );
171 - $tcmp->form->div_starts( $args );
172 - {
173 - $tcmp->form->p( 'Where do you want to add this code?' );
174 - $tcmp->form->radio( 'trackMode', $snippet['trackMode'], TCMP_TRACK_MODE_CODE );
175 - $plugins = $tcmp->ecommerce->getActivePlugins();
176 - if ( 0 === count( $plugins ) ) {
177 - $plugins = array(
178 - 'Ecommerce' => array(
179 - 'name' => 'Ecommerce',
180 - 'id' => TCMP_PLUGINS_NO_PLUGINS,
181 - 'version' => '',
182 - ),
183 - );
184 - }
185 - $tcmp->form->tag_new = true;
186 - foreach ( $plugins as $k => $v ) {
187 - $ecommerce = $v['name'];
188 - if ( isset( $v['version'] ) && '' !== $v['version'] ) {
189 - $ecommerce .= ' (v.' . $v['version'] . ')';
190 - }
191 - $args = array( 'label' => $tcmp->lang->L( 'Editor.trackMode_1', $ecommerce ) );
192 - $tcmp->form->radio( 'trackMode', $snippet['trackMode'], $v['id'], $args );
193 - }
194 - $tcmp->form->tag_new = false;
195 -
196 - }
197 - $tcmp->form->div_ends();
198 -
199 - $args = array( 'id' => 'box-track-conversion' );
200 - $tcmp->form->div_starts( $args );
201 - {
202 - $tcmp->form->p( 'ConversionProductQuestion' );
203 - ?>
204 - <p style="font-style: italic;"><?php $tcmp->lang->P( 'Editor.PositionBlocked' ); ?></p>
205 - <?php
206 - foreach ( $plugins as $k => $v ) {
207 - $args = array(
208 - 'id' => 'box-track-conversion-' . $v['id'],
209 - 'class' => 'box-track-conversion',
210 - );
211 - $tcmp->form->div_starts( $args );
212 - {
213 - if ( TCMP_PLUGINS_NO_PLUGINS === $v['id'] ) {
214 - $plugins = $tcmp->ecommerce->getPlugins( false );
215 - $ecommerce = '';
216 - foreach ( $plugins as $k => $v ) {
217 - if ( '' !== $ecommerce ) {
218 - $ecommerce .= ', ';
219 - }
220 - $ecommerce .= $k;
221 - }
222 - $tcmp->options->pushErrorMessage( 'Editor.NoEcommerceFound', $ecommerce );
223 - $tcmp->options->writeMessages();
224 - } else {
225 - $post_type = $tcmp->ecommerce->getCustomPostType( $v['id'] );
226 - $key_active = 'CTC_' . $v['id'] . '_Active';
227 - $label = $tcmp->lang->L( 'Editor.EcommerceCheck', $v['name'], $v['version'] );
228 -
229 - if ( '' != $post_type ) {
230 - $args = array(
231 - 'post_type' => $post_type,
232 - 'all' => true,
233 - );
234 - $values = $tcmp->utils->query( TCMP_QUERY_POSTS_OF_TYPE, $args );
235 - $key_array = 'CTC_' . $v['id'] . '_ProductsIds';
236 - if ( 0 === count( $snippet[ $key_array ] ) ) {
237 - //when enabled default selected -1
238 - $snippet[ $key_array ] = array( -1 );
239 - }
240 -
241 - $args = array(
242 - 'label' => $label,
243 - 'class' => 'tcmp-select tcmLineTags',
244 - );
245 - $tcmp->form->labels = false;
246 - $tcmp->form->dropdown( $key_array, $snippet[ $key_array ], $values, true, $args );
247 - $tcmp->form->labels = true;
248 - } else {
249 - $args = array( 'label' => $label );
250 - $tcmp->form->checkbox( $key_active, $snippet[ $key_active ], 1, $args );
251 - }
252 - }
253 - }
254 - $tcmp->form->div_ends();
255 -
256 - $tcmp->form->br();
257 - $tcmp->form->i( 'ConversionDynamicFields' );
258 - $tcmp->form->br();
259 - $tcmp->form->br();
260 - }
261 - }
262 - $tcmp->form->div_ends();
263 -
264 - $args = array( 'id' => 'box-track-code' );
265 - $tcmp->form->div_starts( $args );
266 - {
267 - $tcmp->form->p( 'In which page do you want to insert this code?' );
268 - $tcmp->form->radio( 'trackPage', $snippet['trackPage'], TCMP_TRACK_PAGE_ALL );
269 - $tcmp->form->radio( 'trackPage', $snippet['trackPage'], TCMP_TRACK_PAGE_SPECIFIC );
270 -
271 - //, 'style'=>'margin-top:10px;'
272 - $args = array( 'id' => 'tcmp-include-div' );
273 - $tcmp->form->div_starts( $args );
274 - {
275 - $tcmp->form->p( 'Include tracking code in which pages?' );
276 - tcmp_form_options( 'include', $snippet );
277 - }
278 - $tcmp->form->div_ends();
279 -
280 - $args = array( 'id' => 'tcmp-except-div' );
281 - $tcmp->form->div_starts( $args );
282 - {
283 - $tcmp->form->p( 'Do you want to exclude some specific pages?' );
284 - tcmp_form_options( 'except', $snippet );
285 - }
286 - $tcmp->form->div_ends();
287 - }
288 - $tcmp->form->div_ends();
289 -
290 - $tcmp->form->nonce( 'tcmp_nonce', 'tcmp_nonce' );
291 - tcmp_notice_pro_features();
292 - $tcmp->form->submit( 'Save' );
293 - $tcmp->form->form_ends();
294 -}
295 -
296 -function tcmp_form_options( $prefix, $snippet ) {
297 - global $tcmp;
298 -
299 - $types = $tcmp->utils->query( TCMP_QUERY_POST_TYPES );
300 - foreach ( $types as $v ) {
301 - $args = array(
302 - 'post_type' => $v['id'],
303 - 'all' => true,
304 - );
305 - $values = $tcmp->utils->query( TCMP_QUERY_POSTS_OF_TYPE, $args );
306 - //$tcmp->form->premium=!in_array($v['name'], array('post', 'page'));
307 -
308 - $key_active = $prefix . 'PostsOfType_' . $v['id'] . '_Active';
309 - $key_array = $prefix . 'PostsOfType_' . $v['id'];
310 - if ( 0 === $snippet[ $key_active ] && 0 === count( $snippet[ $key_array ] ) && 'except' != $prefix ) {
311 - //when enabled default selected -1
312 - $snippet[ $key_array ] = array( -1 );
313 - }
314 - $tcmp->form->check_select( $key_active, $key_array, $snippet, $values );
315 - }
316 -}
1 +<?php
2 +function tcmp_notice_pro_features() {
3 + global $tcmp;
4 + ?>
5 + <br/>
6 + <div class="message updated below-h2 iwp">
7 + <div style="height:10px;"></div>
8 + <?php
9 + $i=1;
10 + while($tcmp->Lang->H('Notice.ProHeader'.$i)) {
11 + $tcmp->Lang->P('Notice.ProHeader'.$i);
12 + echo '<br/>';
13 + ++$i;
14 + }
15 + $i=1;
16 + ?>
17 + <br/>
18 + <?php
19 +
20 + /*$options = array('public' => TRUE, '_builtin' => FALSE);
21 + $q=get_post_types($options, 'names');
22 + if(is_array($q) && count($q)>0) {
23 + sort($q);
24 + $q=implode(', ', $q);
25 + $q='(<b>'.$q.'</b>)';
26 + } else {
27 + $q='';
28 + }*/
29 + $q='';
30 + while($tcmp->Lang->H('Notice.ProFeature'.$i)) { ?>
31 + <div style="clear:both; margin-top: 2px;"></div>
32 + <div style="float:left; vertical-align:middle; height:24px; margin-right:5px; margin-top:-5px;">
33 + <img src="<?php echo TCMP_PLUGIN_IMAGES_URI?>tick.png" />
34 + </div>
35 + <div style="float:left; vertical-align:middle; height:24px;">
36 + <?php $tcmp->Lang->P('Notice.ProFeature'.$i, $q)?>
37 + </div>
38 + <?php ++$i;
39 + }
40 + ?>
41 + <div style="clear:both;"></div>
42 + <div style="height:10px;"></div>
43 + <div style="float:right;">
44 + <?php
45 + $url=TCMP_PAGE_PREMIUM.'?utm_source=free-users&utm_medium=wp-cta&utm_campaign=wp-plugin';
46 + ?>
47 + <a href="<?php echo $url?>" target="_blank">
48 + <b><?php $tcmp->Lang->P('Notice.ProCTA')?></b>
49 + </a>
50 + </div>
51 + <div style="height:10px; clear:both;"></div>
52 + </div>
53 + <br/>
54 +<?php }
55 +function tcmp_ui_editor_check($snippet) {
56 + global $tcmp;
57 +
58 + $snippet['trackMode']=intval($snippet['trackMode']);
59 + $snippet['trackPage']=intval($snippet['trackPage']);
60 +
61 + $snippet['includeEverywhereActive']=0;
62 + if($snippet['trackPage']==TCMP_TRACK_PAGE_ALL) {
63 + $snippet['includeEverywhereActive']=1;
64 + }
65 + $snippet=$tcmp->Manager->sanitize($snippet['id'], $snippet);
66 +
67 + if ($snippet['name'] == '') {
68 + $tcmp->Options->pushErrorMessage('Please enter a unique name');
69 + } else {
70 + $exist=$tcmp->Manager->exists($snippet['name']);
71 + if ($exist && $exist['id'] != $snippet['id']) {
72 + //nonostante il tutto il nome deve essee univoco
73 + $tcmp->Options->pushErrorMessage('You have entered a name that already exists. IDs are NOT case-sensitive');
74 + }
75 + }
76 + if ($snippet['code'] == '') {
77 + $tcmp->Options->pushErrorMessage('Paste your HTML Tracking Code into the textarea');
78 + }
79 +
80 + if($snippet['trackMode']==TCMP_TRACK_MODE_CODE) {
81 +
82 + $types=$tcmp->Utils->query(TCMP_QUERY_POST_TYPES);
83 + if($snippet['trackPage']==TCMP_TRACK_PAGE_SPECIFIC) {
84 + foreach ($types as $v) {
85 + $includeActiveKey='includePostsOfType_'.$v['id'].'_Active';
86 + $includeArrayKey='includePostsOfType_'.$v['id'];
87 + $exceptActiveKey='exceptPostsOfType_'.$v['id'].'_Active';
88 + $exceptArrayKey='exceptPostsOfType_'.$v['id'];
89 +
90 + if ($snippet[$includeActiveKey] == 1 && $snippet[$exceptActiveKey] == 1) {
91 + if (in_array(-1, $snippet[$includeArrayKey]) && in_array(-1, $snippet[$exceptArrayKey])) {
92 + $tcmp->Options->pushErrorMessage('Error.IncludeExcludeAll', $v['name']);
93 + }
94 + }
95 + if ($snippet[$includeActiveKey] == 1 && count($snippet[$includeArrayKey]) == 0) {
96 + $tcmp->Options->pushErrorMessage('Error.IncludeSelectAtLeastOne', $v['name']);
97 + }
98 + }
99 +
100 + //second loop to respect the display order
101 + foreach ($types as $v) {
102 + $includeActiveKey='includePostsOfType_'.$v['id'].'_Active';
103 + $includeArrayKey='includePostsOfType_'.$v['id'];
104 + $exceptActiveKey='exceptPostsOfType_'.$v['id'].'_Active';
105 + $exceptArrayKey='exceptPostsOfType_'.$v['id'];
106 +
107 + if ($snippet[$includeActiveKey] == 1 && in_array(-1, $snippet[$includeArrayKey])) {
108 + if ($snippet[$exceptActiveKey] == 1 && count($snippet[$exceptArrayKey]) == 0) {
109 + $tcmp->Options->pushErrorMessage('Error.ExcludeSelectAtLeastOne', $v['name']);
110 + }
111 + }
112 + }
113 + } else {
114 + foreach($types as $v) {
115 + $exceptActiveKey='exceptPostsOfType_'.$v['id'].'_Active';
116 + $exceptArrayKey='exceptPostsOfType_'.$v['id'];
117 +
118 + if(isset($snippet[$exceptActiveKey])
119 + && $snippet[$exceptActiveKey]==1
120 + && count($snippet[$exceptArrayKey])==0) {
121 + $tcmp->Options->pushErrorMessage('Error.ExcludeSelectAtLeastOne', $v['name']);
122 + }
123 + }
124 + }
125 + }
126 +}
127 +function tcmp_ui_editor() {
128 + global $tcmp;
129 +
130 + $tcmp->Form->prefix='Editor';
131 + $id=TCMP_ISQS('id', 0);
132 + if($id==0 && $tcmp->Manager->isLimitReached(FALSE)) {
133 + $tcmp->Utils->redirect(TCMP_TAB_MANAGER_URI);
134 + }
135 +
136 + $snippet=$tcmp->Manager->get($id, TRUE);
137 + if (wp_verify_nonce(TCMP_QS('tcmp_nonce'), 'tcmp_nonce')) {
138 + foreach ($snippet as $k=>$v) {
139 + $snippet[$k]=TCMP_QS($k);
140 + if (is_string($snippet[$k])) {
141 + $snippet[$k]=stripslashes($snippet[$k]);
142 + }
143 + }
144 +
145 + tcmp_ui_editor_check($snippet);
146 + if (!$tcmp->Options->hasErrorMessages()) {
147 + $snippet=$tcmp->Manager->put($snippet['id'], $snippet);
148 + /*if ($id <= 0) {
149 + $tcmp->Options->pushSuccessMessage('Editor.Add', $snippet['id'], $snippet['name']);
150 + $snippet=$tcmp->Manager->get('', TRUE);
151 + } else {
152 + $tcmp->Utils->redirect(TCMP_PAGE_MANAGER.'&id='.$id);
153 + exit();
154 + }*/
155 + $id=$snippet['id'];
156 + $tcmp->Utils->redirect(TCMP_PAGE_MANAGER.'&id='.$id); }
157 + }
158 + $tcmp->Options->writeMessages()
159 + ?>
160 + <script>
161 + jQuery(function(){
162 + //enable/disable some part of except creating coherence
163 + function tcmCheckVisible() {
164 + var $mode=jQuery('[name=trackMode]:checked');
165 + var showTrackCode=false;
166 + var showTrackConversion=false;
167 + if($mode.length>0) {
168 + if(parseInt($mode.val())!=<?php echo TCMP_TRACK_MODE_CODE ?>) {
169 + showTrackConversion=true;
170 + jQuery('#position-box').hide();
171 +
172 + tcmShowHide('.box-track-conversion', false);
173 + tcmShowHide('#box-track-conversion-'+$mode.val(), true);
174 + } else {
175 + showTrackCode=true;
176 + jQuery('#position-box').show();
177 + }
178 + }
179 + tcmShowHide('#box-track-conversion', showTrackConversion);
180 + tcmShowHide('#box-track-code', showTrackCode);
181 +
182 + var $all=jQuery('[name=trackPage]:checked');
183 + if($all.length>0 && parseInt($all.val())==<?php echo TCMP_TRACK_PAGE_SPECIFIC ?>) {
184 + showExcept=false;
185 + jQuery('[type=checkbox]').each(function() {
186 + var $check=jQuery(this);
187 + var id=TCMP.attr($check, 'id', '');
188 + if(TCMP.startsWith(id, 'include')) {
189 + var $select=id.replace('_Active', '');
190 + $select=TCMP.jQuery($select);
191 +
192 + isCheck=$check.is(':checked');
193 + selection=$select.select2('val');
194 + found=false;
195 + for(i=0; i<selection.length; i++) {
196 + if(parseInt(selection[i])==-1){
197 + found=true;
198 + }
199 + }
200 +
201 + var $except=id.replace('_Active', '');
202 + $except=$except.replace('Active', '')+'Box';
203 + $except=$except.substr('include'.length);
204 + $except='except'+$except;
205 + $except=jQuery('[id='+$except+']');
206 +
207 + if(found) {
208 + showExcept=true;
209 + if($except.length>0) {
210 + $except.show();
211 + }
212 + } else {
213 + if($except.length>0) {
214 + $except.hide();
215 + }
216 + }
217 + }
218 + });
219 + }
220 +
221 + showInclude=false;
222 + if($all.length==0) {
223 + showExcept=false;
224 + } else {
225 + if(parseInt($all.val())==<?php echo TCMP_TRACK_PAGE_ALL ?>) {
226 + showExcept=true;
227 + } else {
228 + showInclude=true;
229 + }
230 + }
231 + tcmShowHide('#tcmp-except-div', showExcept);
232 + tcmShowHide('#tcmp-include-div', showInclude);
233 + }
234 + function tcmShowHide(selector, show) {
235 + $selector=jQuery(selector);
236 + if(show) {
237 + $selector.show();
238 + } else {
239 + $selector.hide();
240 + }
241 + }
242 +
243 + /*jQuery(".tcmTags").select2({
244 + placeholder: "Type here..."
245 + , theme: "classic"
246 + }).on('change', function() {
247 + tcmCheckVisible();
248 + });*/
249 + jQuery('.tcmLineTags,.tcmp-dropdown').select2({
250 + placeholder: "Type here..."
251 + , theme: "classic"
252 + , width: '550px'
253 + });
254 +
255 + jQuery('.tcmp-hideShow').click(function() {
256 + tcmCheckVisible();
257 + });
258 + jQuery('.tcmp-hideShow, input[type=checkbox], input[type=radio]').change(function() {
259 + tcmCheckVisible();
260 + });
261 + jQuery('.tcmLineTags').on('change', function() {
262 + tcmCheckVisible();
263 + });
264 + tcmCheckVisible();
265 + });
266 + </script>
267 + <?php
268 +
269 + $tcmp->Form->formStarts();
270 + $tcmp->Form->hidden('id', $snippet);
271 + $tcmp->Form->hidden('order', $snippet);
272 +
273 + $tcmp->Form->checkbox('active', $snippet);
274 + $tcmp->Form->text('name', $snippet);
275 + $tcmp->Form->editor('code', $snippet);
276 +
277 + $values=array(TCMP_POSITION_HEAD, TCMP_POSITION_BODY, TCMP_POSITION_FOOTER);
278 + $tcmp->Form->dropdown('position', $snippet, $values, FALSE);
279 + $values=array(TCMP_DEVICE_TYPE_ALL, TCMP_DEVICE_TYPE_DESKTOP, TCMP_DEVICE_TYPE_MOBILE, TCMP_DEVICE_TYPE_TABLET);
280 + $tcmp->Form->dropdown('deviceType', $snippet, $values, TRUE);
281 +
282 + $args=array('id'=>'box-track-mode');
283 + $tcmp->Form->divStarts($args);
284 + {
285 + $tcmp->Form->p('Where do you want to add this code?');
286 + $tcmp->Form->radio('trackMode', $snippet['trackMode'], TCMP_TRACK_MODE_CODE);
287 + $plugins=$tcmp->Ecommerce->getActivePlugins();
288 + if(count($plugins)==0) {
289 + $plugins=array('Ecommerce'=>array(
290 + 'name'=>'Ecommerce'
291 + , 'id'=>TCMP_PLUGINS_NO_PLUGINS
292 + , 'version'=>'')
293 + );
294 + }
295 + $tcmp->Form->tagNew=TRUE;
296 + foreach($plugins as $k=>$v) {
297 + $ecommerce=$v['name'];
298 + if(isset($v['version']) && $v['version']!='') {
299 + $ecommerce.=' (v.'.$v['version'].')';
300 + }
301 + $args=array('label'=>$tcmp->Lang->L('Editor.trackMode_1', $ecommerce));
302 + $tcmp->Form->radio('trackMode', $snippet['trackMode'], $v['id'], $args);
303 + }
304 + $tcmp->Form->tagNew=FALSE;
305 +
306 + }
307 + $tcmp->Form->divEnds();
308 +
309 + $args=array('id'=>'box-track-conversion');
310 + $tcmp->Form->divStarts($args);
311 + {
312 + $tcmp->Form->p('ConversionProductQuestion');
313 + ?>
314 + <p style="font-style: italic;"><?php $tcmp->Lang->P('Editor.PositionBlocked') ?></p>
315 + <?php
316 + foreach($plugins as $k=>$v) {
317 + $args=array('id'=>'box-track-conversion-'.$v['id'], 'class'=>'box-track-conversion');
318 + $tcmp->Form->divStarts($args);
319 + {
320 + if($v['id']==TCMP_PLUGINS_NO_PLUGINS) {
321 + $plugins=$tcmp->Ecommerce->getPlugins(FALSE);
322 + $ecommerce='';
323 + foreach($plugins as $k=>$v) {
324 + if($ecommerce!='') {
325 + $ecommerce.=', ';
326 + }
327 + $ecommerce.=$k;
328 + }
329 + $tcmp->Options->pushErrorMessage('Editor.NoEcommerceFound', $ecommerce);
330 + $tcmp->Options->writeMessages();
331 + } else {
332 + $postType=$tcmp->Ecommerce->getCustomPostType($v['id']);
333 + $keyActive='CTC_'.$v['id'].'_Active';
334 + $label=$tcmp->Lang->L('Editor.EcommerceCheck', $v['name'], $v['version']);
335 +
336 + if($postType!='') {
337 + $args=array('post_type'=>$postType, 'all'=>TRUE);
338 + $values=$tcmp->Utils->query(TCMP_QUERY_POSTS_OF_TYPE, $args);
339 + $keyArray='CTC_'.$v['id'].'_ProductsIds';
340 + if(count($snippet[$keyArray])==0) {
341 + //when enabled default selected -1
342 + $snippet[$keyArray]=array(-1);
343 + }
344 +
345 + $args=array('label'=>$label, 'class'=>'tcmp-select tcmLineTags');
346 + $tcmp->Form->labels=FALSE;
347 + $tcmp->Form->dropdown($keyArray, $snippet[$keyArray], $values, TRUE, $args);
348 + $tcmp->Form->labels=TRUE;
349 + } else {
350 + $args=array('label'=>$label);
351 + $tcmp->Form->checkbox($keyActive, $snippet[$keyActive], 1, $args);
352 + }
353 + }
354 + }
355 + $tcmp->Form->divEnds();
356 +
357 + $tcmp->Form->br();
358 + $tcmp->Form->i('ConversionDynamicFields');
359 + $tcmp->Form->br();
360 + $tcmp->Form->br();
361 + }
362 + }
363 + $tcmp->Form->divEnds();
364 +
365 + $args=array('id'=>'box-track-code');
366 + $tcmp->Form->divStarts($args);
367 + {
368 + $tcmp->Form->p('In which page do you want to insert this code?');
369 + $tcmp->Form->radio('trackPage', $snippet['trackPage'], TCMP_TRACK_PAGE_ALL);
370 + $tcmp->Form->radio('trackPage', $snippet['trackPage'], TCMP_TRACK_PAGE_SPECIFIC);
371 +
372 + //, 'style'=>'margin-top:10px;'
373 + $args=array('id'=>'tcmp-include-div');
374 + $tcmp->Form->divStarts($args);
375 + {
376 + $tcmp->Form->p('Include tracking code in which pages?');
377 + tcmp_formOptions('include', $snippet);
378 + }
379 + $tcmp->Form->divEnds();
380 +
381 + $args=array('id'=>'tcmp-except-div');
382 + $tcmp->Form->divStarts($args);
383 + {
384 + $tcmp->Form->p('Do you want to exclude some specific pages?');
385 + tcmp_formOptions('except', $snippet);
386 + }
387 + $tcmp->Form->divEnds();
388 + }
389 + $tcmp->Form->divEnds();
390 +
391 + $tcmp->Form->nonce('tcmp_nonce', 'tcmp_nonce');
392 + tcmp_notice_pro_features();
393 + $tcmp->Form->submit('Save');
394 + $tcmp->Form->formEnds();
395 +}
396 +
397 +function tcmp_formOptions($prefix, $snippet) {
398 + global $tcmp;
399 +
400 + $types=$tcmp->Utils->query(TCMP_QUERY_POST_TYPES);
401 + foreach($types as $v) {
402 + $args=array('post_type'=>$v['id'], 'all'=>TRUE);
403 + $values=$tcmp->Utils->query(TCMP_QUERY_POSTS_OF_TYPE, $args);
404 + //$tcmp->Form->premium=!in_array($v['name'], array('post', 'page'));
405 +
406 + $keyActive=$prefix.'PostsOfType_'.$v['id'].'_Active';
407 + $keyArray=$prefix.'PostsOfType_'.$v['id'];
408 + if($snippet[$keyActive]==0 && count($snippet[$keyArray])==0 && $prefix!='except') {
409 + //when enabled default selected -1
410 + $snippet[$keyArray]=array(-1);
411 + }
412 + $tcmp->Form->checkSelect($keyActive, $keyArray, $snippet, $values);
413 + }
414 +}