Version Description
Release Date - 2021-06-17
- IWP-225 Fix PHP 8 Warning
Download this release
Release Info
Developer | IntellyWP |
Plugin | Tracking Code Manager |
Version | 2.0.2 |
Comparing to | |
See all releases |
Code changes from version 2.0.1 to 2.0.2
- includes/admin/manager.php +3 -3
- includes/classes/ui/Form.php +485 -485
- includes/classes/utils/Ecommerce.php +178 -178
- index.php +122 -122
- languages/Lang.txt +179 -179
- readme.txt +234 -229
includes/admin/manager.php
CHANGED
@@ -39,9 +39,9 @@ function tcmp_ui_manager() {
|
|
39 |
if ($tcmp->Manager->remove($id)) {
|
40 |
$tcmp->Options->pushSuccessMessage('CodeDeleteNotice', $id, $snippet['name']);
|
41 |
}
|
42 |
-
} else if($id!='') {
|
43 |
-
$snippet
|
44 |
-
|
45 |
$snippet['active']=($snippet['active']==0 ? 1 : 0);
|
46 |
$tcmp->Manager->put($snippet['id'], $snippet);
|
47 |
}
|
39 |
if ($tcmp->Manager->remove($id)) {
|
40 |
$tcmp->Options->pushSuccessMessage('CodeDeleteNotice', $id, $snippet['name']);
|
41 |
}
|
42 |
+
} else if ($id != '' && $id != 0) {
|
43 |
+
$snippet = $tcmp->Manager->get($id);
|
44 |
+
if ($tcmp->Utils->is('action', 'toggle') && $id>0 && wp_verify_nonce(TCMP_QS('tcmp_nonce'), 'tcmp_toggle')) {
|
45 |
$snippet['active']=($snippet['active']==0 ? 1 : 0);
|
46 |
$tcmp->Manager->put($snippet['id'], $snippet);
|
47 |
}
|
includes/classes/ui/Form.php
CHANGED
@@ -1,486 +1,486 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
if ( ! defined( 'ABSPATH' ) ) exit;
|
4 |
-
|
5 |
-
class TCMP_Form {
|
6 |
-
var $prefix='Form';
|
7 |
-
var $labels=TRUE;
|
8 |
-
var $leftLabels=TRUE;
|
9 |
-
var $newline;
|
10 |
-
|
11 |
-
var $tags=TRUE;
|
12 |
-
var $onlyPremium=TRUE;
|
13 |
-
var $leftTags=FALSE;
|
14 |
-
var $premium=FALSE;
|
15 |
-
var $tagNew=FALSE;
|
16 |
-
|
17 |
-
public function __construct() {
|
18 |
-
}
|
19 |
-
|
20 |
-
//args can be a string or an associative array if you want
|
21 |
-
private function getTextArgs($args, $defaults, $excludes=array()) {
|
22 |
-
$result=$args;
|
23 |
-
if(is_array($result) && count($result)>0) {
|
24 |
-
$result='';
|
25 |
-
foreach($args as $k=>$v) {
|
26 |
-
if(count($excludes)==0 || !in_array($k, $excludes)) {
|
27 |
-
$result.=' '.$k.'="'.$v.'"';
|
28 |
-
}
|
29 |
-
}
|
30 |
-
} elseif(!$args) {
|
31 |
-
$result='';
|
32 |
-
}
|
33 |
-
if(is_array($defaults) && count($defaults)>0) {
|
34 |
-
foreach($defaults as $k=>$v) {
|
35 |
-
if(count($excludes)==0 || !in_array($k, $excludes)) {
|
36 |
-
if(stripos($result, $k.'=')===FALSE) {
|
37 |
-
$result.=' '.$k.'="'.$v.'"';
|
38 |
-
}
|
39 |
-
}
|
40 |
-
}
|
41 |
-
}
|
42 |
-
return $result;
|
43 |
-
}
|
44 |
-
|
45 |
-
public function tag($overridePremium=FALSE) {
|
46 |
-
global $tcmp;
|
47 |
-
/*
|
48 |
-
$premium=($overridePremium || $this->premium);
|
49 |
-
if((!$overridePremium && !$this->tags) || $tcmp->License->hasPremium() || ($this->onlyPremium && !$premium)) return;
|
50 |
-
|
51 |
-
$tagClass='tcmp-tag-free';
|
52 |
-
$tagText='FREE';
|
53 |
-
if($premium) {
|
54 |
-
$tagClass='tcmp-tag-premium';
|
55 |
-
$tagText='<a href="'.TCMP_PAGE_PREMIUM.'" target="_new">PRO</a>';
|
56 |
-
}
|
57 |
-
*/
|
58 |
-
if(!$this->tags || !$this->tagNew) {
|
59 |
-
return;
|
60 |
-
}
|
61 |
-
|
62 |
-
$tagClass='tcmp-tag-free';
|
63 |
-
$tagText='NEW!';
|
64 |
-
?>
|
65 |
-
<div style="float:left;" class="tcmp-tag <?php echo $tagClass?>"><?php echo $tagText?></div>
|
66 |
-
<?php
|
67 |
-
}
|
68 |
-
|
69 |
-
public function label($name, $options='') {
|
70 |
-
global $tcmp;
|
71 |
-
$defaults=array('class'=>'');
|
72 |
-
$otherText=$this->getTextArgs($options, $defaults, array('label', 'id'));
|
73 |
-
|
74 |
-
$k=$this->prefix.'.'.$name;
|
75 |
-
if(!is_array($options)) {
|
76 |
-
$options=array();
|
77 |
-
}
|
78 |
-
if(isset($options['label']) && $options['label']) {
|
79 |
-
$k=$options['label'];
|
80 |
-
}
|
81 |
-
|
82 |
-
$label=$tcmp->Lang->L($k);
|
83 |
-
$for=(isset($options['id']) ? $options['id'] : $name);
|
84 |
-
|
85 |
-
//check if is a mandatory field by checking the .txt language file
|
86 |
-
$k=$this->prefix.'.'.$name.'.check';
|
87 |
-
if($tcmp->Lang->H($k)) {
|
88 |
-
$label.=' (*)';
|
89 |
-
}
|
90 |
-
|
91 |
-
$aClass='';
|
92 |
-
/*
|
93 |
-
if($this->premium && !$tcmp->License->hasPremium()) {
|
94 |
-
$aClass='tcmp-label-disabled';
|
95 |
-
}
|
96 |
-
*/
|
97 |
-
?>
|
98 |
-
<label for="<?php echo $for?>" <?php echo $otherText?> >
|
99 |
-
<?php if($this->leftTags) {
|
100 |
-
$this->tag();
|
101 |
-
}?>
|
102 |
-
<span style="float:left; margin-right:5px;" class="<?php echo $aClass?>"><?php echo $label?></span>
|
103 |
-
<?php if(!$this->leftTags) {
|
104 |
-
$this->tag();
|
105 |
-
}?>
|
106 |
-
</label>
|
107 |
-
<?php }
|
108 |
-
|
109 |
-
public function leftInput($name, $options='') {
|
110 |
-
if(!$this->labels) return;
|
111 |
-
if($this->leftLabels) {
|
112 |
-
$this->label($name, $options);
|
113 |
-
}
|
114 |
-
|
115 |
-
if($this->newline) {
|
116 |
-
$this->newline();
|
117 |
-
}
|
118 |
-
}
|
119 |
-
|
120 |
-
public function newline() {
|
121 |
-
?><div class="tcmp-form-newline"></div><?php
|
122 |
-
}
|
123 |
-
|
124 |
-
public function rightInput($name, $args='') {
|
125 |
-
if(!$this->labels) return;
|
126 |
-
if (!$this->leftLabels) {
|
127 |
-
$this->label($name, $args);
|
128 |
-
}
|
129 |
-
$this->newline();
|
130 |
-
}
|
131 |
-
|
132 |
-
public function formStarts($method='post', $action='', $args=NULL) {
|
133 |
-
//$this->tags=FALSE;
|
134 |
-
//$this->premium=FALSE;
|
135 |
-
|
136 |
-
//$defaults=array('style'=>'margin:1em 0; padding:1px 1em; background:#fff; border:1px solid #ccc;'
|
137 |
-
$defaults=array('class'=>'tcmp-form');
|
138 |
-
$other=$this->getTextArgs($args, $defaults);
|
139 |
-
?>
|
140 |
-
<form method="<?php echo $method?>" action="<?php echo $action?>" <?php echo $other?> >
|
141 |
-
<?php }
|
142 |
-
|
143 |
-
public function formEnds() { ?>
|
144 |
-
</form>
|
145 |
-
<?php }
|
146 |
-
|
147 |
-
public function divStarts($args=array()) {
|
148 |
-
$defaults=array();
|
149 |
-
$other=$this->getTextArgs($args, $defaults);
|
150 |
-
?>
|
151 |
-
<div <?php echo $other?>>
|
152 |
-
<?php }
|
153 |
-
public function divEnds() { ?>
|
154 |
-
</div>
|
155 |
-
<div style="clear:both;"></div>
|
156 |
-
<?php }
|
157 |
-
|
158 |
-
public function p($message, $v1=NULL, $v2=NULL, $v3=NULL, $v4=NULL, $v5=NULL) {
|
159 |
-
global $tcmp;
|
160 |
-
?>
|
161 |
-
<p style="font-weight:bold;">
|
162 |
-
<?php
|
163 |
-
$tcmp->Lang->P($message, $v1, $v2, $v3, $v4, $v5);
|
164 |
-
if($tcmp->Lang->H($message.'Subtitle')) { ?>
|
165 |
-
<br/>
|
166 |
-
<span style="font-weight:normal;">
|
167 |
-
<?php $tcmp->Lang->P($message.'Subtitle', $v1, $v2, $v3, $v4, $v5)?>
|
168 |
-
</span>
|
169 |
-
<?php } ?>
|
170 |
-
</p>
|
171 |
-
<?php }
|
172 |
-
public function i($message, $v1=NULL, $v2=NULL, $v3=NULL, $v4=NULL, $v5=NULL) {
|
173 |
-
global $tcmp;
|
174 |
-
?>
|
175 |
-
<i><?php $tcmp->Lang->P($message, $v1, $v2, $v3, $v4, $v5);?></i>
|
176 |
-
<?php }
|
177 |
-
|
178 |
-
var $_aceEditorUsed=FALSE;
|
179 |
-
public function editor($name, $value='', $options=NULL) {
|
180 |
-
global $tcmp;
|
181 |
-
|
182 |
-
$defaults=array(
|
183 |
-
'editor'=>'html'
|
184 |
-
, 'theme'=>'monokai'
|
185 |
-
, 'ui-visible'=>''
|
186 |
-
, 'height'=>350
|
187 |
-
, 'width'=>700
|
188 |
-
);
|
189 |
-
$options=$tcmp->Utils->parseArgs($options, $defaults);
|
190 |
-
$value=$tcmp->Utils->get($value, $name , $value);
|
191 |
-
|
192 |
-
$args=array('class'=>'tcmp-label', 'style'=>'width:auto;');
|
193 |
-
$this->newline=TRUE;
|
194 |
-
$this->leftInput($name, $args);
|
195 |
-
|
196 |
-
$id=$name;
|
197 |
-
switch ($options['editor']) {
|
198 |
-
case 'wp':
|
199 |
-
case 'wordpress':
|
200 |
-
$settings=array(
|
201 |
-
'wpautop'=>TRUE
|
202 |
-
, 'media_buttons'=>TRUE
|
203 |
-
, 'drag_drop_upload'=>FALSE
|
204 |
-
, 'editor_height'=>$options['height']
|
205 |
-
);
|
206 |
-
wp_editor($value, $id, $settings);
|
207 |
-
?>
|
208 |
-
<script>
|
209 |
-
jQuery('#<?php echo $id?>').attr('ui-visible', '<?php echo $options['ui-visible']?>');
|
210 |
-
</script>
|
211 |
-
<?php
|
212 |
-
break;
|
213 |
-
case 'html':
|
214 |
-
case 'text':
|
215 |
-
case 'javascript':
|
216 |
-
case 'css':
|
217 |
-
if(!$this->_aceEditorUsed) { ?>
|
218 |
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.3/ace.js" type="text/javascript" charset="utf-8"></script>
|
219 |
-
<?php $this->_aceEditorUsed=TRUE;
|
220 |
-
}
|
221 |
-
|
222 |
-
$ace='ACE_'.$id;
|
223 |
-
$text=$value;
|
224 |
-
//$text=str_replace('&', '&', $text);
|
225 |
-
$text=str_replace('<', '<', $text);
|
226 |
-
$text=str_replace('>', '>', $text);
|
227 |
-
?>
|
228 |
-
<div id="<?php echo $id?>Ace" style="height:<?php echo $options['height']+50?>px; width: <?php echo $options['width']?>px;"><?php echo $text?></div>
|
229 |
-
<textarea id="<?php echo $id?>" name="<?php echo $id?>" ui-visible="<?php echo $options['ui-visible']?>" style="display: none;"></textarea>
|
230 |
-
<script>
|
231 |
-
jQuery.noConflict()(function($){
|
232 |
-
var text=$('#<?php echo $id?>Ace').html();
|
233 |
-
text=TCMP.replace(text, '<', '<');
|
234 |
-
text=TCMP.replace(text, '>', '>');
|
235 |
-
text=TCMP.replace(text, '&', '&');
|
236 |
-
|
237 |
-
var <?php echo $ace?>=ace.edit("<?php echo $id?>Ace");
|
238 |
-
<?php echo $ace?>.renderer.setShowGutter(false);
|
239 |
-
<?php echo $ace?>.setTheme("ace/theme/<?php echo $options['theme']?>");
|
240 |
-
<?php echo $ace?>.getSession().setMode("ace/mode/<?php echo $options['editor']?>");
|
241 |
-
<?php echo $ace?>.getSession().setUseSoftTabs(true);
|
242 |
-
<?php echo $ace?>.getSession().setUseWrapMode(true);
|
243 |
-
<?php echo $ace?>.session.setUseWorker(false)
|
244 |
-
<?php echo $ace?>.setValue(text);
|
245 |
-
|
246 |
-
$('#<?php echo $id?>Ace').focusout(function() {
|
247 |
-
var $hidden=$('#<?php echo $id?>');
|
248 |
-
var code=<?php echo $ace?>.getValue();
|
249 |
-
$hidden.val(code);
|
250 |
-
});
|
251 |
-
$('#<?php echo $id?>Ace').trigger('focusout');
|
252 |
-
});
|
253 |
-
</script>
|
254 |
-
<?php
|
255 |
-
break;
|
256 |
-
}
|
257 |
-
$this->newline=FALSE;
|
258 |
-
$this->rightInput($name, $args);
|
259 |
-
}
|
260 |
-
|
261 |
-
public function textarea($name, $value='', $args=NULL) {
|
262 |
-
if(is_array($value) && isset($value[$name])) {
|
263 |
-
$value=$value[$name];
|
264 |
-
}
|
265 |
-
$defaults=array('rows'=>10, 'class'=>'tcmp-textarea');
|
266 |
-
$other=$this->getTextArgs($args, $defaults);
|
267 |
-
|
268 |
-
$args=array('class'=>'tcmp-label', 'style'=>'width:auto;');
|
269 |
-
$this->newline=TRUE;
|
270 |
-
$this->leftInput($name, $args);
|
271 |
-
?>
|
272 |
-
<textarea dir="ltr" dirname="ltr" id="<?php echo $name ?>" name="<?php echo $name?>" <?php echo $other?> ><?php echo $value ?></textarea>
|
273 |
-
<?php
|
274 |
-
$this->newline=FALSE;
|
275 |
-
$this->rightInput($name, $args);
|
276 |
-
}
|
277 |
-
|
278 |
-
public function text($name, $value='', $options=NULL) {
|
279 |
-
if(is_array($value) && isset($value[$name])) {
|
280 |
-
$value=$value[$name];
|
281 |
-
}
|
282 |
-
$defaults=array('class'=>'tcmp-text');
|
283 |
-
$other=$this->getTextArgs($options, $defaults);
|
284 |
-
|
285 |
-
$options=array('class'=>'tcmp-label');
|
286 |
-
$this->leftInput($name, $options);
|
287 |
-
?>
|
288 |
-
<input type="text" id="<?php echo $name ?>" name="<?php echo $name ?>" value="<?php echo $value ?>" <?php echo $other?> />
|
289 |
-
<?php
|
290 |
-
$this->rightInput($name, $options);
|
291 |
-
}
|
292 |
-
|
293 |
-
public function hidden($name, $value='', $args=NULL) {
|
294 |
-
if(is_array($value) && isset($value[$name])) {
|
295 |
-
$value=$value[$name];
|
296 |
-
}
|
297 |
-
$defaults=array();
|
298 |
-
$other=$this->getTextArgs($args, $defaults);
|
299 |
-
?>
|
300 |
-
<input type="hidden" id="<?php echo $name ?>" name="<?php echo $name ?>" value="<?php echo $value ?>" <?php echo $other?> />
|
301 |
-
<?php }
|
302 |
-
|
303 |
-
public function nonce($action=-1, $name='_wpnonce', $referer=true, $echo=true) {
|
304 |
-
wp_nonce_field($action, $name, $referer, $echo);
|
305 |
-
}
|
306 |
-
|
307 |
-
public function dropdown($name, $value, $options, $multiple=FALSE, $args=NULL) {
|
308 |
-
global $tcmp;
|
309 |
-
if(is_array($value) && isset($value[$name])) {
|
310 |
-
$value=$value[$name];
|
311 |
-
}
|
312 |
-
$defaults=array('class'=>'tcmp-select tcmTags tcmp-dropdown');
|
313 |
-
$other=$this->getTextArgs($args, $defaults);
|
314 |
-
|
315 |
-
if(!is_array($value)) {
|
316 |
-
$value=array($value);
|
317 |
-
}
|
318 |
-
if(is_string($options)) {
|
319 |
-
$options=explode(',', $options);
|
320 |
-
}
|
321 |
-
if(is_array($options) && count($options)>0) {
|
322 |
-
if(!isset($options[0]['id'])) {
|
323 |
-
//this is a normal array so I use the values for "id" field and the "name" into the txt file
|
324 |
-
$temp=array();
|
325 |
-
foreach($options as $v) {
|
326 |
-
$temp[]=array('id'=>$v, 'name'=>$tcmp->Lang->L($this->prefix.'.'.$name.'.'.$v));
|
327 |
-
}
|
328 |
-
$options=$temp;
|
329 |
-
}
|
330 |
-
}
|
331 |
-
|
332 |
-
echo "<div id=\"$name-box\">";
|
333 |
-
$args=array('class'=>'tcmp-label');
|
334 |
-
$this->leftInput($name, $args);
|
335 |
-
?>
|
336 |
-
<select id="<?php echo $name ?>" name="<?php echo $name?><?php echo ($multiple ? '[]' : '')?>" <?php echo ($multiple ? 'multiple' : '')?> <?php echo $other?> >
|
337 |
-
<?php
|
338 |
-
foreach($options as $v) {
|
339 |
-
$selected='';
|
340 |
-
if(in_array($v['id'], $value)) {
|
341 |
-
$selected=' selected="selected"';
|
342 |
-
}
|
343 |
-
?>
|
344 |
-
<option value="<?php echo $v['id']?>" <?php echo $selected?>><?php echo $v['name']?></option>
|
345 |
-
<?php } ?>
|
346 |
-
</select>
|
347 |
-
<?php
|
348 |
-
$this->rightInput($name, $args);
|
349 |
-
echo '</div>';
|
350 |
-
}
|
351 |
-
|
352 |
-
public function br() { ?>
|
353 |
-
<br/>
|
354 |
-
<?php }
|
355 |
-
|
356 |
-
public function submit($value='', $args=NULL) {
|
357 |
-
global $tcmp;
|
358 |
-
$defaults=array();
|
359 |
-
$other=$this->getTextArgs($args, $defaults);
|
360 |
-
if($value=='') {
|
361 |
-
$value='Send';
|
362 |
-
}
|
363 |
-
$this->newline();
|
364 |
-
?>
|
365 |
-
<input type="submit" class="button-primary tcmp-button tcmp-submit" value="<?php $tcmp->Lang->P($value)?>" <?php echo $other?>/>
|
366 |
-
<?php }
|
367 |
-
|
368 |
-
public function delete($id, $action='delete', $args=NULL) {
|
369 |
-
global $tcmp;
|
370 |
-
$defaults=array();
|
371 |
-
$other=$this->getTextArgs($args, $defaults);
|
372 |
-
?>
|
373 |
-
<input type="button" class="button tcmp-button" value="<?php $tcmp->Lang->P('Delete?')?>" onclick="if (confirm('<?php $tcmp->Lang->P('Question.DeleteQuestion')?>') ) window.location='<?php echo TCMP_TAB_MANAGER_URI?>&action=<?php echo $action?>&id=<?php echo $id ?>&tcmp_nonce=<?php echo esc_attr(wp_create_nonce('tcmp_delete')); ?>';" <?php echo $other?> />
|
374 |
-
|
375 |
-
<?php
|
376 |
-
}
|
377 |
-
|
378 |
-
public function radio($name, $current=1, $value=1, $options=NULL) {
|
379 |
-
if(!is_array($options)) {
|
380 |
-
$options=array();
|
381 |
-
}
|
382 |
-
$options['radio']=TRUE;
|
383 |
-
$options['id']=$name.'_'.$value;
|
384 |
-
return $this->checkbox($name, $current, $value, $options);
|
385 |
-
}
|
386 |
-
public function checkbox($name, $current=1, $value=1, $options=NULL) {
|
387 |
-
global $tcmp;
|
388 |
-
if(is_array($current) && isset($current[$name])) {
|
389 |
-
$current=$current[$name];
|
390 |
-
}
|
391 |
-
|
392 |
-
/*
|
393 |
-
$defaults=array('class'=>'tcmp-checkbox', 'style'=>'margin:0px; margin-right:4px;');
|
394 |
-
if($this->premium && !$tcmp->License->hasPremium()) {
|
395 |
-
$defaults['disabled']='disabled';
|
396 |
-
$value='';
|
397 |
-
}
|
398 |
-
*/
|
399 |
-
if(!is_array($options)) {
|
400 |
-
$options=array();
|
401 |
-
}
|
402 |
-
|
403 |
-
$label=$name;
|
404 |
-
$type='checkbox';
|
405 |
-
if(isset($options['radio']) && $options['radio']) {
|
406 |
-
$type='radio';
|
407 |
-
$label.='_'.$value;
|
408 |
-
}
|
409 |
-
|
410 |
-
$defaults=array(
|
411 |
-
'class'=>'tcmp-checkbox'
|
412 |
-
, 'style'=>'margin:0px; margin-right:4px;'
|
413 |
-
, 'id'=>$name
|
414 |
-
);
|
415 |
-
$other=$this->getTextArgs($options, $defaults, array('radio', 'label'));
|
416 |
-
$prev=$this->leftLabels;
|
417 |
-
$this->leftLabels=FALSE;
|
418 |
-
|
419 |
-
$label=(isset($options['label']) ? $options['label'] : $this->prefix.'.'.$label);
|
420 |
-
$id=(isset($options['id']) ? $options['id'] : $name);
|
421 |
-
$options=array(
|
422 |
-
'class'=>''
|
423 |
-
, 'style'=>'margin-top:-1px;'
|
424 |
-
, 'label'=>$label
|
425 |
-
, 'id'=>$id
|
426 |
-
);
|
427 |
-
$this->leftInput($name, $options);
|
428 |
-
?>
|
429 |
-
<input type="<?php echo $type ?>" name="<?php echo $name?>" value="<?php echo $value?>" <?php echo($current==$value ? 'checked="checked"' : '') ?> <?php echo $other?> >
|
430 |
-
<?php
|
431 |
-
$this->rightInput($name, $options);
|
432 |
-
$this->leftLabels=$prev;
|
433 |
-
}
|
434 |
-
|
435 |
-
public function checkText($nameActive, $nameText, $value) {
|
436 |
-
global $tcmp;
|
437 |
-
|
438 |
-
$args=array('class'=>'tcmp-hideShow tcmp-checkbox'
|
439 |
-
, 'tcmp-hideIfTrue'=>'false'
|
440 |
-
, 'tcmp-hideShow'=>$nameText.'Text');
|
441 |
-
$this->checkbox($nameActive, $value, 1, $args);
|
442 |
-
if($this->premium) {
|
443 |
-
return;
|
444 |
-
}
|
445 |
-
?>
|
446 |
-
<div id="<?php echo $nameText?>Text" style="float:left;">
|
447 |
-
<?php
|
448 |
-
$prev=$this->labels;
|
449 |
-
$this->labels=FALSE;
|
450 |
-
$args=array();
|
451 |
-
$this->text($nameText, $value, $args);
|
452 |
-
$this->labels=$prev;
|
453 |
-
?>
|
454 |
-
</div>
|
455 |
-
<?php }
|
456 |
-
|
457 |
-
//create a checkbox with a left select visible only when the checkbox is selected
|
458 |
-
public function checkSelect($nameActive, $nameArray, $value, $values, $options=NULL) {
|
459 |
-
global $tcmp;
|
460 |
-
?>
|
461 |
-
<div id="<?php echo $nameArray?>Box" style="float:left;">
|
462 |
-
<?php
|
463 |
-
$defaults=array(
|
464 |
-
'class'=>'tcmp-hideShow tcmp-checkbox'
|
465 |
-
, 'tcmp-hideIfTrue'=>'false'
|
466 |
-
, 'tcmp-hideShow'=>$nameArray.'Tags'
|
467 |
-
);
|
468 |
-
$options=$tcmp->Utils->parseArgs($options, $defaults);
|
469 |
-
$this->checkbox($nameActive, $value, 1, $options);
|
470 |
-
/*if(!$this->premium || $tcmp->License->hasPremium()) { ?>*/
|
471 |
-
if(TRUE) { ?>
|
472 |
-
<div id="<?php echo $nameArray?>Tags" style="float:left;">
|
473 |
-
<?php
|
474 |
-
$prev=$this->labels;
|
475 |
-
$this->labels=FALSE;
|
476 |
-
$options=array('class'=>'tcmp-select tcmLineTags');
|
477 |
-
$this->dropdown($nameArray, $value, $values, TRUE, $options);
|
478 |
-
$this->labels=$prev;
|
479 |
-
?>
|
480 |
-
</div>
|
481 |
-
<?php } ?>
|
482 |
-
</div>
|
483 |
-
<?php
|
484 |
-
$this->newline();
|
485 |
-
}
|
486 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
4 |
+
|
5 |
+
class TCMP_Form {
|
6 |
+
var $prefix='Form';
|
7 |
+
var $labels=TRUE;
|
8 |
+
var $leftLabels=TRUE;
|
9 |
+
var $newline;
|
10 |
+
|
11 |
+
var $tags=TRUE;
|
12 |
+
var $onlyPremium=TRUE;
|
13 |
+
var $leftTags=FALSE;
|
14 |
+
var $premium=FALSE;
|
15 |
+
var $tagNew=FALSE;
|
16 |
+
|
17 |
+
public function __construct() {
|
18 |
+
}
|
19 |
+
|
20 |
+
//args can be a string or an associative array if you want
|
21 |
+
private function getTextArgs($args, $defaults, $excludes=array()) {
|
22 |
+
$result=$args;
|
23 |
+
if(is_array($result) && count($result)>0) {
|
24 |
+
$result='';
|
25 |
+
foreach($args as $k=>$v) {
|
26 |
+
if(count($excludes)==0 || !in_array($k, $excludes)) {
|
27 |
+
$result.=' '.$k.'="'.$v.'"';
|
28 |
+
}
|
29 |
+
}
|
30 |
+
} elseif(!$args) {
|
31 |
+
$result='';
|
32 |
+
}
|
33 |
+
if(is_array($defaults) && count($defaults)>0) {
|
34 |
+
foreach($defaults as $k=>$v) {
|
35 |
+
if(count($excludes)==0 || !in_array($k, $excludes)) {
|
36 |
+
if(stripos($result, $k.'=')===FALSE) {
|
37 |
+
$result.=' '.$k.'="'.$v.'"';
|
38 |
+
}
|
39 |
+
}
|
40 |
+
}
|
41 |
+
}
|
42 |
+
return $result;
|
43 |
+
}
|
44 |
+
|
45 |
+
public function tag($overridePremium=FALSE) {
|
46 |
+
global $tcmp;
|
47 |
+
/*
|
48 |
+
$premium=($overridePremium || $this->premium);
|
49 |
+
if((!$overridePremium && !$this->tags) || $tcmp->License->hasPremium() || ($this->onlyPremium && !$premium)) return;
|
50 |
+
|
51 |
+
$tagClass='tcmp-tag-free';
|
52 |
+
$tagText='FREE';
|
53 |
+
if($premium) {
|
54 |
+
$tagClass='tcmp-tag-premium';
|
55 |
+
$tagText='<a href="'.TCMP_PAGE_PREMIUM.'" target="_new">PRO</a>';
|
56 |
+
}
|
57 |
+
*/
|
58 |
+
if(!$this->tags || !$this->tagNew) {
|
59 |
+
return;
|
60 |
+
}
|
61 |
+
|
62 |
+
$tagClass='tcmp-tag-free';
|
63 |
+
$tagText='NEW!';
|
64 |
+
?>
|
65 |
+
<div style="float:left;" class="tcmp-tag <?php echo $tagClass?>"><?php echo $tagText?></div>
|
66 |
+
<?php
|
67 |
+
}
|
68 |
+
|
69 |
+
public function label($name, $options='') {
|
70 |
+
global $tcmp;
|
71 |
+
$defaults=array('class'=>'');
|
72 |
+
$otherText=$this->getTextArgs($options, $defaults, array('label', 'id'));
|
73 |
+
|
74 |
+
$k=$this->prefix.'.'.$name;
|
75 |
+
if(!is_array($options)) {
|
76 |
+
$options=array();
|
77 |
+
}
|
78 |
+
if(isset($options['label']) && $options['label']) {
|
79 |
+
$k=$options['label'];
|
80 |
+
}
|
81 |
+
|
82 |
+
$label=$tcmp->Lang->L($k);
|
83 |
+
$for=(isset($options['id']) ? $options['id'] : $name);
|
84 |
+
|
85 |
+
//check if is a mandatory field by checking the .txt language file
|
86 |
+
$k=$this->prefix.'.'.$name.'.check';
|
87 |
+
if($tcmp->Lang->H($k)) {
|
88 |
+
$label.=' (*)';
|
89 |
+
}
|
90 |
+
|
91 |
+
$aClass='';
|
92 |
+
/*
|
93 |
+
if($this->premium && !$tcmp->License->hasPremium()) {
|
94 |
+
$aClass='tcmp-label-disabled';
|
95 |
+
}
|
96 |
+
*/
|
97 |
+
?>
|
98 |
+
<label for="<?php echo $for?>" <?php echo $otherText?> >
|
99 |
+
<?php if($this->leftTags) {
|
100 |
+
$this->tag();
|
101 |
+
}?>
|
102 |
+
<span style="float:left; margin-right:5px;" class="<?php echo $aClass?>"><?php echo $label?></span>
|
103 |
+
<?php if(!$this->leftTags) {
|
104 |
+
$this->tag();
|
105 |
+
}?>
|
106 |
+
</label>
|
107 |
+
<?php }
|
108 |
+
|
109 |
+
public function leftInput($name, $options='') {
|
110 |
+
if(!$this->labels) return;
|
111 |
+
if($this->leftLabels) {
|
112 |
+
$this->label($name, $options);
|
113 |
+
}
|
114 |
+
|
115 |
+
if($this->newline) {
|
116 |
+
$this->newline();
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
+
public function newline() {
|
121 |
+
?><div class="tcmp-form-newline"></div><?php
|
122 |
+
}
|
123 |
+
|
124 |
+
public function rightInput($name, $args='') {
|
125 |
+
if(!$this->labels) return;
|
126 |
+
if (!$this->leftLabels) {
|
127 |
+
$this->label($name, $args);
|
128 |
+
}
|
129 |
+
$this->newline();
|
130 |
+
}
|
131 |
+
|
132 |
+
public function formStarts($method='post', $action='', $args=NULL) {
|
133 |
+
//$this->tags=FALSE;
|
134 |
+
//$this->premium=FALSE;
|
135 |
+
|
136 |
+
//$defaults=array('style'=>'margin:1em 0; padding:1px 1em; background:#fff; border:1px solid #ccc;'
|
137 |
+
$defaults=array('class'=>'tcmp-form');
|
138 |
+
$other=$this->getTextArgs($args, $defaults);
|
139 |
+
?>
|
140 |
+
<form method="<?php echo $method?>" action="<?php echo $action?>" <?php echo $other?> >
|
141 |
+
<?php }
|
142 |
+
|
143 |
+
public function formEnds() { ?>
|
144 |
+
</form>
|
145 |
+
<?php }
|
146 |
+
|
147 |
+
public function divStarts($args=array()) {
|
148 |
+
$defaults=array();
|
149 |
+
$other=$this->getTextArgs($args, $defaults);
|
150 |
+
?>
|
151 |
+
<div <?php echo $other?>>
|
152 |
+
<?php }
|
153 |
+
public function divEnds() { ?>
|
154 |
+
</div>
|
155 |
+
<div style="clear:both;"></div>
|
156 |
+
<?php }
|
157 |
+
|
158 |
+
public function p($message, $v1=NULL, $v2=NULL, $v3=NULL, $v4=NULL, $v5=NULL) {
|
159 |
+
global $tcmp;
|
160 |
+
?>
|
161 |
+
<p style="font-weight:bold;">
|
162 |
+
<?php
|
163 |
+
$tcmp->Lang->P($message, $v1, $v2, $v3, $v4, $v5);
|
164 |
+
if($tcmp->Lang->H($message.'Subtitle')) { ?>
|
165 |
+
<br/>
|
166 |
+
<span style="font-weight:normal;">
|
167 |
+
<?php $tcmp->Lang->P($message.'Subtitle', $v1, $v2, $v3, $v4, $v5)?>
|
168 |
+
</span>
|
169 |
+
<?php } ?>
|
170 |
+
</p>
|
171 |
+
<?php }
|
172 |
+
public function i($message, $v1=NULL, $v2=NULL, $v3=NULL, $v4=NULL, $v5=NULL) {
|
173 |
+
global $tcmp;
|
174 |
+
?>
|
175 |
+
<i><?php $tcmp->Lang->P($message, $v1, $v2, $v3, $v4, $v5);?></i>
|
176 |
+
<?php }
|
177 |
+
|
178 |
+
var $_aceEditorUsed=FALSE;
|
179 |
+
public function editor($name, $value='', $options=NULL) {
|
180 |
+
global $tcmp;
|
181 |
+
|
182 |
+
$defaults=array(
|
183 |
+
'editor'=>'html'
|
184 |
+
, 'theme'=>'monokai'
|
185 |
+
, 'ui-visible'=>''
|
186 |
+
, 'height'=>350
|
187 |
+
, 'width'=>700
|
188 |
+
);
|
189 |
+
$options=$tcmp->Utils->parseArgs($options, $defaults);
|
190 |
+
$value=$tcmp->Utils->get($value, $name , $value);
|
191 |
+
|
192 |
+
$args=array('class'=>'tcmp-label', 'style'=>'width:auto;');
|
193 |
+
$this->newline=TRUE;
|
194 |
+
$this->leftInput($name, $args);
|
195 |
+
|
196 |
+
$id=$name;
|
197 |
+
switch ($options['editor']) {
|
198 |
+
case 'wp':
|
199 |
+
case 'wordpress':
|
200 |
+
$settings=array(
|
201 |
+
'wpautop'=>TRUE
|
202 |
+
, 'media_buttons'=>TRUE
|
203 |
+
, 'drag_drop_upload'=>FALSE
|
204 |
+
, 'editor_height'=>$options['height']
|
205 |
+
);
|
206 |
+
wp_editor($value, $id, $settings);
|
207 |
+
?>
|
208 |
+
<script>
|
209 |
+
jQuery('#<?php echo $id?>').attr('ui-visible', '<?php echo $options['ui-visible']?>');
|
210 |
+
</script>
|
211 |
+
<?php
|
212 |
+
break;
|
213 |
+
case 'html':
|
214 |
+
case 'text':
|
215 |
+
case 'javascript':
|
216 |
+
case 'css':
|
217 |
+
if(!$this->_aceEditorUsed) { ?>
|
218 |
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.3/ace.js" type="text/javascript" charset="utf-8"></script>
|
219 |
+
<?php $this->_aceEditorUsed=TRUE;
|
220 |
+
}
|
221 |
+
|
222 |
+
$ace='ACE_'.$id;
|
223 |
+
$text=$value;
|
224 |
+
//$text=str_replace('&', '&', $text);
|
225 |
+
$text=str_replace('<', '<', $text);
|
226 |
+
$text=str_replace('>', '>', $text);
|
227 |
+
?>
|
228 |
+
<div id="<?php echo $id?>Ace" style="height:<?php echo $options['height']+50?>px; width: <?php echo $options['width']?>px;"><?php echo $text?></div>
|
229 |
+
<textarea id="<?php echo $id?>" name="<?php echo $id?>" ui-visible="<?php echo $options['ui-visible']?>" style="display: none;"></textarea>
|
230 |
+
<script>
|
231 |
+
jQuery.noConflict()(function($){
|
232 |
+
var text=$('#<?php echo $id?>Ace').html();
|
233 |
+
text=TCMP.replace(text, '<', '<');
|
234 |
+
text=TCMP.replace(text, '>', '>');
|
235 |
+
text=TCMP.replace(text, '&', '&');
|
236 |
+
|
237 |
+
var <?php echo $ace?>=ace.edit("<?php echo $id?>Ace");
|
238 |
+
<?php echo $ace?>.renderer.setShowGutter(false);
|
239 |
+
<?php echo $ace?>.setTheme("ace/theme/<?php echo $options['theme']?>");
|
240 |
+
<?php echo $ace?>.getSession().setMode("ace/mode/<?php echo $options['editor']?>");
|
241 |
+
<?php echo $ace?>.getSession().setUseSoftTabs(true);
|
242 |
+
<?php echo $ace?>.getSession().setUseWrapMode(true);
|
243 |
+
<?php echo $ace?>.session.setUseWorker(false)
|
244 |
+
<?php echo $ace?>.setValue(text);
|
245 |
+
|
246 |
+
$('#<?php echo $id?>Ace').focusout(function() {
|
247 |
+
var $hidden=$('#<?php echo $id?>');
|
248 |
+
var code=<?php echo $ace?>.getValue();
|
249 |
+
$hidden.val(code);
|
250 |
+
});
|
251 |
+
$('#<?php echo $id?>Ace').trigger('focusout');
|
252 |
+
});
|
253 |
+
</script>
|
254 |
+
<?php
|
255 |
+
break;
|
256 |
+
}
|
257 |
+
$this->newline=FALSE;
|
258 |
+
$this->rightInput($name, $args);
|
259 |
+
}
|
260 |
+
|
261 |
+
public function textarea($name, $value='', $args=NULL) {
|
262 |
+
if(is_array($value) && isset($value[$name])) {
|
263 |
+
$value=$value[$name];
|
264 |
+
}
|
265 |
+
$defaults=array('rows'=>10, 'class'=>'tcmp-textarea');
|
266 |
+
$other=$this->getTextArgs($args, $defaults);
|
267 |
+
|
268 |
+
$args=array('class'=>'tcmp-label', 'style'=>'width:auto;');
|
269 |
+
$this->newline=TRUE;
|
270 |
+
$this->leftInput($name, $args);
|
271 |
+
?>
|
272 |
+
<textarea dir="ltr" dirname="ltr" id="<?php echo $name ?>" name="<?php echo $name?>" <?php echo $other?> ><?php echo $value ?></textarea>
|
273 |
+
<?php
|
274 |
+
$this->newline=FALSE;
|
275 |
+
$this->rightInput($name, $args);
|
276 |
+
}
|
277 |
+
|
278 |
+
public function text($name, $value='', $options=NULL) {
|
279 |
+
if(is_array($value) && isset($value[$name])) {
|
280 |
+
$value=$value[$name];
|
281 |
+
}
|
282 |
+
$defaults=array('class'=>'tcmp-text');
|
283 |
+
$other=$this->getTextArgs($options, $defaults);
|
284 |
+
|
285 |
+
$options=array('class'=>'tcmp-label');
|
286 |
+
$this->leftInput($name, $options);
|
287 |
+
?>
|
288 |
+
<input type="text" id="<?php echo $name ?>" name="<?php echo $name ?>" value="<?php echo $value ?>" <?php echo $other?> />
|
289 |
+
<?php
|
290 |
+
$this->rightInput($name, $options);
|
291 |
+
}
|
292 |
+
|
293 |
+
public function hidden($name, $value='', $args=NULL) {
|
294 |
+
if(is_array($value) && isset($value[$name])) {
|
295 |
+
$value=$value[$name];
|
296 |
+
}
|
297 |
+
$defaults=array();
|
298 |
+
$other=$this->getTextArgs($args, $defaults);
|
299 |
+
?>
|
300 |
+
<input type="hidden" id="<?php echo $name ?>" name="<?php echo $name ?>" value="<?php echo $value ?>" <?php echo $other?> />
|
301 |
+
<?php }
|
302 |
+
|
303 |
+
public function nonce($action=-1, $name='_wpnonce', $referer=true, $echo=true) {
|
304 |
+
wp_nonce_field($action, $name, $referer, $echo);
|
305 |
+
}
|
306 |
+
|
307 |
+
public function dropdown($name, $value, $options, $multiple=FALSE, $args=NULL) {
|
308 |
+
global $tcmp;
|
309 |
+
if(is_array($value) && isset($value[$name])) {
|
310 |
+
$value=$value[$name];
|
311 |
+
}
|
312 |
+
$defaults=array('class'=>'tcmp-select tcmTags tcmp-dropdown');
|
313 |
+
$other=$this->getTextArgs($args, $defaults);
|
314 |
+
|
315 |
+
if(!is_array($value)) {
|
316 |
+
$value=array($value);
|
317 |
+
}
|
318 |
+
if(is_string($options)) {
|
319 |
+
$options=explode(',', $options);
|
320 |
+
}
|
321 |
+
if(is_array($options) && count($options)>0) {
|
322 |
+
if(!isset($options[0]['id'])) {
|
323 |
+
//this is a normal array so I use the values for "id" field and the "name" into the txt file
|
324 |
+
$temp=array();
|
325 |
+
foreach($options as $v) {
|
326 |
+
$temp[]=array('id'=>$v, 'name'=>$tcmp->Lang->L($this->prefix.'.'.$name.'.'.$v));
|
327 |
+
}
|
328 |
+
$options=$temp;
|
329 |
+
}
|
330 |
+
}
|
331 |
+
|
332 |
+
echo "<div id=\"$name-box\">";
|
333 |
+
$args=array('class'=>'tcmp-label');
|
334 |
+
$this->leftInput($name, $args);
|
335 |
+
?>
|
336 |
+
<select id="<?php echo $name ?>" name="<?php echo $name?><?php echo ($multiple ? '[]' : '')?>" <?php echo ($multiple ? 'multiple' : '')?> <?php echo $other?> >
|
337 |
+
<?php
|
338 |
+
foreach($options as $v) {
|
339 |
+
$selected='';
|
340 |
+
if(in_array($v['id'], $value)) {
|
341 |
+
$selected=' selected="selected"';
|
342 |
+
}
|
343 |
+
?>
|
344 |
+
<option value="<?php echo $v['id']?>" <?php echo $selected?>><?php echo $v['name']?></option>
|
345 |
+
<?php } ?>
|
346 |
+
</select>
|
347 |
+
<?php
|
348 |
+
$this->rightInput($name, $args);
|
349 |
+
echo '</div>';
|
350 |
+
}
|
351 |
+
|
352 |
+
public function br() { ?>
|
353 |
+
<br/>
|
354 |
+
<?php }
|
355 |
+
|
356 |
+
public function submit($value='', $args=NULL) {
|
357 |
+
global $tcmp;
|
358 |
+
$defaults=array();
|
359 |
+
$other=$this->getTextArgs($args, $defaults);
|
360 |
+
if($value=='') {
|
361 |
+
$value='Send';
|
362 |
+
}
|
363 |
+
$this->newline();
|
364 |
+
?>
|
365 |
+
<input type="submit" class="button-primary tcmp-button tcmp-submit" value="<?php $tcmp->Lang->P($value)?>" <?php echo $other?>/>
|
366 |
+
<?php }
|
367 |
+
|
368 |
+
public function delete($id, $action='delete', $args=NULL) {
|
369 |
+
global $tcmp;
|
370 |
+
$defaults=array();
|
371 |
+
$other=$this->getTextArgs($args, $defaults);
|
372 |
+
?>
|
373 |
+
<input type="button" class="button tcmp-button" value="<?php $tcmp->Lang->P('Delete?')?>" onclick="if (confirm('<?php $tcmp->Lang->P('Question.DeleteQuestion')?>') ) window.location='<?php echo TCMP_TAB_MANAGER_URI?>&action=<?php echo $action?>&id=<?php echo $id ?>&tcmp_nonce=<?php echo esc_attr(wp_create_nonce('tcmp_delete')); ?>';" <?php echo $other?> />
|
374 |
+
|
375 |
+
<?php
|
376 |
+
}
|
377 |
+
|
378 |
+
public function radio($name, $current=1, $value=1, $options=NULL) {
|
379 |
+
if(!is_array($options)) {
|
380 |
+
$options=array();
|
381 |
+
}
|
382 |
+
$options['radio']=TRUE;
|
383 |
+
$options['id']=$name.'_'.$value;
|
384 |
+
return $this->checkbox($name, $current, $value, $options);
|
385 |
+
}
|
386 |
+
public function checkbox($name, $current=1, $value=1, $options=NULL) {
|
387 |
+
global $tcmp;
|
388 |
+
if(is_array($current) && isset($current[$name])) {
|
389 |
+
$current=$current[$name];
|
390 |
+
}
|
391 |
+
|
392 |
+
/*
|
393 |
+
$defaults=array('class'=>'tcmp-checkbox', 'style'=>'margin:0px; margin-right:4px;');
|
394 |
+
if($this->premium && !$tcmp->License->hasPremium()) {
|
395 |
+
$defaults['disabled']='disabled';
|
396 |
+
$value='';
|
397 |
+
}
|
398 |
+
*/
|
399 |
+
if(!is_array($options)) {
|
400 |
+
$options=array();
|
401 |
+
}
|
402 |
+
|
403 |
+
$label=$name;
|
404 |
+
$type='checkbox';
|
405 |
+
if(isset($options['radio']) && $options['radio']) {
|
406 |
+
$type='radio';
|
407 |
+
$label.='_'.$value;
|
408 |
+
}
|
409 |
+
|
410 |
+
$defaults=array(
|
411 |
+
'class'=>'tcmp-checkbox'
|
412 |
+
, 'style'=>'margin:0px; margin-right:4px;'
|
413 |
+
, 'id'=>$name
|
414 |
+
);
|
415 |
+
$other=$this->getTextArgs($options, $defaults, array('radio', 'label'));
|
416 |
+
$prev=$this->leftLabels;
|
417 |
+
$this->leftLabels=FALSE;
|
418 |
+
|
419 |
+
$label=(isset($options['label']) ? $options['label'] : $this->prefix.'.'.$label);
|
420 |
+
$id=(isset($options['id']) ? $options['id'] : $name);
|
421 |
+
$options=array(
|
422 |
+
'class'=>''
|
423 |
+
, 'style'=>'margin-top:-1px;'
|
424 |
+
, 'label'=>$label
|
425 |
+
, 'id'=>$id
|
426 |
+
);
|
427 |
+
$this->leftInput($name, $options);
|
428 |
+
?>
|
429 |
+
<input type="<?php echo $type ?>" name="<?php echo $name?>" value="<?php echo $value?>" <?php echo($current==$value ? 'checked="checked"' : '') ?> <?php echo $other?> >
|
430 |
+
<?php
|
431 |
+
$this->rightInput($name, $options);
|
432 |
+
$this->leftLabels=$prev;
|
433 |
+
}
|
434 |
+
|
435 |
+
public function checkText($nameActive, $nameText, $value) {
|
436 |
+
global $tcmp;
|
437 |
+
|
438 |
+
$args=array('class'=>'tcmp-hideShow tcmp-checkbox'
|
439 |
+
, 'tcmp-hideIfTrue'=>'false'
|
440 |
+
, 'tcmp-hideShow'=>$nameText.'Text');
|
441 |
+
$this->checkbox($nameActive, $value, 1, $args);
|
442 |
+
if($this->premium) {
|
443 |
+
return;
|
444 |
+
}
|
445 |
+
?>
|
446 |
+
<div id="<?php echo $nameText?>Text" style="float:left;">
|
447 |
+
<?php
|
448 |
+
$prev=$this->labels;
|
449 |
+
$this->labels=FALSE;
|
450 |
+
$args=array();
|
451 |
+
$this->text($nameText, $value, $args);
|
452 |
+
$this->labels=$prev;
|
453 |
+
?>
|
454 |
+
</div>
|
455 |
+
<?php }
|
456 |
+
|
457 |
+
//create a checkbox with a left select visible only when the checkbox is selected
|
458 |
+
public function checkSelect($nameActive, $nameArray, $value, $values, $options=NULL) {
|
459 |
+
global $tcmp;
|
460 |
+
?>
|
461 |
+
<div id="<?php echo $nameArray?>Box" style="float:left;">
|
462 |
+
<?php
|
463 |
+
$defaults=array(
|
464 |
+
'class'=>'tcmp-hideShow tcmp-checkbox'
|
465 |
+
, 'tcmp-hideIfTrue'=>'false'
|
466 |
+
, 'tcmp-hideShow'=>$nameArray.'Tags'
|
467 |
+
);
|
468 |
+
$options=$tcmp->Utils->parseArgs($options, $defaults);
|
469 |
+
$this->checkbox($nameActive, $value, 1, $options);
|
470 |
+
/*if(!$this->premium || $tcmp->License->hasPremium()) { ?>*/
|
471 |
+
if(TRUE) { ?>
|
472 |
+
<div id="<?php echo $nameArray?>Tags" style="float:left;">
|
473 |
+
<?php
|
474 |
+
$prev=$this->labels;
|
475 |
+
$this->labels=FALSE;
|
476 |
+
$options=array('class'=>'tcmp-select tcmLineTags');
|
477 |
+
$this->dropdown($nameArray, $value, $values, TRUE, $options);
|
478 |
+
$this->labels=$prev;
|
479 |
+
?>
|
480 |
+
</div>
|
481 |
+
<?php } ?>
|
482 |
+
</div>
|
483 |
+
<?php
|
484 |
+
$this->newline();
|
485 |
+
}
|
486 |
}
|
includes/classes/utils/Ecommerce.php
CHANGED
@@ -1,178 +1,178 @@
|
|
1 |
-
<?php
|
2 |
-
if (!defined('ABSPATH')) exit;
|
3 |
-
|
4 |
-
class TCMP_Ecommerce {
|
5 |
-
var $_orderId;
|
6 |
-
|
7 |
-
function __construct() {
|
8 |
-
add_action('woocommerce_thankyou', array(&$this, 'wooCommerceThankYou'), -10);
|
9 |
-
//add_action('woocommerce_thankyou_order_id', array(&$this, 'wooCommerceThankYou'), -10);
|
10 |
-
|
11 |
-
add_action('edd_payment_receipt_after_table', array(&$this, 'eddThankYou'));
|
12 |
-
add_action('wpsc_transaction_result_cart_item', array(&$this, 'eCommerceThankYou'));
|
13 |
-
}
|
14 |
-
|
15 |
-
public function getCustomPostType($pluginId) {
|
16 |
-
$result='';
|
17 |
-
switch (intval($pluginId)) {
|
18 |
-
case TCMP_PLUGINS_WOOCOMMERCE:
|
19 |
-
$result='product';
|
20 |
-
break;
|
21 |
-
case TCMP_PLUGINS_EDD:
|
22 |
-
$result='download';
|
23 |
-
break;
|
24 |
-
case TCMP_PLUGINS_WP_ECOMMERCE:
|
25 |
-
$result='wpsc-product';
|
26 |
-
break;
|
27 |
-
}
|
28 |
-
return $result;
|
29 |
-
}
|
30 |
-
|
31 |
-
//WPSC_Purchase_Log_Customer_HTML_Notification
|
32 |
-
function eCommerceThankYou($order) {
|
33 |
-
global $tcmp;
|
34 |
-
$purchase=new TCMP_EcommercePurchase();
|
35 |
-
|
36 |
-
$orderId=intval($order['purchase_id']);
|
37 |
-
$purchase->orderId=$orderId;
|
38 |
-
$tcmp->Log->debug('Ecommerce: ECOMMERCE THANKYOU');
|
39 |
-
$tcmp->Log->debug('Ecommerce: NEW ECOMMERCE ORDERID=%s', $orderId);
|
40 |
-
|
41 |
-
$order=new WPSC_Purchase_Log($orderId);
|
42 |
-
$items=$order->get_cart_contents();
|
43 |
-
$productsIds=array();
|
44 |
-
foreach ($items as $v) {
|
45 |
-
if(isset($v->prodid)) {
|
46 |
-
$k=intval($v->prodid);
|
47 |
-
if($k) {
|
48 |
-
$v=$v->name;
|
49 |
-
$purchase->products[]=$v;
|
50 |
-
$productsIds[]=$k;
|
51 |
-
$tcmp->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
|
52 |
-
}
|
53 |
-
}
|
54 |
-
}
|
55 |
-
|
56 |
-
$args=array(
|
57 |
-
'pluginId'=>TCMP_PLUGINS_WP_ECOMMERCE
|
58 |
-
, 'productsIds'=>$productsIds
|
59 |
-
, 'categoriesIds'=>array()
|
60 |
-
, 'tagsIds'=>array()
|
61 |
-
);
|
62 |
-
$tcmp->Options->pushConversionSnippets($args, $purchase);
|
63 |
-
return '';
|
64 |
-
}
|
65 |
-
|
66 |
-
function eddThankYou($payment, $edd_receipt_args=NULL) {
|
67 |
-
global $tcmp;
|
68 |
-
if(!class_exists('EDD_Customer')) {
|
69 |
-
return;
|
70 |
-
}
|
71 |
-
|
72 |
-
/* @var $payment WP_Post */
|
73 |
-
$purchase=new TCMP_EcommercePurchase();
|
74 |
-
$purchase->orderId=$tcmp->Utils->get($payment, 'ID');
|
75 |
-
$purchase->userId=$tcmp->Utils->get($payment, 'post_author', FALSE);
|
76 |
-
|
77 |
-
$settings=edd_get_settings();
|
78 |
-
if(isset($settings['currency'])) {
|
79 |
-
$purchase->currency=$settings['currency'];
|
80 |
-
}
|
81 |
-
|
82 |
-
$tcmp->Log->debug('Ecommerce: EDD THANKYOU');
|
83 |
-
$tcmp->Log->debug('Ecommerce: NEW EDD ORDERID=%s', $purchase->orderId);
|
84 |
-
$cart=edd_get_payment_meta_cart_details($purchase->orderId, TRUE);
|
85 |
-
$productsIds=array();
|
86 |
-
$purchase->amount=0;
|
87 |
-
$purchase->total=0;
|
88 |
-
foreach ($cart as $key=>$item) {
|
89 |
-
if(isset($item['id'])) {
|
90 |
-
$k=intval($item['id']);
|
91 |
-
if($k) {
|
92 |
-
$v=$item['name'];
|
93 |
-
$purchase->products[]=$v;
|
94 |
-
$productsIds[]=$k;
|
95 |
-
$tcmp->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
|
96 |
-
}
|
97 |
-
}
|
98 |
-
}
|
99 |
-
|
100 |
-
$args=array(
|
101 |
-
'pluginId'=>TCMP_PLUGINS_EDD
|
102 |
-
, 'productsIds'=>$productsIds
|
103 |
-
, 'categoriesIds'=>array()
|
104 |
-
, 'tagsIds'=>array()
|
105 |
-
);
|
106 |
-
$tcmp->Options->pushConversionSnippets($args, $purchase);
|
107 |
-
}
|
108 |
-
function wooCommerceThankYou($orderId) {
|
109 |
-
global $tcmp;
|
110 |
-
if(!$orderId) {
|
111 |
-
return;
|
112 |
-
}
|
113 |
-
if($this->_orderId===$orderId) {
|
114 |
-
return;
|
115 |
-
}
|
116 |
-
|
117 |
-
$this->_orderId=$orderId;
|
118 |
-
$purchase=new TCMP_EcommercePurchase();
|
119 |
-
$purchase->orderId=$orderId;
|
120 |
-
$tcmp->Log->debug('Ecommerce: WOOCOMMERCE THANKYOU');
|
121 |
-
|
122 |
-
$order=new WC_Order($orderId);
|
123 |
-
$purchase->email=$order->get_billing_email();
|
124 |
-
$purchase->fullname=$order->get_billing_first_name();
|
125 |
-
if($order->get_billing_last_name()!='') {
|
126 |
-
$purchase->fullname.=' '.$order->get_billing_last_name();
|
127 |
-
}
|
128 |
-
|
129 |
-
$items=$order->get_items();
|
130 |
-
$tcmp->Log->debug('Ecommerce: NEW WOOCOMMERCE ORDERID=%s', $orderId);
|
131 |
-
$productsIds=array();
|
132 |
-
foreach($items as $k=>$v) {
|
133 |
-
$k=intval($v['product_id']);
|
134 |
-
if($k>0) {
|
135 |
-
$v=$v['name'];
|
136 |
-
$purchase->products[]=$v;
|
137 |
-
$tcmp->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
|
138 |
-
$productsIds[]=$k;
|
139 |
-
}
|
140 |
-
}
|
141 |
-
|
142 |
-
$args=array(
|
143 |
-
'pluginId'=>TCMP_PLUGINS_WOOCOMMERCE
|
144 |
-
, 'productsIds'=>$productsIds
|
145 |
-
, 'categoriesIds'=>array()
|
146 |
-
, 'tagsIds'=>array()
|
147 |
-
);
|
148 |
-
$tcmp->Options->pushConversionSnippets($args, $purchase);
|
149 |
-
}
|
150 |
-
|
151 |
-
function getActivePlugins() {
|
152 |
-
return $this->getPlugins(TRUE);
|
153 |
-
}
|
154 |
-
function getPlugins($onlyActive=TRUE) {
|
155 |
-
global $tcmp;
|
156 |
-
|
157 |
-
$array=array();
|
158 |
-
$array[]=TCMP_PLUGINS_WOOCOMMERCE;
|
159 |
-
$array[]=TCMP_PLUGINS_EDD;
|
160 |
-
$array[]=TCMP_PLUGINS_WP_ECOMMERCE;
|
161 |
-
/*
|
162 |
-
$array[]=TCMP_PLUGINS_WP_SPSC;
|
163 |
-
$array[]=TCMP_PLUGINS_S2MEMBER;
|
164 |
-
$array[]=TCMP_PLUGINS_MEMBERS;
|
165 |
-
$array[]=TCMP_PLUGINS_CART66;
|
166 |
-
$array[]=TCMP_PLUGINS_ESHOP;
|
167 |
-
$array[]=TCMP_PLUGINS_JIGOSHOP;
|
168 |
-
$array[]=TCMP_PLUGINS_MARKETPRESS;
|
169 |
-
$array[]=TCMP_PLUGINS_SHOPP;
|
170 |
-
$array[]=TCMP_PLUGINS_SIMPLE_WP_ECOMMERCE;
|
171 |
-
$array[]=TCMP_PLUGINS_CF7;
|
172 |
-
$array[]=TCMP_PLUGINS_GRAVITY;
|
173 |
-
*/
|
174 |
-
|
175 |
-
$array=$tcmp->Plugin->getPlugins($array, $onlyActive);
|
176 |
-
return $array;
|
177 |
-
}
|
178 |
-
}
|
1 |
+
<?php
|
2 |
+
if (!defined('ABSPATH')) exit;
|
3 |
+
|
4 |
+
class TCMP_Ecommerce {
|
5 |
+
var $_orderId;
|
6 |
+
|
7 |
+
function __construct() {
|
8 |
+
add_action('woocommerce_thankyou', array(&$this, 'wooCommerceThankYou'), -10);
|
9 |
+
//add_action('woocommerce_thankyou_order_id', array(&$this, 'wooCommerceThankYou'), -10);
|
10 |
+
|
11 |
+
add_action('edd_payment_receipt_after_table', array(&$this, 'eddThankYou'));
|
12 |
+
add_action('wpsc_transaction_result_cart_item', array(&$this, 'eCommerceThankYou'));
|
13 |
+
}
|
14 |
+
|
15 |
+
public function getCustomPostType($pluginId) {
|
16 |
+
$result='';
|
17 |
+
switch (intval($pluginId)) {
|
18 |
+
case TCMP_PLUGINS_WOOCOMMERCE:
|
19 |
+
$result='product';
|
20 |
+
break;
|
21 |
+
case TCMP_PLUGINS_EDD:
|
22 |
+
$result='download';
|
23 |
+
break;
|
24 |
+
case TCMP_PLUGINS_WP_ECOMMERCE:
|
25 |
+
$result='wpsc-product';
|
26 |
+
break;
|
27 |
+
}
|
28 |
+
return $result;
|
29 |
+
}
|
30 |
+
|
31 |
+
//WPSC_Purchase_Log_Customer_HTML_Notification
|
32 |
+
function eCommerceThankYou($order) {
|
33 |
+
global $tcmp;
|
34 |
+
$purchase=new TCMP_EcommercePurchase();
|
35 |
+
|
36 |
+
$orderId=intval($order['purchase_id']);
|
37 |
+
$purchase->orderId=$orderId;
|
38 |
+
$tcmp->Log->debug('Ecommerce: ECOMMERCE THANKYOU');
|
39 |
+
$tcmp->Log->debug('Ecommerce: NEW ECOMMERCE ORDERID=%s', $orderId);
|
40 |
+
|
41 |
+
$order=new WPSC_Purchase_Log($orderId);
|
42 |
+
$items=$order->get_cart_contents();
|
43 |
+
$productsIds=array();
|
44 |
+
foreach ($items as $v) {
|
45 |
+
if(isset($v->prodid)) {
|
46 |
+
$k=intval($v->prodid);
|
47 |
+
if($k) {
|
48 |
+
$v=$v->name;
|
49 |
+
$purchase->products[]=$v;
|
50 |
+
$productsIds[]=$k;
|
51 |
+
$tcmp->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
|
52 |
+
}
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
$args=array(
|
57 |
+
'pluginId'=>TCMP_PLUGINS_WP_ECOMMERCE
|
58 |
+
, 'productsIds'=>$productsIds
|
59 |
+
, 'categoriesIds'=>array()
|
60 |
+
, 'tagsIds'=>array()
|
61 |
+
);
|
62 |
+
$tcmp->Options->pushConversionSnippets($args, $purchase);
|
63 |
+
return '';
|
64 |
+
}
|
65 |
+
|
66 |
+
function eddThankYou($payment, $edd_receipt_args=NULL) {
|
67 |
+
global $tcmp;
|
68 |
+
if(!class_exists('EDD_Customer')) {
|
69 |
+
return;
|
70 |
+
}
|
71 |
+
|
72 |
+
/* @var $payment WP_Post */
|
73 |
+
$purchase=new TCMP_EcommercePurchase();
|
74 |
+
$purchase->orderId=$tcmp->Utils->get($payment, 'ID');
|
75 |
+
$purchase->userId=$tcmp->Utils->get($payment, 'post_author', FALSE);
|
76 |
+
|
77 |
+
$settings=edd_get_settings();
|
78 |
+
if(isset($settings['currency'])) {
|
79 |
+
$purchase->currency=$settings['currency'];
|
80 |
+
}
|
81 |
+
|
82 |
+
$tcmp->Log->debug('Ecommerce: EDD THANKYOU');
|
83 |
+
$tcmp->Log->debug('Ecommerce: NEW EDD ORDERID=%s', $purchase->orderId);
|
84 |
+
$cart=edd_get_payment_meta_cart_details($purchase->orderId, TRUE);
|
85 |
+
$productsIds=array();
|
86 |
+
$purchase->amount=0;
|
87 |
+
$purchase->total=0;
|
88 |
+
foreach ($cart as $key=>$item) {
|
89 |
+
if(isset($item['id'])) {
|
90 |
+
$k=intval($item['id']);
|
91 |
+
if($k) {
|
92 |
+
$v=$item['name'];
|
93 |
+
$purchase->products[]=$v;
|
94 |
+
$productsIds[]=$k;
|
95 |
+
$tcmp->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
|
96 |
+
}
|
97 |
+
}
|
98 |
+
}
|
99 |
+
|
100 |
+
$args=array(
|
101 |
+
'pluginId'=>TCMP_PLUGINS_EDD
|
102 |
+
, 'productsIds'=>$productsIds
|
103 |
+
, 'categoriesIds'=>array()
|
104 |
+
, 'tagsIds'=>array()
|
105 |
+
);
|
106 |
+
$tcmp->Options->pushConversionSnippets($args, $purchase);
|
107 |
+
}
|
108 |
+
function wooCommerceThankYou($orderId) {
|
109 |
+
global $tcmp;
|
110 |
+
if(!$orderId) {
|
111 |
+
return;
|
112 |
+
}
|
113 |
+
if($this->_orderId===$orderId) {
|
114 |
+
return;
|
115 |
+
}
|
116 |
+
|
117 |
+
$this->_orderId=$orderId;
|
118 |
+
$purchase=new TCMP_EcommercePurchase();
|
119 |
+
$purchase->orderId=$orderId;
|
120 |
+
$tcmp->Log->debug('Ecommerce: WOOCOMMERCE THANKYOU');
|
121 |
+
|
122 |
+
$order=new WC_Order($orderId);
|
123 |
+
$purchase->email=$order->get_billing_email();
|
124 |
+
$purchase->fullname=$order->get_billing_first_name();
|
125 |
+
if($order->get_billing_last_name()!='') {
|
126 |
+
$purchase->fullname.=' '.$order->get_billing_last_name();
|
127 |
+
}
|
128 |
+
|
129 |
+
$items=$order->get_items();
|
130 |
+
$tcmp->Log->debug('Ecommerce: NEW WOOCOMMERCE ORDERID=%s', $orderId);
|
131 |
+
$productsIds=array();
|
132 |
+
foreach($items as $k=>$v) {
|
133 |
+
$k=intval($v['product_id']);
|
134 |
+
if($k>0) {
|
135 |
+
$v=$v['name'];
|
136 |
+
$purchase->products[]=$v;
|
137 |
+
$tcmp->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
|
138 |
+
$productsIds[]=$k;
|
139 |
+
}
|
140 |
+
}
|
141 |
+
|
142 |
+
$args=array(
|
143 |
+
'pluginId'=>TCMP_PLUGINS_WOOCOMMERCE
|
144 |
+
, 'productsIds'=>$productsIds
|
145 |
+
, 'categoriesIds'=>array()
|
146 |
+
, 'tagsIds'=>array()
|
147 |
+
);
|
148 |
+
$tcmp->Options->pushConversionSnippets($args, $purchase);
|
149 |
+
}
|
150 |
+
|
151 |
+
function getActivePlugins() {
|
152 |
+
return $this->getPlugins(TRUE);
|
153 |
+
}
|
154 |
+
function getPlugins($onlyActive=TRUE) {
|
155 |
+
global $tcmp;
|
156 |
+
|
157 |
+
$array=array();
|
158 |
+
$array[]=TCMP_PLUGINS_WOOCOMMERCE;
|
159 |
+
$array[]=TCMP_PLUGINS_EDD;
|
160 |
+
$array[]=TCMP_PLUGINS_WP_ECOMMERCE;
|
161 |
+
/*
|
162 |
+
$array[]=TCMP_PLUGINS_WP_SPSC;
|
163 |
+
$array[]=TCMP_PLUGINS_S2MEMBER;
|
164 |
+
$array[]=TCMP_PLUGINS_MEMBERS;
|
165 |
+
$array[]=TCMP_PLUGINS_CART66;
|
166 |
+
$array[]=TCMP_PLUGINS_ESHOP;
|
167 |
+
$array[]=TCMP_PLUGINS_JIGOSHOP;
|
168 |
+
$array[]=TCMP_PLUGINS_MARKETPRESS;
|
169 |
+
$array[]=TCMP_PLUGINS_SHOPP;
|
170 |
+
$array[]=TCMP_PLUGINS_SIMPLE_WP_ECOMMERCE;
|
171 |
+
$array[]=TCMP_PLUGINS_CF7;
|
172 |
+
$array[]=TCMP_PLUGINS_GRAVITY;
|
173 |
+
*/
|
174 |
+
|
175 |
+
$array=$tcmp->Plugin->getPlugins($array, $onlyActive);
|
176 |
+
return $array;
|
177 |
+
}
|
178 |
+
}
|
index.php
CHANGED
@@ -1,122 +1,122 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Plugin Name: Tracking Code Manager
|
4 |
-
Plugin URI: http://intellywp.com/tracking-code-manager/
|
5 |
-
Description: A plugin to manage ALL your tracking code and conversion pixels, simply. Compatible with Facebook Ads, Google Adwords, WooCommerce, Easy Digital Downloads, WP eCommerce.
|
6 |
-
Author: IntellyWP
|
7 |
-
Author URI: http://intellywp.com/
|
8 |
-
Email: info@intellywp.com
|
9 |
-
Version: 2.0.
|
10 |
-
WC requires at least: 3.0.0
|
11 |
-
WC tested up to: 4
|
12 |
-
*/
|
13 |
-
if(defined('TCMP_PLUGIN_NAME')) {
|
14 |
-
function tcmp_admin_notices() {
|
15 |
-
global $tcmp; ?>
|
16 |
-
<div style="clear:both"></div>
|
17 |
-
<div class="error iwp" style="padding:10px;">
|
18 |
-
<?php $tcmp->Lang->P('PluginProAlreadyInstalled'); ?>
|
19 |
-
</div>
|
20 |
-
<div style="clear:both"></div>
|
21 |
-
<?php }
|
22 |
-
add_action('admin_notices', 'tcmp_admin_notices');
|
23 |
-
return;
|
24 |
-
}
|
25 |
-
define('TCMP_PLUGIN_PREFIX', 'TCMP_');
|
26 |
-
define('TCMP_PLUGIN_FILE',__FILE__);
|
27 |
-
define('TCMP_PLUGIN_SLUG', 'tracking-code-manager');
|
28 |
-
define('TCMP_PLUGIN_NAME', 'Tracking Code Manager');
|
29 |
-
define('TCMP_PLUGIN_VERSION', '2.0.
|
30 |
-
define('TCMP_PLUGIN_AUTHOR', 'IntellyWP');
|
31 |
-
|
32 |
-
define('TCMP_PLUGIN_DIR', dirname(__FILE__).'/');
|
33 |
-
define('TCMP_PLUGIN_ASSETS_URI', plugins_url( 'assets/', __FILE__ ));
|
34 |
-
define('TCMP_PLUGIN_IMAGES_URI', plugins_url( 'assets/images/', __FILE__ ));
|
35 |
-
|
36 |
-
define('TCMP_LOGGER', FALSE);
|
37 |
-
define('TCMP_AUTOSAVE_LANG', FALSE);
|
38 |
-
|
39 |
-
define('TCMP_QUERY_POSTS_OF_TYPE', 1);
|
40 |
-
define('TCMP_QUERY_POST_TYPES', 2);
|
41 |
-
define('TCMP_QUERY_CATEGORIES', 3);
|
42 |
-
define('TCMP_QUERY_TAGS', 4);
|
43 |
-
define('TCMP_QUERY_CONVERSION_PLUGINS', 5);
|
44 |
-
define('TCMP_QUERY_TAXONOMY_TYPES', 6);
|
45 |
-
define('TCMP_QUERY_TAXONOMIES_OF_TYPE', 7);
|
46 |
-
|
47 |
-
define('TCMP_INTELLYWP_SITE', 'http://www.intellywp.com/');
|
48 |
-
define('TCMP_INTELLYWP_ENDPOINT', TCMP_INTELLYWP_SITE.'wp-content/plugins/intellywp-manager/data.php');
|
49 |
-
define('TCMP_PAGE_FAQ', TCMP_INTELLYWP_SITE.'tracking-code-manager');
|
50 |
-
define('TCMP_PAGE_PREMIUM', TCMP_INTELLYWP_SITE.'tracking-code-manager');
|
51 |
-
define('TCMP_PAGE_MANAGER', admin_url().'options-general.php?page='.TCMP_PLUGIN_SLUG);
|
52 |
-
define('TCMP_PLUGIN_URI', plugins_url('/', __FILE__ ));
|
53 |
-
|
54 |
-
define('TCMP_POSITION_HEAD', 0);
|
55 |
-
define('TCMP_POSITION_BODY', 1);
|
56 |
-
define('TCMP_POSITION_FOOTER', 2);
|
57 |
-
define('TCMP_POSITION_CONVERSION', 3);
|
58 |
-
|
59 |
-
define('TCMP_TRACK_MODE_CODE', 0);
|
60 |
-
define('TCMP_TRACK_PAGE_ALL', 0);
|
61 |
-
define('TCMP_TRACK_PAGE_SPECIFIC', 1);
|
62 |
-
|
63 |
-
define('TCMP_DEVICE_TYPE_MOBILE', 'mobile');
|
64 |
-
define('TCMP_DEVICE_TYPE_TABLET', 'tablet');
|
65 |
-
define('TCMP_DEVICE_TYPE_DESKTOP', 'desktop');
|
66 |
-
define('TCMP_DEVICE_TYPE_ALL', 'all');
|
67 |
-
|
68 |
-
define('TCMP_TAB_EDITOR', 'editor');
|
69 |
-
define('TCMP_TAB_EDITOR_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_EDITOR);
|
70 |
-
define('TCMP_TAB_MANAGER', 'manager');
|
71 |
-
define('TCMP_TAB_MANAGER_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_MANAGER);
|
72 |
-
define('TCMP_TAB_SETTINGS', 'settings');
|
73 |
-
define('TCMP_TAB_SETTINGS_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_SETTINGS);
|
74 |
-
define('TCMP_TAB_DOCS', 'docs');
|
75 |
-
define('TCMP_TAB_DOCS_URI', 'http://intellywp.com/docs/category/tracking-code-manager/');
|
76 |
-
define('TCMP_TAB_DOCS_DCV_URI', 'https://data443.atlassian.net/servicedesk/customer/kb/view/947486813');
|
77 |
-
define('TCMP_TAB_ABOUT', 'about');
|
78 |
-
define('TCMP_TAB_ABOUT_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_ABOUT);
|
79 |
-
define('TCMP_TAB_WHATS_NEW', 'whatsnew');
|
80 |
-
define('TCMP_TAB_WHATS_NEW_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_WHATS_NEW);
|
81 |
-
|
82 |
-
define('TCMP_SNIPPETS_LIMIT', 6);
|
83 |
-
|
84 |
-
include_once(dirname(__FILE__).'/autoload.php');
|
85 |
-
tcmp_include_php(dirname(__FILE__).'/includes/');
|
86 |
-
|
87 |
-
global $tcmp;
|
88 |
-
$tcmp=new TCMP_Singleton();
|
89 |
-
$tcmp->init();
|
90 |
-
|
91 |
-
function TCMP_QS($name, $default='') {
|
92 |
-
global $tcmp;
|
93 |
-
$result=$tcmp->Utils->qs($name, $default);
|
94 |
-
return $result;
|
95 |
-
}
|
96 |
-
//SANITIZED METHODS
|
97 |
-
function TCMP_SQS($name, $default='') {
|
98 |
-
$result=TCMP_QS($name, $default);
|
99 |
-
$result=sanitize_text_field($result);
|
100 |
-
return $result;
|
101 |
-
}
|
102 |
-
function TCMP_ISQS($name, $default=0) {
|
103 |
-
$result=TCMP_SQS($name, $default);
|
104 |
-
$result=floatval($result);
|
105 |
-
return $result;
|
106 |
-
}
|
107 |
-
function TCMP_BSQS($name, $default=0) {
|
108 |
-
global $tcmp;
|
109 |
-
$result=$tcmp->Utils->bqs($name, $default);
|
110 |
-
return $result;
|
111 |
-
}
|
112 |
-
function TCMP_ASQS($name, $default=array()) {
|
113 |
-
$result=TCMP_QS($name, $default);
|
114 |
-
if(is_array($result)) {
|
115 |
-
foreach ($result as $k=>$v) {
|
116 |
-
$result[$k]=sanitize_text_field($v);
|
117 |
-
}
|
118 |
-
} else {
|
119 |
-
$result=sanitize_text_field($result);
|
120 |
-
}
|
121 |
-
return $result;
|
122 |
-
}
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: Tracking Code Manager
|
4 |
+
Plugin URI: http://intellywp.com/tracking-code-manager/
|
5 |
+
Description: A plugin to manage ALL your tracking code and conversion pixels, simply. Compatible with Facebook Ads, Google Adwords, WooCommerce, Easy Digital Downloads, WP eCommerce.
|
6 |
+
Author: IntellyWP
|
7 |
+
Author URI: http://intellywp.com/
|
8 |
+
Email: info@intellywp.com
|
9 |
+
Version: 2.0.2
|
10 |
+
WC requires at least: 3.0.0
|
11 |
+
WC tested up to: 4
|
12 |
+
*/
|
13 |
+
if(defined('TCMP_PLUGIN_NAME')) {
|
14 |
+
function tcmp_admin_notices() {
|
15 |
+
global $tcmp; ?>
|
16 |
+
<div style="clear:both"></div>
|
17 |
+
<div class="error iwp" style="padding:10px;">
|
18 |
+
<?php $tcmp->Lang->P('PluginProAlreadyInstalled'); ?>
|
19 |
+
</div>
|
20 |
+
<div style="clear:both"></div>
|
21 |
+
<?php }
|
22 |
+
add_action('admin_notices', 'tcmp_admin_notices');
|
23 |
+
return;
|
24 |
+
}
|
25 |
+
define('TCMP_PLUGIN_PREFIX', 'TCMP_');
|
26 |
+
define('TCMP_PLUGIN_FILE',__FILE__);
|
27 |
+
define('TCMP_PLUGIN_SLUG', 'tracking-code-manager');
|
28 |
+
define('TCMP_PLUGIN_NAME', 'Tracking Code Manager');
|
29 |
+
define('TCMP_PLUGIN_VERSION', '2.0.2');
|
30 |
+
define('TCMP_PLUGIN_AUTHOR', 'IntellyWP');
|
31 |
+
|
32 |
+
define('TCMP_PLUGIN_DIR', dirname(__FILE__).'/');
|
33 |
+
define('TCMP_PLUGIN_ASSETS_URI', plugins_url( 'assets/', __FILE__ ));
|
34 |
+
define('TCMP_PLUGIN_IMAGES_URI', plugins_url( 'assets/images/', __FILE__ ));
|
35 |
+
|
36 |
+
define('TCMP_LOGGER', FALSE);
|
37 |
+
define('TCMP_AUTOSAVE_LANG', FALSE);
|
38 |
+
|
39 |
+
define('TCMP_QUERY_POSTS_OF_TYPE', 1);
|
40 |
+
define('TCMP_QUERY_POST_TYPES', 2);
|
41 |
+
define('TCMP_QUERY_CATEGORIES', 3);
|
42 |
+
define('TCMP_QUERY_TAGS', 4);
|
43 |
+
define('TCMP_QUERY_CONVERSION_PLUGINS', 5);
|
44 |
+
define('TCMP_QUERY_TAXONOMY_TYPES', 6);
|
45 |
+
define('TCMP_QUERY_TAXONOMIES_OF_TYPE', 7);
|
46 |
+
|
47 |
+
define('TCMP_INTELLYWP_SITE', 'http://www.intellywp.com/');
|
48 |
+
define('TCMP_INTELLYWP_ENDPOINT', TCMP_INTELLYWP_SITE.'wp-content/plugins/intellywp-manager/data.php');
|
49 |
+
define('TCMP_PAGE_FAQ', TCMP_INTELLYWP_SITE.'tracking-code-manager');
|
50 |
+
define('TCMP_PAGE_PREMIUM', TCMP_INTELLYWP_SITE.'tracking-code-manager');
|
51 |
+
define('TCMP_PAGE_MANAGER', admin_url().'options-general.php?page='.TCMP_PLUGIN_SLUG);
|
52 |
+
define('TCMP_PLUGIN_URI', plugins_url('/', __FILE__ ));
|
53 |
+
|
54 |
+
define('TCMP_POSITION_HEAD', 0);
|
55 |
+
define('TCMP_POSITION_BODY', 1);
|
56 |
+
define('TCMP_POSITION_FOOTER', 2);
|
57 |
+
define('TCMP_POSITION_CONVERSION', 3);
|
58 |
+
|
59 |
+
define('TCMP_TRACK_MODE_CODE', 0);
|
60 |
+
define('TCMP_TRACK_PAGE_ALL', 0);
|
61 |
+
define('TCMP_TRACK_PAGE_SPECIFIC', 1);
|
62 |
+
|
63 |
+
define('TCMP_DEVICE_TYPE_MOBILE', 'mobile');
|
64 |
+
define('TCMP_DEVICE_TYPE_TABLET', 'tablet');
|
65 |
+
define('TCMP_DEVICE_TYPE_DESKTOP', 'desktop');
|
66 |
+
define('TCMP_DEVICE_TYPE_ALL', 'all');
|
67 |
+
|
68 |
+
define('TCMP_TAB_EDITOR', 'editor');
|
69 |
+
define('TCMP_TAB_EDITOR_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_EDITOR);
|
70 |
+
define('TCMP_TAB_MANAGER', 'manager');
|
71 |
+
define('TCMP_TAB_MANAGER_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_MANAGER);
|
72 |
+
define('TCMP_TAB_SETTINGS', 'settings');
|
73 |
+
define('TCMP_TAB_SETTINGS_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_SETTINGS);
|
74 |
+
define('TCMP_TAB_DOCS', 'docs');
|
75 |
+
define('TCMP_TAB_DOCS_URI', 'http://intellywp.com/docs/category/tracking-code-manager/');
|
76 |
+
define('TCMP_TAB_DOCS_DCV_URI', 'https://data443.atlassian.net/servicedesk/customer/kb/view/947486813');
|
77 |
+
define('TCMP_TAB_ABOUT', 'about');
|
78 |
+
define('TCMP_TAB_ABOUT_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_ABOUT);
|
79 |
+
define('TCMP_TAB_WHATS_NEW', 'whatsnew');
|
80 |
+
define('TCMP_TAB_WHATS_NEW_URI', TCMP_PAGE_MANAGER.'&tab='.TCMP_TAB_WHATS_NEW);
|
81 |
+
|
82 |
+
define('TCMP_SNIPPETS_LIMIT', 6);
|
83 |
+
|
84 |
+
include_once(dirname(__FILE__).'/autoload.php');
|
85 |
+
tcmp_include_php(dirname(__FILE__).'/includes/');
|
86 |
+
|
87 |
+
global $tcmp;
|
88 |
+
$tcmp=new TCMP_Singleton();
|
89 |
+
$tcmp->init();
|
90 |
+
|
91 |
+
function TCMP_QS($name, $default='') {
|
92 |
+
global $tcmp;
|
93 |
+
$result=$tcmp->Utils->qs($name, $default);
|
94 |
+
return $result;
|
95 |
+
}
|
96 |
+
//SANITIZED METHODS
|
97 |
+
function TCMP_SQS($name, $default='') {
|
98 |
+
$result=TCMP_QS($name, $default);
|
99 |
+
$result=sanitize_text_field($result);
|
100 |
+
return $result;
|
101 |
+
}
|
102 |
+
function TCMP_ISQS($name, $default=0) {
|
103 |
+
$result=TCMP_SQS($name, $default);
|
104 |
+
$result=floatval($result);
|
105 |
+
return $result;
|
106 |
+
}
|
107 |
+
function TCMP_BSQS($name, $default=0) {
|
108 |
+
global $tcmp;
|
109 |
+
$result=$tcmp->Utils->bqs($name, $default);
|
110 |
+
return $result;
|
111 |
+
}
|
112 |
+
function TCMP_ASQS($name, $default=array()) {
|
113 |
+
$result=TCMP_QS($name, $default);
|
114 |
+
if(is_array($result)) {
|
115 |
+
foreach ($result as $k=>$v) {
|
116 |
+
$result[$k]=sanitize_text_field($v);
|
117 |
+
}
|
118 |
+
} else {
|
119 |
+
$result=sanitize_text_field($result);
|
120 |
+
}
|
121 |
+
return $result;
|
122 |
+
}
|
languages/Lang.txt
CHANGED
@@ -1,179 +1,179 @@
|
|
1 |
-
AboutNotice=Thank you for trying our amazing plugin. Now you are able to quickly track what you need. Feel free to contact us using our feedback form or our email <a href="mailto:aleste@intellywp.com">aleste@intellywp.com</a>
|
2 |
-
AboutText1=We are Stefan and Alex, two guys in love with Wordpress, coding and marketing! Our company IntellyWP is an idea to bring Intelly ideas to your Intelly site ;)
|
3 |
-
AboutText2=Feel free to reach us by the feedback form below.
|
4 |
-
AboutTitle=We make Intelly plugins for your Intelly site
|
5 |
-
Actions=
|
6 |
-
ActivateError=Errors activating key. Network problem or wrong password
|
7 |
-
ActivateSuccess1=License key "{0}" successfully activated
|
8 |
-
ActivateSuccess2=CONGRATS...YOU ARE NOW A PREMIUM MEMBER! :)
|
9 |
-
Active?=
|
10 |
-
Add New Script=
|
11 |
-
AddSubtitle=Fill in the information and click "Save"
|
12 |
-
AddTitle=New tracking code
|
13 |
-
Button.Add=Add new Tracking Code
|
14 |
-
Button.BuyPRO=UPGRADE TO PREMIUM NOW ››
|
15 |
-
CodeAddNotice=Tracking code "#{0} ({1})" successfully added
|
16 |
-
CodeDeleteNotice=Tracking code "#{0} ({1})" successfully deleted
|
17 |
-
CodeUpdateNotice=Tracking code "#{0} ({1})" successfully updated
|
18 |
-
ConversionDynamicFields1=*** PREMIUM FEATURE *** If you need to use dynamic conversion values, to track additional data in your conversions (like in Facebook Ads or Google Adwords), you can check <a href="http://support.intellywp.com/article/28-dynamic-conversion-values?utm_campaign=plugin-editor" target="_blank">this documentation to see how </a>.<br>
|
19 |
-
ConversionDynamicFields2=See Dynamic conversion values tags below:
|
20 |
-
ConversionDynamicFields3=<b>@@ORDERID@@</b>: return the order id
|
21 |
-
ConversionDynamicFields4=<b>@@CURRENCY@@</b>: return the currency
|
22 |
-
ConversionDynamicFields5=<b>@@PRODUCTS@@</b>: return the products name bought, separated by comma
|
23 |
-
ConversionDynamicFields6=<b>@@AMOUNT@@</b>: return the amount of the cart payment, tax and shipping cost excluded
|
24 |
-
ConversionDynamicFields7=<b>@@TAX@@</b>: return the amount of the tax in the purchase
|
25 |
-
ConversionDynamicFields8=<b>@@TOTAL@@</b>: return the total amount of the purchase, tax included
|
26 |
-
ConversionProductQuestion=In which products do you want to insert this code (once the order is completed)?
|
27 |
-
DeactivateError=Errors deactivating key. Network problem??
|
28 |
-
DeactivateSuccess=License key "{0}" successfully deactivated
|
29 |
-
Delete?=
|
30 |
-
DisableAllowTrackingNotice1=Ooops... Seems that you are not allowing us to receive plugin usage information. It allows us to have a BETTER development without collecting any sensitive-data.
|
31 |
-
DisableAllowTrackingNotice2=Please allow us to receive this information click <a href="{0}">HERE :)</a>
|
32 |
-
Docs & FAQ=
|
33 |
-
DynamicFieldsPromo=Are you looking for dynamic conversion values (like price, currency) inside your conversion pixel? Check the DOCS on <a href="{0}" target="_blank">IntellyWP website</a>
|
34 |
-
Edit=
|
35 |
-
EditSubtitle=Edit the information that you need and click "Save"
|
36 |
-
EditTitle=Edit tracking code
|
37 |
-
Editor.Add=Tracking Code "#{0} ({1})" successfully stored.
|
38 |
-
Editor.EcommerceCheck=In {0} (v.{1})
|
39 |
-
Editor.NoEcommerceFound1=No compatible ecommerce found!
|
40 |
-
Editor.NoEcommerceFound2=Currently we are compatible with <b>{0}</b>
|
41 |
-
Editor.PositionBlocked=Select [ALL] to track every purchase, or select from the the list if you'd like track sales only of certain products.
|
42 |
-
Editor.active=Active?
|
43 |
-
Editor.code=Paste your Tracking Code here
|
44 |
-
Editor.deviceType=Show only on device
|
45 |
-
Editor.deviceType.all=[All]
|
46 |
-
Editor.deviceType.desktop=Desktop
|
47 |
-
Editor.deviceType.mobile=Mobile
|
48 |
-
Editor.deviceType.tablet=Tablet
|
49 |
-
Editor.exceptCategoriesActive=Exclude in posts with specific categories
|
50 |
-
Editor.exceptPostsOfTypeActive=Exclude posts "<b>{0}</b>"
|
51 |
-
Editor.exceptTagsActive=Exclude in posts with specific tags
|
52 |
-
Editor.exceptTermsOfTypeActive=Exclude terms "<b>{0}</b>"
|
53 |
-
Editor.includeCategoriesActive=Include in posts with specific categories
|
54 |
-
Editor.includeEverywhereActive=Include in the whole website (pages, posts and archives)
|
55 |
-
Editor.includeLastPostsActive=Include in latest posts (specify the number of posts)
|
56 |
-
Editor.includePostsOfTypeActive=Include posts "<b>{0}</b>"
|
57 |
-
Editor.includeTagsActive=Include in posts with specific tags
|
58 |
-
Editor.includeTermsOfTypeActive=Include terms "<b>{0}</b>"
|
59 |
-
Editor.name=Name
|
60 |
-
Editor.position=Position inside the code
|
61 |
-
Editor.position.0=Before </HEAD>
|
62 |
-
Editor.position.1=After <BODY>
|
63 |
-
Editor.position.2=Before </BODY>
|
64 |
-
Editor.trackMode_0=Standard code tracking in your Wordpress
|
65 |
-
Editor.trackMode_1=Track conversion in your {0}
|
66 |
-
Editor.trackPage_0=In the whole website (pages, posts and archives)
|
67 |
-
Editor.trackPage_1=In specific pages or posts
|
68 |
-
EmptyTrackingList=Your tracking code list is empty, please <a href="{0}">CLICK HERE</a> to create new ones.
|
69 |
-
EnableAllowTrackingNotice1=Currently we receive plugin usage information. It allows us to have a BETTER development so many many thanks from the development team.
|
70 |
-
EnableAllowTrackingNotice2=If you want to stop tracking please click <a href="{0}">HERE :(</a>
|
71 |
-
Error.ExcludeSelectAtLeastOne=Exclude at least one item of <b>{0}</b>
|
72 |
-
Error.IncludeExcludeAll=You cannot choose to include/exclude [All] in <b>{0}</b> configuration
|
73 |
-
Error.IncludeSelectAtLeastOne=Include at least one item of <b>{0}</b> or select [All]
|
74 |
-
Everywhere=
|
75 |
-
Faq.Question1=Do you have a video that show me the plugin working?
|
76 |
-
Faq.Question2=Will this plugin slow my website?
|
77 |
-
Faq.Question3=Can I put a tracking code or a script in ONE (maybe TWO?) specific page?
|
78 |
-
Faq.Question4=Can I track conversions?
|
79 |
-
Faq.Question5=Can I manage Facebook Retargeting and Custom Audiences?
|
80 |
-
Faq.Question6=Will this plugin interferes with my Google Analytics plugin?
|
81 |
-
Faq.Question7=Can I use unlimited tracking codes and conversion pixels?
|
82 |
-
Faq.Question8=How to verify that a tracking code is properly working?
|
83 |
-
Faq.Response1=Sure! Click on the link <a href="http://intellywp.com/tracking-code-manager/" target="_blank">http://intellywp.com/tracking-code-manager</a> for a full explanation. This is our official webpage, you will see the plugin in action, with the possibility to BUY PREMIUM version and have full support.
|
84 |
-
Faq.Response2=Absolutely not! Since this plugin is built with lightweight code, you won't notice any difference in speed.
|
85 |
-
Faq.Response3=Of course you can! You can choose to put the code in a single page, in some posts, or in the whole website (more features in PREMIUM version).
|
86 |
-
Faq.Response4=Yeap! This is one of the main reason to use this plugin! You can track your conversions by putting the conversion pixel or code ONLY inside the thank you page.
|
87 |
-
Faq.Response5=Yes! For example you can put Facebook Pixel inside a certain posts of your blog to retarget those users who have already visited that posts on Facebook.
|
88 |
-
Faq.Response6=Nope! We tested the most famous Google Analytics plugins and it will not brake any of them.
|
89 |
-
Faq.Response7=Simply...YES!
|
90 |
-
Faq.Response8=Have a look at the source code of your page (search for: Tracking Code Manager) or you can install Google Chrome Addons. We suggest <a href="https://chrome.google.com/webstore/detail/fb-pixel-helper/fdgfkebogiimcoedlicjlajpkdmockpc">FB Pixel Helper</a> for Facebook codes and <a href="https://chrome.google.com/webstore/detail/tag-assistant-by-google/kejbdjndbnbjgmefkgdddjlbokphdefk">Tag Assistant (by Google)</a> for Google codes.
|
91 |
-
FaqTitle=F.A.Q. Frequently Asked Question
|
92 |
-
Feedback.body=Feedback
|
93 |
-
Feedback.body.check=Please specify your feedback
|
94 |
-
Feedback.email=Contact email
|
95 |
-
Feedback.email.check=Please specify a valid email
|
96 |
-
Feedback.track=Send also track information (this can be very useful for us to solve your issue)
|
97 |
-
FeedbackError=Errors sending feedback. Please email us at aleste@intellywp.com
|
98 |
-
FeedbackHeader=Are you looking for new features? Send us a feedback
|
99 |
-
FeedbackSuccess=Feedback successfully sent. We will reply you ASAP.
|
100 |
-
FirstTimeActivation=Thank you for activating our plugin. This is the manager where you need to start to configure your tracking codes. Thanks for choosing <a href="http://intellywp.com/" target="_blank">IntellyWP</a>! :)
|
101 |
-
FreeLicenseReached=You have reached the FREE version limit. Please buy the PREMIUM version or delete unused tracking code and create new ones.
|
102 |
-
GuruInfo=Below some GURU info (useful to request support at support@intellywp.com)
|
103 |
-
License.key=Activation key
|
104 |
-
License.licenseSiteCount=License site count
|
105 |
-
License.metabox=In "<b>{0}</b>"
|
106 |
-
LicenseSection=License information
|
107 |
-
LicenseSectionSubtitle=Insert the activation key received by email in the text below to see all the settings
|
108 |
-
Manager=
|
109 |
-
ManagerTitle=Welcome to "<b>Tracking Code Manager</b> (v.{0})", an <a href="https://intellywp.com/" target="_blank"><b>IntellyWP</b></a> plugin.
|
110 |
-
MetaboxSection=Metabox information
|
111 |
-
MetaboxSectionSubtitle=Check in which post type do you want integrate our metabox widget
|
112 |
-
Name=
|
113 |
-
No=
|
114 |
-
Notice.ProCTA=Check all premium features now ››
|
115 |
-
Notice.ProFeature1=Include code in latest posts (usefull for remarketing and Facebook Custom Audience)
|
116 |
-
Notice.ProFeature2=Include code in your custom post type
|
117 |
-
Notice.ProFeature3=Include code in specific categories or tags
|
118 |
-
Notice.ProHeader1=Do you like this plugin?
|
119 |
-
Notice.ProHeader2=With <b>PREMIUM</b> version you can have <b>UNLIMITED</b> tracking codes and also other awesome features:
|
120 |
-
Plugin1.Name=Tracking Code Manager PRO
|
121 |
-
Plugin1.Permalink=https://intellywp.com/tracking-code-manager/?utm_campaign=sidebar
|
122 |
-
Plugin1.Subtitle=A plugin to manage ALL your tracking code and conversion pixels. Compatible with Facebook Ads, Google Adwords, WooCommerce, Easy Digital Downloads.
|
123 |
-
Plugin2.Name=Welcome Bar
|
124 |
-
Plugin2.Permalink=https://wordpress.org/plugins/intelly-welcome-bar/
|
125 |
-
Plugin2.Subtitle=Increase engagement and drive specific offers to the visitors coming from a specific traffic source. As seen on BetaList and ProductHunt.
|
126 |
-
Plugin3.Name=Post's Footer Manager
|
127 |
-
Plugin3.Permalink=https://wordpress.org/plugins/intelly-posts-footer-manager
|
128 |
-
Plugin3.Subtitle=Clean the mess after your content! Organize your post's footer, insert what you want, order elements, create groups for specific categories.
|
129 |
-
Plugin4.Name=Evergreen Countdown Timer
|
130 |
-
Plugin4.Permalink=https://wordpress.org/plugins/intelly-countdown/
|
131 |
-
Plugin4.Subtitle=Evergreen Countdown is a plugin built for marketers that need a reliable solution to use scarcity on their websites and landing pages.
|
132 |
-
Plugin5.Name=GDPR Framework
|
133 |
-
Plugin5.Permalink=https://wordpress.org/plugins/gdpr-framework/
|
134 |
-
Plugin5.Subtitle=A plugin that gives you a simple and elegant interface to handle Data Subject Access Requests (DSARs) and more.
|
135 |
-
Plugin6.Name=Inline Related Posts
|
136 |
-
Plugin6.Permalink=https://wordpress.org/plugins/intelly-related-posts/
|
137 |
-
Plugin6.Subtitle=Inline Related Posts AUTOMATICALLY inserts related posts INSIDE your content, capturing immediately the reader's attention.
|
138 |
-
PluginCTA=See more..
|
139 |
-
PluginFreeAlreadyInstalled=The "Tracking Code Manager" is already installed. Please deactivate this plugin to continue using the "Tracking Code Manager PRO" version. No data will be lost.
|
140 |
-
PluginLimit.Line1=In this FREE version you can insert up to N.{0} different codes/locations (remaining N.{1})
|
141 |
-
PluginLimit.Line2=If you need more Tracking Code or more features please buy our PREMIUM version <a href="{0}" target="_blank"><b>HERE</b></a>
|
142 |
-
PluginProAlreadyInstalled=The "Tracking Code Manager PRO" is already installed. Please deactivate the "Tracking Code Manager FREE" plugin. No data will be lost.
|
143 |
-
Question.DeleteQuestion=Do you want to delete this code?
|
144 |
-
QuestionActiveOff=Do you want to deactivate this code?
|
145 |
-
QuestionActiveOn=Do you want to activate this code?
|
146 |
-
Rate us=
|
147 |
-
Settings=
|
148 |
-
SettingsTitle=Plugin settings
|
149 |
-
Shortcode=
|
150 |
-
Sidebar.Title=How to contact us?
|
151 |
-
Sidebar1.Name=IntellyWP (homepage)
|
152 |
-
Sidebar1.Url=https://intellywp.com
|
153 |
-
Sidebar2.Name=Our plugins
|
154 |
-
Sidebar2.Url=https://intellywp.com/plugins
|
155 |
-
Sidebar3.Name=Contact support
|
156 |
-
Sidebar3.Url=https://data443.atlassian.net/servicedesk/customer/portal/17
|
157 |
-
Sidebar4.Name=Like us on Facebook
|
158 |
-
Sidebar4.Url=https://www.facebook.com/intellywp/
|
159 |
-
Sidebar5.Name=Follow us on Twitter
|
160 |
-
Sidebar5.Url=https://twitter.com/intellywp
|
161 |
-
Sidebar6.Name=Rate us on Wordpress
|
162 |
-
Sidebar6.Url=https://wordpress.org/support/plugin/tracking-code-manager/reviews/#postform
|
163 |
-
SnippetsLimitNotice=You are using {0} slots or {1} available slots in the FREE version. You can unlock this limit visiting this <a href="{2}">LINK</a> (IntellyWP site).
|
164 |
-
SnippetsLimitReached=You have reached the limit of {0} tracking codes. You can unlock this limit visiting this <a href="{1}">LINK</a> (IntellyWP site).
|
165 |
-
Specific Pages=
|
166 |
-
WhatsNewTitle=Introducing Ecommerce Conversion Tracking
|
167 |
-
Where?=
|
168 |
-
XdebugException=XdebugException: please contact our support at support@intellywp.com. We will help you, guaranteed :)
|
169 |
-
Yes=
|
170 |
-
YouHaveThePremiumVersion1=You have installed the PREMIUM version of this plugin.
|
171 |
-
YouHaveThePremiumVersion2=Please click <a href="{0}">here</a> to have all the features.
|
172 |
-
YouHaveThePremiumVersion3=You can deactivate the "<b>Tracking Code Manager</b>" plugin and only still active the "<b>Tracking Code Manager PRO</b>" plugin
|
173 |
-
YouTubeVideo.Description1=Track Conversion in Woocommerce
|
174 |
-
YouTubeVideo.Description2=Track Conversion in Easy Digital Download
|
175 |
-
YouTubeVideo.Description3=Track Conversion in WP eCommerce
|
176 |
-
YouTubeVideo.Title=Our plugin in few videos..
|
177 |
-
YouTubeVideo.URL1=TDgoefbdtSI
|
178 |
-
YouTubeVideo.URL2=jgmmMlerFRg
|
179 |
-
YouTubeVideo.URL3=vBjDeb4Ej-I
|
1 |
+
AboutNotice=Thank you for trying our amazing plugin. Now you are able to quickly track what you need. Feel free to contact us using our feedback form or our email <a href="mailto:aleste@intellywp.com">aleste@intellywp.com</a>
|
2 |
+
AboutText1=We are Stefan and Alex, two guys in love with Wordpress, coding and marketing! Our company IntellyWP is an idea to bring Intelly ideas to your Intelly site ;)
|
3 |
+
AboutText2=Feel free to reach us by the feedback form below.
|
4 |
+
AboutTitle=We make Intelly plugins for your Intelly site
|
5 |
+
Actions=
|
6 |
+
ActivateError=Errors activating key. Network problem or wrong password
|
7 |
+
ActivateSuccess1=License key "{0}" successfully activated
|
8 |
+
ActivateSuccess2=CONGRATS...YOU ARE NOW A PREMIUM MEMBER! :)
|
9 |
+
Active?=
|
10 |
+
Add New Script=
|
11 |
+
AddSubtitle=Fill in the information and click "Save"
|
12 |
+
AddTitle=New tracking code
|
13 |
+
Button.Add=Add new Tracking Code
|
14 |
+
Button.BuyPRO=UPGRADE TO PREMIUM NOW ››
|
15 |
+
CodeAddNotice=Tracking code "#{0} ({1})" successfully added
|
16 |
+
CodeDeleteNotice=Tracking code "#{0} ({1})" successfully deleted
|
17 |
+
CodeUpdateNotice=Tracking code "#{0} ({1})" successfully updated
|
18 |
+
ConversionDynamicFields1=*** PREMIUM FEATURE *** If you need to use dynamic conversion values, to track additional data in your conversions (like in Facebook Ads or Google Adwords), you can check <a href="http://support.intellywp.com/article/28-dynamic-conversion-values?utm_campaign=plugin-editor" target="_blank">this documentation to see how </a>.<br>
|
19 |
+
ConversionDynamicFields2=See Dynamic conversion values tags below:
|
20 |
+
ConversionDynamicFields3=<b>@@ORDERID@@</b>: return the order id
|
21 |
+
ConversionDynamicFields4=<b>@@CURRENCY@@</b>: return the currency
|
22 |
+
ConversionDynamicFields5=<b>@@PRODUCTS@@</b>: return the products name bought, separated by comma
|
23 |
+
ConversionDynamicFields6=<b>@@AMOUNT@@</b>: return the amount of the cart payment, tax and shipping cost excluded
|
24 |
+
ConversionDynamicFields7=<b>@@TAX@@</b>: return the amount of the tax in the purchase
|
25 |
+
ConversionDynamicFields8=<b>@@TOTAL@@</b>: return the total amount of the purchase, tax included
|
26 |
+
ConversionProductQuestion=In which products do you want to insert this code (once the order is completed)?
|
27 |
+
DeactivateError=Errors deactivating key. Network problem??
|
28 |
+
DeactivateSuccess=License key "{0}" successfully deactivated
|
29 |
+
Delete?=
|
30 |
+
DisableAllowTrackingNotice1=Ooops... Seems that you are not allowing us to receive plugin usage information. It allows us to have a BETTER development without collecting any sensitive-data.
|
31 |
+
DisableAllowTrackingNotice2=Please allow us to receive this information click <a href="{0}">HERE :)</a>
|
32 |
+
Docs & FAQ=
|
33 |
+
DynamicFieldsPromo=Are you looking for dynamic conversion values (like price, currency) inside your conversion pixel? Check the DOCS on <a href="{0}" target="_blank">IntellyWP website</a>
|
34 |
+
Edit=
|
35 |
+
EditSubtitle=Edit the information that you need and click "Save"
|
36 |
+
EditTitle=Edit tracking code
|
37 |
+
Editor.Add=Tracking Code "#{0} ({1})" successfully stored.
|
38 |
+
Editor.EcommerceCheck=In {0} (v.{1})
|
39 |
+
Editor.NoEcommerceFound1=No compatible ecommerce found!
|
40 |
+
Editor.NoEcommerceFound2=Currently we are compatible with <b>{0}</b>
|
41 |
+
Editor.PositionBlocked=Select [ALL] to track every purchase, or select from the the list if you'd like track sales only of certain products.
|
42 |
+
Editor.active=Active?
|
43 |
+
Editor.code=Paste your Tracking Code here
|
44 |
+
Editor.deviceType=Show only on device
|
45 |
+
Editor.deviceType.all=[All]
|
46 |
+
Editor.deviceType.desktop=Desktop
|
47 |
+
Editor.deviceType.mobile=Mobile
|
48 |
+
Editor.deviceType.tablet=Tablet
|
49 |
+
Editor.exceptCategoriesActive=Exclude in posts with specific categories
|
50 |
+
Editor.exceptPostsOfTypeActive=Exclude posts "<b>{0}</b>"
|
51 |
+
Editor.exceptTagsActive=Exclude in posts with specific tags
|
52 |
+
Editor.exceptTermsOfTypeActive=Exclude terms "<b>{0}</b>"
|
53 |
+
Editor.includeCategoriesActive=Include in posts with specific categories
|
54 |
+
Editor.includeEverywhereActive=Include in the whole website (pages, posts and archives)
|
55 |
+
Editor.includeLastPostsActive=Include in latest posts (specify the number of posts)
|
56 |
+
Editor.includePostsOfTypeActive=Include posts "<b>{0}</b>"
|
57 |
+
Editor.includeTagsActive=Include in posts with specific tags
|
58 |
+
Editor.includeTermsOfTypeActive=Include terms "<b>{0}</b>"
|
59 |
+
Editor.name=Name
|
60 |
+
Editor.position=Position inside the code
|
61 |
+
Editor.position.0=Before </HEAD>
|
62 |
+
Editor.position.1=After <BODY>
|
63 |
+
Editor.position.2=Before </BODY>
|
64 |
+
Editor.trackMode_0=Standard code tracking in your Wordpress
|
65 |
+
Editor.trackMode_1=Track conversion in your {0}
|
66 |
+
Editor.trackPage_0=In the whole website (pages, posts and archives)
|
67 |
+
Editor.trackPage_1=In specific pages or posts
|
68 |
+
EmptyTrackingList=Your tracking code list is empty, please <a href="{0}">CLICK HERE</a> to create new ones.
|
69 |
+
EnableAllowTrackingNotice1=Currently we receive plugin usage information. It allows us to have a BETTER development so many many thanks from the development team.
|
70 |
+
EnableAllowTrackingNotice2=If you want to stop tracking please click <a href="{0}">HERE :(</a>
|
71 |
+
Error.ExcludeSelectAtLeastOne=Exclude at least one item of <b>{0}</b>
|
72 |
+
Error.IncludeExcludeAll=You cannot choose to include/exclude [All] in <b>{0}</b> configuration
|
73 |
+
Error.IncludeSelectAtLeastOne=Include at least one item of <b>{0}</b> or select [All]
|
74 |
+
Everywhere=
|
75 |
+
Faq.Question1=Do you have a video that show me the plugin working?
|
76 |
+
Faq.Question2=Will this plugin slow my website?
|
77 |
+
Faq.Question3=Can I put a tracking code or a script in ONE (maybe TWO?) specific page?
|
78 |
+
Faq.Question4=Can I track conversions?
|
79 |
+
Faq.Question5=Can I manage Facebook Retargeting and Custom Audiences?
|
80 |
+
Faq.Question6=Will this plugin interferes with my Google Analytics plugin?
|
81 |
+
Faq.Question7=Can I use unlimited tracking codes and conversion pixels?
|
82 |
+
Faq.Question8=How to verify that a tracking code is properly working?
|
83 |
+
Faq.Response1=Sure! Click on the link <a href="http://intellywp.com/tracking-code-manager/" target="_blank">http://intellywp.com/tracking-code-manager</a> for a full explanation. This is our official webpage, you will see the plugin in action, with the possibility to BUY PREMIUM version and have full support.
|
84 |
+
Faq.Response2=Absolutely not! Since this plugin is built with lightweight code, you won't notice any difference in speed.
|
85 |
+
Faq.Response3=Of course you can! You can choose to put the code in a single page, in some posts, or in the whole website (more features in PREMIUM version).
|
86 |
+
Faq.Response4=Yeap! This is one of the main reason to use this plugin! You can track your conversions by putting the conversion pixel or code ONLY inside the thank you page.
|
87 |
+
Faq.Response5=Yes! For example you can put Facebook Pixel inside a certain posts of your blog to retarget those users who have already visited that posts on Facebook.
|
88 |
+
Faq.Response6=Nope! We tested the most famous Google Analytics plugins and it will not brake any of them.
|
89 |
+
Faq.Response7=Simply...YES!
|
90 |
+
Faq.Response8=Have a look at the source code of your page (search for: Tracking Code Manager) or you can install Google Chrome Addons. We suggest <a href="https://chrome.google.com/webstore/detail/fb-pixel-helper/fdgfkebogiimcoedlicjlajpkdmockpc">FB Pixel Helper</a> for Facebook codes and <a href="https://chrome.google.com/webstore/detail/tag-assistant-by-google/kejbdjndbnbjgmefkgdddjlbokphdefk">Tag Assistant (by Google)</a> for Google codes.
|
91 |
+
FaqTitle=F.A.Q. Frequently Asked Question
|
92 |
+
Feedback.body=Feedback
|
93 |
+
Feedback.body.check=Please specify your feedback
|
94 |
+
Feedback.email=Contact email
|
95 |
+
Feedback.email.check=Please specify a valid email
|
96 |
+
Feedback.track=Send also track information (this can be very useful for us to solve your issue)
|
97 |
+
FeedbackError=Errors sending feedback. Please email us at aleste@intellywp.com
|
98 |
+
FeedbackHeader=Are you looking for new features? Send us a feedback
|
99 |
+
FeedbackSuccess=Feedback successfully sent. We will reply you ASAP.
|
100 |
+
FirstTimeActivation=Thank you for activating our plugin. This is the manager where you need to start to configure your tracking codes. Thanks for choosing <a href="http://intellywp.com/" target="_blank">IntellyWP</a>! :)
|
101 |
+
FreeLicenseReached=You have reached the FREE version limit. Please buy the PREMIUM version or delete unused tracking code and create new ones.
|
102 |
+
GuruInfo=Below some GURU info (useful to request support at support@intellywp.com)
|
103 |
+
License.key=Activation key
|
104 |
+
License.licenseSiteCount=License site count
|
105 |
+
License.metabox=In "<b>{0}</b>"
|
106 |
+
LicenseSection=License information
|
107 |
+
LicenseSectionSubtitle=Insert the activation key received by email in the text below to see all the settings
|
108 |
+
Manager=
|
109 |
+
ManagerTitle=Welcome to "<b>Tracking Code Manager</b> (v.{0})", an <a href="https://intellywp.com/" target="_blank"><b>IntellyWP</b></a> plugin.
|
110 |
+
MetaboxSection=Metabox information
|
111 |
+
MetaboxSectionSubtitle=Check in which post type do you want integrate our metabox widget
|
112 |
+
Name=
|
113 |
+
No=
|
114 |
+
Notice.ProCTA=Check all premium features now ››
|
115 |
+
Notice.ProFeature1=Include code in latest posts (usefull for remarketing and Facebook Custom Audience)
|
116 |
+
Notice.ProFeature2=Include code in your custom post type
|
117 |
+
Notice.ProFeature3=Include code in specific categories or tags
|
118 |
+
Notice.ProHeader1=Do you like this plugin?
|
119 |
+
Notice.ProHeader2=With <b>PREMIUM</b> version you can have <b>UNLIMITED</b> tracking codes and also other awesome features:
|
120 |
+
Plugin1.Name=Tracking Code Manager PRO
|
121 |
+
Plugin1.Permalink=https://intellywp.com/tracking-code-manager/?utm_campaign=sidebar
|
122 |
+
Plugin1.Subtitle=A plugin to manage ALL your tracking code and conversion pixels. Compatible with Facebook Ads, Google Adwords, WooCommerce, Easy Digital Downloads.
|
123 |
+
Plugin2.Name=Welcome Bar
|
124 |
+
Plugin2.Permalink=https://wordpress.org/plugins/intelly-welcome-bar/
|
125 |
+
Plugin2.Subtitle=Increase engagement and drive specific offers to the visitors coming from a specific traffic source. As seen on BetaList and ProductHunt.
|
126 |
+
Plugin3.Name=Post's Footer Manager
|
127 |
+
Plugin3.Permalink=https://wordpress.org/plugins/intelly-posts-footer-manager
|
128 |
+
Plugin3.Subtitle=Clean the mess after your content! Organize your post's footer, insert what you want, order elements, create groups for specific categories.
|
129 |
+
Plugin4.Name=Evergreen Countdown Timer
|
130 |
+
Plugin4.Permalink=https://wordpress.org/plugins/intelly-countdown/
|
131 |
+
Plugin4.Subtitle=Evergreen Countdown is a plugin built for marketers that need a reliable solution to use scarcity on their websites and landing pages.
|
132 |
+
Plugin5.Name=GDPR Framework
|
133 |
+
Plugin5.Permalink=https://wordpress.org/plugins/gdpr-framework/
|
134 |
+
Plugin5.Subtitle=A plugin that gives you a simple and elegant interface to handle Data Subject Access Requests (DSARs) and more.
|
135 |
+
Plugin6.Name=Inline Related Posts
|
136 |
+
Plugin6.Permalink=https://wordpress.org/plugins/intelly-related-posts/
|
137 |
+
Plugin6.Subtitle=Inline Related Posts AUTOMATICALLY inserts related posts INSIDE your content, capturing immediately the reader's attention.
|
138 |
+
PluginCTA=See more..
|
139 |
+
PluginFreeAlreadyInstalled=The "Tracking Code Manager" is already installed. Please deactivate this plugin to continue using the "Tracking Code Manager PRO" version. No data will be lost.
|
140 |
+
PluginLimit.Line1=In this FREE version you can insert up to N.{0} different codes/locations (remaining N.{1})
|
141 |
+
PluginLimit.Line2=If you need more Tracking Code or more features please buy our PREMIUM version <a href="{0}" target="_blank"><b>HERE</b></a>
|
142 |
+
PluginProAlreadyInstalled=The "Tracking Code Manager PRO" is already installed. Please deactivate the "Tracking Code Manager FREE" plugin. No data will be lost.
|
143 |
+
Question.DeleteQuestion=Do you want to delete this code?
|
144 |
+
QuestionActiveOff=Do you want to deactivate this code?
|
145 |
+
QuestionActiveOn=Do you want to activate this code?
|
146 |
+
Rate us=
|
147 |
+
Settings=
|
148 |
+
SettingsTitle=Plugin settings
|
149 |
+
Shortcode=
|
150 |
+
Sidebar.Title=How to contact us?
|
151 |
+
Sidebar1.Name=IntellyWP (homepage)
|
152 |
+
Sidebar1.Url=https://intellywp.com
|
153 |
+
Sidebar2.Name=Our plugins
|
154 |
+
Sidebar2.Url=https://intellywp.com/plugins
|
155 |
+
Sidebar3.Name=Contact support
|
156 |
+
Sidebar3.Url=https://data443.atlassian.net/servicedesk/customer/portal/17
|
157 |
+
Sidebar4.Name=Like us on Facebook
|
158 |
+
Sidebar4.Url=https://www.facebook.com/intellywp/
|
159 |
+
Sidebar5.Name=Follow us on Twitter
|
160 |
+
Sidebar5.Url=https://twitter.com/intellywp
|
161 |
+
Sidebar6.Name=Rate us on Wordpress
|
162 |
+
Sidebar6.Url=https://wordpress.org/support/plugin/tracking-code-manager/reviews/#postform
|
163 |
+
SnippetsLimitNotice=You are using {0} slots or {1} available slots in the FREE version. You can unlock this limit visiting this <a href="{2}">LINK</a> (IntellyWP site).
|
164 |
+
SnippetsLimitReached=You have reached the limit of {0} tracking codes. You can unlock this limit visiting this <a href="{1}">LINK</a> (IntellyWP site).
|
165 |
+
Specific Pages=
|
166 |
+
WhatsNewTitle=Introducing Ecommerce Conversion Tracking
|
167 |
+
Where?=
|
168 |
+
XdebugException=XdebugException: please contact our support at support@intellywp.com. We will help you, guaranteed :)
|
169 |
+
Yes=
|
170 |
+
YouHaveThePremiumVersion1=You have installed the PREMIUM version of this plugin.
|
171 |
+
YouHaveThePremiumVersion2=Please click <a href="{0}">here</a> to have all the features.
|
172 |
+
YouHaveThePremiumVersion3=You can deactivate the "<b>Tracking Code Manager</b>" plugin and only still active the "<b>Tracking Code Manager PRO</b>" plugin
|
173 |
+
YouTubeVideo.Description1=Track Conversion in Woocommerce
|
174 |
+
YouTubeVideo.Description2=Track Conversion in Easy Digital Download
|
175 |
+
YouTubeVideo.Description3=Track Conversion in WP eCommerce
|
176 |
+
YouTubeVideo.Title=Our plugin in few videos..
|
177 |
+
YouTubeVideo.URL1=TDgoefbdtSI
|
178 |
+
YouTubeVideo.URL2=jgmmMlerFRg
|
179 |
+
YouTubeVideo.URL3=vBjDeb4Ej-I
|
readme.txt
CHANGED
@@ -1,229 +1,234 @@
|
|
1 |
-
=== Tracking Code Manager ===
|
2 |
-
Contributors: IntellyWP, data443
|
3 |
-
Tags: adwords remarketing,analytics conversion tracking,conversion pixel,conversion tracking,conversion tracking adwords,conversion tracking pixel,conversion tracking script,Facebook Ads,facebook conversion pixel,facebook custom audience,facebook retargeting,google adwords,google analytics web tracking code,google tag manager,html snippet,html snippets,html tracking code,javascript snippet,javascript snippets,header and footer,pay per click tracking,pixel tracking code,remarketing,retargeting,snippets,Tag Management,track conversion,track conversions,tracking code,tracking codes,tracking script,woocommerce,edd,easy digital downloads,wp ecommerce,wp e-commerce
|
4 |
-
Requires at least: 2.7
|
5 |
-
Tested up to: 5.7
|
6 |
-
|
7 |
-
A plugin to manage ALL your tracking code and conversion pixels. Compatible with Facebook Ads, Google Adwords, WooCommerce, Easy Digital Downloads, ..
|
8 |
-
|
9 |
-
== Description ==
|
10 |
-
|
11 |
-
**Tracking Code manager is a plugin that give you the ability to manage ALL your tracking code and scripts in one single page.**
|
12 |
-
|
13 |
-
<p>This plugin is a service of <a href="https://www.data443.com" rel="nofollow ugc">Data443.com</a>.</p>
|
14 |
-
|
15 |
-
<p>Data443 is a Data Security and Privacy Compliance company that is publicly traded <a href="https://finance.yahoo.com/quote/ATDS?p=ATD" rel="nofollow ugc">ATDS</a>. We have been providing leading GDPR compliance products such as <a href="https://wordpress.org/plugins/gdpr-framework/" rel="nofollow ugc">WordPress GDPR Framework</a> and <a href="https://www.data443.com/classidocs-home/" rel="nofollow ugc">ClassiDocs</a>, Blockchain privacy, and enterprise cloud eDiscovery tools.</p>
|
16 |
-
|
17 |
-
|
18 |
-
It doesn’t matter the place where you want to put your code, because with Tracking Code Manager you can put it wherever you want, with no restrictions.
|
19 |
-
|
20 |
-
Let’s say you are using on your website Google Analytics, Facebook Custom Audiences, Facebook Retargeting, Google Remarketing, Zendesk, a Live Chat tool, eye tracking analytics, popups, affiliate tracking pixels and so on...
|
21 |
-
|
22 |
-
For every single service you use, you’ll have to put a script or a tracking pixel in the <head> or <body> tag of your WordPress site OR in some of its pages.
|
23 |
-
|
24 |
-
Tracking Code Manager plugin allows you to gather EVERY code and snippet displaying them exactly where you want, whether in the whole site or in specific pages and posts.
|
25 |
-
|
26 |
-
> <strong>TRACK CONVERSION ON YOUR E-COMMERCE PLUGIN</strong><br>
|
27 |
-
> When it comes to track conversions on a wordpress page it’s easy… but if it’s a "dynamic thank you page" is a big problem.<br><br>
|
28 |
-
> Tracking Code Manager plugin DETECT AUTOMATICALLY your e-commerce plugin (WooCommerce, Easy Digital Downloads or WP eCommerce) and let you put the conversion pixels every time someone completes a sale on your store.<br>
|
29 |
-
> In addition you also have the ability to track a single product at time ;)<br>
|
30 |
-
> <a href="https://wordpress.org/plugins/tracking-code-manager/screenshots/">Check some screenshots here.</a>
|
31 |
-
|
32 |
-
= THE REAL PROBLEM =
|
33 |
-
|
34 |
-
We are living in the SaaS era, where online services manage all kind of software, analysis and advanced tools. Since every one of them needs a script or a tracking code, why don’t we take it easy with the fast Tracking Code Manager plugin?
|
35 |
-
|
36 |
-
= FORGET THE UPDATING PROBLEM =
|
37 |
-
|
38 |
-
Putting the tracking code directly in the theme files, you risk to lose important trackings or external service integrations when it will be updated.
|
39 |
-
|
40 |
-
With Tracking Code Manager you can forget about this problem also if you will change your theme in the future.
|
41 |
-
|
42 |
-
[youtube https://www.youtube.com/watch?v=shJG7Vf1nMg]
|
43 |
-
|
44 |
-
[youtube https://www.youtube.com/watch?v=TDgoefbdtSI]
|
45 |
-
|
46 |
-
> <strong>Premium version</strong><br>
|
47 |
-
> If you need more advanced feature you can also try our PREMIUM version available in the link [http://intellywp.com/tracking-code-manager/](http://intellywp.com/tracking-code-manager/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=TCM). This is our official webpage, you will see the plugin in action, with the possibility to buy PREMIUM version and have full support.
|
48 |
-
|
49 |
-
== Installation ==
|
50 |
-
|
51 |
-
1. Download
|
52 |
-
2. Upload to your /wp-contents/plugins/ directory.
|
53 |
-
3. Activate the plugin through the 'Plugins' menu in WordPress.
|
54 |
-
4. Put your tracking code, script or iframe in the plugin by going to the Settings => Tracking Code Manager menu
|
55 |
-
|
56 |
-
You can also click on this link [http://intellywp.com/tracking-code-manager/](http://intellywp.com/tracking-code-manager/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=TCM) to see a full explanation. This is our official webpage, you will see the plugin in action, with the possibility to buy PREMIUM version and have full support.
|
57 |
-
|
58 |
-
== Frequently Asked Questions ==
|
59 |
-
|
60 |
-
> <strong>Bug Reports</strong><br>
|
61 |
-
> Feel free to reach us by email for any problem you have with our plugins.
|
62 |
-
> Describe the steps to reproduce the bug and we will be happy to help!<br>
|
63 |
-
> To report a bug use the form at http://intellywp.com/report-a-bug/
|
64 |
-
|
65 |
-
= Do you have a video that show me the plugin working? =
|
66 |
-
|
67 |
-
Sure! Click on the link [http://intellywp.com/tracking-code-manager/](http://intellywp.com/tracking-code-manager/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=TCM) for a full explanation. This is our official webpage, you will see the plugin in action, with the possibility to buy PREMIUM version and have full support.
|
68 |
-
|
69 |
-
= Will this plugin slow my website? =
|
70 |
-
|
71 |
-
Absolutely not! Since this plugin is built with lightweight code, you won’t notice any difference in speed.
|
72 |
-
|
73 |
-
= Can I put a tracking code or a script in ONE (maybe TWO?) specific page? =
|
74 |
-
|
75 |
-
Of course you can! You can choose to put the code in a single page, in some posts, or in the whole website (more features in PREMIUM version).
|
76 |
-
|
77 |
-
= Can I track conversions? =
|
78 |
-
|
79 |
-
Yeap! This is one of the main reason to use this plugin! You can track your conversions by putting the conversion pixel or code ONLY inside the thank you page.
|
80 |
-
|
81 |
-
= Can I manage Facebook Retargeting and Custom Audiences? =
|
82 |
-
|
83 |
-
Yes! For example you can put Facebook Pixel inside a certain posts of your blog to retarget those users who have already visited that posts on Facebook.
|
84 |
-
|
85 |
-
= Will this plugin interferes with my Google Analytics plugin? =
|
86 |
-
|
87 |
-
Nope! We tested the most famous Google Analytics plugins and it will not brake any of them.
|
88 |
-
|
89 |
-
= Can I use unlimited tracking codes and conversion pixels? =
|
90 |
-
|
91 |
-
You have 6 slots to use. Which means six different locations with unlimited tracking codes (enough for 99% of users).
|
92 |
-
|
93 |
-
= How to verify that a tracking code is properly working? =
|
94 |
-
|
95 |
-
Have a look at the source code of your page (search for: Tracking Code Manager) or you can install Google Chrome Addons. We suggest <a href="https://chrome.google.com/webstore/detail/fb-pixel-helper/fdgfkebogiimcoedlicjlajpkdmockpc">FB Pixel Helper</a> for Facebook codes and <a href="https://chrome.google.com/webstore/detail/tag-assistant-by-google/kejbdjndbnbjgmefkgdddjlbokphdefk">Tag Assistant (by Google)</a> for Google codes.
|
96 |
-
|
97 |
-
== Screenshots ==
|
98 |
-
|
99 |
-
1. New tracking code scripts
|
100 |
-
2. Include tracking code in specific page
|
101 |
-
3. Choose easly by typing the page title
|
102 |
-
4. Include also [All] posts or pages without selecting all one-by-one
|
103 |
-
5. List your tracking codes defined
|
104 |
-
6. Tracking code manager is also as a metabox in your posts/pages (you can remove by settings)
|
105 |
-
|
106 |
-
== Changelog ==
|
107 |
-
|
108 |
-
= 2.0.
|
109 |
-
*Release Date - 2021-
|
110 |
-
|
111 |
-
*
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
* Tested with WP 5.
|
118 |
-
|
119 |
-
=
|
120 |
-
*Release Date -
|
121 |
-
|
122 |
-
*
|
123 |
-
|
124 |
-
=
|
125 |
-
*Release Date -
|
126 |
-
|
127 |
-
*
|
128 |
-
|
129 |
-
= 1.8.
|
130 |
-
*Release Date -
|
131 |
-
|
132 |
-
* [
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
* [
|
139 |
-
|
140 |
-
= 1.7.
|
141 |
-
*Release Date -
|
142 |
-
|
143 |
-
* [
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
* [
|
150 |
-
|
151 |
-
= 1.6.
|
152 |
-
*Release Date -
|
153 |
-
|
154 |
-
* [Bugfix
|
155 |
-
|
156 |
-
= 1.6.
|
157 |
-
*Release Date -
|
158 |
-
|
159 |
-
*
|
160 |
-
|
161 |
-
|
162 |
-
*
|
163 |
-
|
164 |
-
|
165 |
-
*
|
166 |
-
|
167 |
-
*
|
168 |
-
|
169 |
-
|
170 |
-
*
|
171 |
-
|
172 |
-
|
173 |
-
*
|
174 |
-
|
175 |
-
*
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
*
|
181 |
-
|
182 |
-
*
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
*
|
188 |
-
|
189 |
-
*
|
190 |
-
|
191 |
-
|
192 |
-
*
|
193 |
-
|
194 |
-
|
195 |
-
*
|
196 |
-
|
197 |
-
*
|
198 |
-
|
199 |
-
|
200 |
-
*
|
201 |
-
|
202 |
-
*
|
203 |
-
|
204 |
-
|
205 |
-
*
|
206 |
-
|
207 |
-
*
|
208 |
-
|
209 |
-
|
210 |
-
*
|
211 |
-
|
212 |
-
|
213 |
-
*
|
214 |
-
|
215 |
-
*
|
216 |
-
|
217 |
-
= 1.
|
218 |
-
*Release Date -
|
219 |
-
|
220 |
-
*
|
221 |
-
|
222 |
-
= 1.
|
223 |
-
*
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Tracking Code Manager ===
|
2 |
+
Contributors: IntellyWP, data443
|
3 |
+
Tags: adwords remarketing,analytics conversion tracking,conversion pixel,conversion tracking,conversion tracking adwords,conversion tracking pixel,conversion tracking script,Facebook Ads,facebook conversion pixel,facebook custom audience,facebook retargeting,google adwords,google analytics web tracking code,google tag manager,html snippet,html snippets,html tracking code,javascript snippet,javascript snippets,header and footer,pay per click tracking,pixel tracking code,remarketing,retargeting,snippets,Tag Management,track conversion,track conversions,tracking code,tracking codes,tracking script,woocommerce,edd,easy digital downloads,wp ecommerce,wp e-commerce
|
4 |
+
Requires at least: 2.7
|
5 |
+
Tested up to: 5.7
|
6 |
+
|
7 |
+
A plugin to manage ALL your tracking code and conversion pixels. Compatible with Facebook Ads, Google Adwords, WooCommerce, Easy Digital Downloads, ..
|
8 |
+
|
9 |
+
== Description ==
|
10 |
+
|
11 |
+
**Tracking Code manager is a plugin that give you the ability to manage ALL your tracking code and scripts in one single page.**
|
12 |
+
|
13 |
+
<p>This plugin is a service of <a href="https://www.data443.com" rel="nofollow ugc">Data443.com</a>.</p>
|
14 |
+
|
15 |
+
<p>Data443 is a Data Security and Privacy Compliance company that is publicly traded <a href="https://finance.yahoo.com/quote/ATDS?p=ATD" rel="nofollow ugc">ATDS</a>. We have been providing leading GDPR compliance products such as <a href="https://wordpress.org/plugins/gdpr-framework/" rel="nofollow ugc">WordPress GDPR Framework</a> and <a href="https://www.data443.com/classidocs-home/" rel="nofollow ugc">ClassiDocs</a>, Blockchain privacy, and enterprise cloud eDiscovery tools.</p>
|
16 |
+
|
17 |
+
|
18 |
+
It doesn’t matter the place where you want to put your code, because with Tracking Code Manager you can put it wherever you want, with no restrictions.
|
19 |
+
|
20 |
+
Let’s say you are using on your website Google Analytics, Facebook Custom Audiences, Facebook Retargeting, Google Remarketing, Zendesk, a Live Chat tool, eye tracking analytics, popups, affiliate tracking pixels and so on...
|
21 |
+
|
22 |
+
For every single service you use, you’ll have to put a script or a tracking pixel in the <head> or <body> tag of your WordPress site OR in some of its pages.
|
23 |
+
|
24 |
+
Tracking Code Manager plugin allows you to gather EVERY code and snippet displaying them exactly where you want, whether in the whole site or in specific pages and posts.
|
25 |
+
|
26 |
+
> <strong>TRACK CONVERSION ON YOUR E-COMMERCE PLUGIN</strong><br>
|
27 |
+
> When it comes to track conversions on a wordpress page it’s easy… but if it’s a "dynamic thank you page" is a big problem.<br><br>
|
28 |
+
> Tracking Code Manager plugin DETECT AUTOMATICALLY your e-commerce plugin (WooCommerce, Easy Digital Downloads or WP eCommerce) and let you put the conversion pixels every time someone completes a sale on your store.<br>
|
29 |
+
> In addition you also have the ability to track a single product at time ;)<br>
|
30 |
+
> <a href="https://wordpress.org/plugins/tracking-code-manager/screenshots/">Check some screenshots here.</a>
|
31 |
+
|
32 |
+
= THE REAL PROBLEM =
|
33 |
+
|
34 |
+
We are living in the SaaS era, where online services manage all kind of software, analysis and advanced tools. Since every one of them needs a script or a tracking code, why don’t we take it easy with the fast Tracking Code Manager plugin?
|
35 |
+
|
36 |
+
= FORGET THE UPDATING PROBLEM =
|
37 |
+
|
38 |
+
Putting the tracking code directly in the theme files, you risk to lose important trackings or external service integrations when it will be updated.
|
39 |
+
|
40 |
+
With Tracking Code Manager you can forget about this problem also if you will change your theme in the future.
|
41 |
+
|
42 |
+
[youtube https://www.youtube.com/watch?v=shJG7Vf1nMg]
|
43 |
+
|
44 |
+
[youtube https://www.youtube.com/watch?v=TDgoefbdtSI]
|
45 |
+
|
46 |
+
> <strong>Premium version</strong><br>
|
47 |
+
> If you need more advanced feature you can also try our PREMIUM version available in the link [http://intellywp.com/tracking-code-manager/](http://intellywp.com/tracking-code-manager/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=TCM). This is our official webpage, you will see the plugin in action, with the possibility to buy PREMIUM version and have full support.
|
48 |
+
|
49 |
+
== Installation ==
|
50 |
+
|
51 |
+
1. Download
|
52 |
+
2. Upload to your /wp-contents/plugins/ directory.
|
53 |
+
3. Activate the plugin through the 'Plugins' menu in WordPress.
|
54 |
+
4. Put your tracking code, script or iframe in the plugin by going to the Settings => Tracking Code Manager menu
|
55 |
+
|
56 |
+
You can also click on this link [http://intellywp.com/tracking-code-manager/](http://intellywp.com/tracking-code-manager/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=TCM) to see a full explanation. This is our official webpage, you will see the plugin in action, with the possibility to buy PREMIUM version and have full support.
|
57 |
+
|
58 |
+
== Frequently Asked Questions ==
|
59 |
+
|
60 |
+
> <strong>Bug Reports</strong><br>
|
61 |
+
> Feel free to reach us by email for any problem you have with our plugins.
|
62 |
+
> Describe the steps to reproduce the bug and we will be happy to help!<br>
|
63 |
+
> To report a bug use the form at http://intellywp.com/report-a-bug/
|
64 |
+
|
65 |
+
= Do you have a video that show me the plugin working? =
|
66 |
+
|
67 |
+
Sure! Click on the link [http://intellywp.com/tracking-code-manager/](http://intellywp.com/tracking-code-manager/?utm_source=wordpress-org&utm_medium=plugin-page&utm_campaign=TCM) for a full explanation. This is our official webpage, you will see the plugin in action, with the possibility to buy PREMIUM version and have full support.
|
68 |
+
|
69 |
+
= Will this plugin slow my website? =
|
70 |
+
|
71 |
+
Absolutely not! Since this plugin is built with lightweight code, you won’t notice any difference in speed.
|
72 |
+
|
73 |
+
= Can I put a tracking code or a script in ONE (maybe TWO?) specific page? =
|
74 |
+
|
75 |
+
Of course you can! You can choose to put the code in a single page, in some posts, or in the whole website (more features in PREMIUM version).
|
76 |
+
|
77 |
+
= Can I track conversions? =
|
78 |
+
|
79 |
+
Yeap! This is one of the main reason to use this plugin! You can track your conversions by putting the conversion pixel or code ONLY inside the thank you page.
|
80 |
+
|
81 |
+
= Can I manage Facebook Retargeting and Custom Audiences? =
|
82 |
+
|
83 |
+
Yes! For example you can put Facebook Pixel inside a certain posts of your blog to retarget those users who have already visited that posts on Facebook.
|
84 |
+
|
85 |
+
= Will this plugin interferes with my Google Analytics plugin? =
|
86 |
+
|
87 |
+
Nope! We tested the most famous Google Analytics plugins and it will not brake any of them.
|
88 |
+
|
89 |
+
= Can I use unlimited tracking codes and conversion pixels? =
|
90 |
+
|
91 |
+
You have 6 slots to use. Which means six different locations with unlimited tracking codes (enough for 99% of users).
|
92 |
+
|
93 |
+
= How to verify that a tracking code is properly working? =
|
94 |
+
|
95 |
+
Have a look at the source code of your page (search for: Tracking Code Manager) or you can install Google Chrome Addons. We suggest <a href="https://chrome.google.com/webstore/detail/fb-pixel-helper/fdgfkebogiimcoedlicjlajpkdmockpc">FB Pixel Helper</a> for Facebook codes and <a href="https://chrome.google.com/webstore/detail/tag-assistant-by-google/kejbdjndbnbjgmefkgdddjlbokphdefk">Tag Assistant (by Google)</a> for Google codes.
|
96 |
+
|
97 |
+
== Screenshots ==
|
98 |
+
|
99 |
+
1. New tracking code scripts
|
100 |
+
2. Include tracking code in specific page
|
101 |
+
3. Choose easly by typing the page title
|
102 |
+
4. Include also [All] posts or pages without selecting all one-by-one
|
103 |
+
5. List your tracking codes defined
|
104 |
+
6. Tracking code manager is also as a metabox in your posts/pages (you can remove by settings)
|
105 |
+
|
106 |
+
== Changelog ==
|
107 |
+
|
108 |
+
= 2.0.2 =
|
109 |
+
*Release Date - 2021-06-17*
|
110 |
+
|
111 |
+
* IWP-225 Fix PHP 8 Warning
|
112 |
+
|
113 |
+
= 2.0.1 =
|
114 |
+
*Release Date - 2021-03-10*
|
115 |
+
|
116 |
+
* Links Update
|
117 |
+
* Tested with WP 5.7 Plugin updated and supported.
|
118 |
+
|
119 |
+
= 2.0.0 =
|
120 |
+
*Release Date - 2021-01-19*
|
121 |
+
|
122 |
+
* Tested with WP 5.6 Plugin updated and supported.
|
123 |
+
|
124 |
+
=1.8.2 =
|
125 |
+
*Release Date - 10/17/2020*
|
126 |
+
|
127 |
+
* Branding Update Only
|
128 |
+
|
129 |
+
= 1.8.1 =
|
130 |
+
*Release Date - 13/09/2015*
|
131 |
+
|
132 |
+
* [Bugfixes] Fix bugs with "metabox" integration
|
133 |
+
|
134 |
+
= 1.8.0 =
|
135 |
+
*Release Date - 27/08/2015*
|
136 |
+
|
137 |
+
* [Improvements] Not the TCM menu is accessible only at user with "manager_options" permission
|
138 |
+
* [Bugfixes] Minor bugfixes
|
139 |
+
|
140 |
+
= 1.7.2 =
|
141 |
+
*Release Date - 23/08/2015*
|
142 |
+
|
143 |
+
* [Improvement] Various fixes
|
144 |
+
|
145 |
+
= 1.7.1 =
|
146 |
+
*Release Date - 16/08/2015*
|
147 |
+
|
148 |
+
* [Bugfix] Corrected warning in EDD conversion
|
149 |
+
* [Improvement] Improvement in License authentication
|
150 |
+
|
151 |
+
= 1.6.8 =
|
152 |
+
*Release Date - 12/06/2015*
|
153 |
+
|
154 |
+
* [Bugfix] Corrected errors in categories filter
|
155 |
+
|
156 |
+
= 1.6.6 =
|
157 |
+
*Release Date - 03/06/2015*
|
158 |
+
|
159 |
+
* [Bugfix, thanks Jose] Wrong inclusion on EDD_SL_Plugin_Updater class
|
160 |
+
|
161 |
+
= 1.6.5 =
|
162 |
+
*Release Date - 30/05/2015*
|
163 |
+
|
164 |
+
* Added Conversion Tracking for WooCommerce, Easy Digital Download and WP eCommerce
|
165 |
+
* Added Whats new page
|
166 |
+
* Added videos for a better explanation
|
167 |
+
* Minor bugfixes
|
168 |
+
|
169 |
+
= 1.5.5 =
|
170 |
+
*Release Date - 18/05/2015*
|
171 |
+
|
172 |
+
* Some translations corrected
|
173 |
+
* Added Tab "FAQ" with some FAQ
|
174 |
+
* Removed Feedback from Manager Tab, now only in About Tab
|
175 |
+
* Minor bugfixes
|
176 |
+
|
177 |
+
= 1.5.4 =
|
178 |
+
*Release Date - 09/05/2015*
|
179 |
+
|
180 |
+
* [Bugfix, thanks Bradon] Tracking code with "+" (plus) symbol will be changed without this symbol so they don't works properly
|
181 |
+
* [Bugfix, thanks JS,Dale] Now we are compatible with wpMandrill and all other plugins that needs to redefine the wp_mail function
|
182 |
+
* Minor bugfixes
|
183 |
+
|
184 |
+
= 1.5.3 =
|
185 |
+
*Release Date - 25/04/2015*
|
186 |
+
|
187 |
+
* [Bugfix, thanks AlfonsBerger] Undefined index: post_type in metabox.php on line 92
|
188 |
+
* [Bugfix, thanks Stefan,Eldi] {PREMIUM} Corrected a bug that can cause script missing into HTML using some configuration
|
189 |
+
* Minor bugfixes
|
190 |
+
|
191 |
+
= 1.5.2 =
|
192 |
+
*Release Date - 24/04/2015*
|
193 |
+
|
194 |
+
* FULLY COMPATIBLE WITH WORDPRESS 4.2
|
195 |
+
* [Bugfix, thanks boz71] compatible with multisite installation (Network Activation)
|
196 |
+
* [Bugfix, thanks AlfonsBerger] Fixed Trying to get property of non-object in ..core.php on line 8
|
197 |
+
* [Bugfix, thanks AlfonsBerger] Undefined index: includePostsOfType_product_Active in ..Manager.php on line 155
|
198 |
+
|
199 |
+
= 1.5.1 =
|
200 |
+
*Release Date - 19/04/2015*
|
201 |
+
|
202 |
+
* FULLY COMPATIBLE WITH WORDPRESS 4.2 RC1 :)
|
203 |
+
* [Bugfix] in metabox widget
|
204 |
+
* [Bugfix] in redirect function causing temporary "header already sent" error
|
205 |
+
* [Bugfix] rate us now load from https:// its star image
|
206 |
+
* Some translations corrected
|
207 |
+
* Minor bugfixes
|
208 |
+
|
209 |
+
= 1.5 =
|
210 |
+
*Release Date - 13/04/2015*
|
211 |
+
|
212 |
+
* Insert a non-intrusive rate-us button (top-right of the screen)
|
213 |
+
* Bugfix in metabox widget
|
214 |
+
* Some translations corrected
|
215 |
+
* Minor bugfixes
|
216 |
+
|
217 |
+
= 1.4 =
|
218 |
+
*Release Date - 06/04/2015*
|
219 |
+
|
220 |
+
* Created the FREE version following Wordpress specs. Branching the PRO version available to buy using website http://www.intellywp.com/tracking-code-manager
|
221 |
+
|
222 |
+
= 1.3 =
|
223 |
+
*Release Date - 02/04/2015*
|
224 |
+
|
225 |
+
* Fixed a bug that caused the hidden of "Save" button when the license if FREE
|
226 |
+
|
227 |
+
= 1.2 =
|
228 |
+
* Introduced new "Except" feature
|
229 |
+
|
230 |
+
= 1.1 =
|
231 |
+
* Introduced new "Custom Post type" feature
|
232 |
+
|
233 |
+
= 1.0 =
|
234 |
+
* First release
|