WordPress Landing Pages - Version 1.4.6

Version Description

  • New Feature: Bulk Lead management with leads plugin wordpress.org/plugins/leads/
  • Added tags to lead profiles for improved management/categorization
  • Added new compatibility options to fix third party plugin conflicts!
  • Added new debugging javascript debugging tools for users
  • Fixed Email Sending Error on forms
  • Improved support for master license keys
Download this release

Release Info

Developer DavidWells
Plugin Icon 128x128 WordPress Landing Pages
Version 1.4.6
Comparing to
See all releases

Code changes from version 1.4.5 to 1.4.6

Files changed (142) hide show
  1. css/admin-lp-cpt-only-style.css +31 -1
  2. css/new-customizer-admin.css +6 -0
  3. images/localhost.png +0 -0
  4. js/admin/admin.post-edit.js +92 -92
  5. js/admin/admin.post-new.js +3 -3
  6. js/libraries/isotope/css/style.css +0 -752
  7. js/libraries/isotope/jquery.isotope.js +0 -1406
  8. js/libraries/isotope/jquery.isotope.min.js +0 -11
  9. js/libraries/isotope/js/fake-element.js +0 -38
  10. js/libraries/isotope/js/jquery-1.7.1.min.js +0 -4
  11. js/libraries/isotope/js/jquery.ba-bbq.min.js +0 -18
  12. js/libraries/isotope/js/jquery.infinitescroll.min.js +0 -47
  13. js/libraries/isotope/js/make-big-graph-projects.js +0 -43
  14. js/libraries/jquery-datepicker/picker_functions.js +26 -14
  15. landing-pages.php +23 -8
  16. libraries/library.shareme.php +1 -1
  17. modules/module.activate.php +1 -1
  18. modules/module.clone.php +1 -1
  19. modules/module.extension-licensing.php +5 -3
  20. modules/module.extension-updater.php +6 -7
  21. modules/module.global-settings.php +85 -44
  22. modules/module.javascript-admin.php +1 -3
  23. modules/module.landing-page.php +6 -2
  24. modules/module.load-extensions.php +1 -1
  25. modules/module.post-type.php +529 -1
  26. modules/module.track.php +1 -1
  27. modules/module.utils.php +16 -4
  28. readme.txt +10 -2
  29. shared/classes/chart.class.php +291 -0
  30. shared/classes/compatibility.class.php +134 -0
  31. shared/classes/debug.class.php +379 -0
  32. shared/classes/feedback.class.php +1 -1
  33. shared/classes/form.class.php +2 -2
  34. shared/classes/js/debug.js +37 -0
  35. shared/classes/js/inbound-dequeue-scripts.js +49 -0
  36. shared/classes/menu.class.php +61 -4
  37. shared/docs/shortcodes.md +3 -0
  38. shared/inbound-shortcodes/css/frontend-render.css +22 -14
  39. shared/inbound-shortcodes/images/facebook@2x.png +0 -0
  40. shared/inbound-shortcodes/images/google@2x.png +0 -0
  41. shared/inbound-shortcodes/images/linkedin@2x.png +0 -0
  42. shared/inbound-shortcodes/images/pinterest@2x.png +0 -0
  43. shared/inbound-shortcodes/images/twitter@2x.png +0 -0
  44. shared/inbound-shortcodes/inbound-shortcodes.php +109 -115
  45. shared/inbound-shortcodes/js/shortcodes.js +3 -2
  46. shared/inbound-shortcodes/popup.php +1 -1
  47. shared/inbound-shortcodes/shortcodes-fields.php +23 -22
  48. shared/inbound-shortcodes/shortcodes-includes.php +10 -23
  49. shared/inbound-shortcodes/shortcodes/forms.php +2 -1
  50. shared/inbound-shortcodes/shortcodes/quick-forms.php +1 -1
  51. shared/inboundnow/inboundnow.extend.php +348 -0
  52. shared/inboundnow/inboundnow.extension-licensing.php +145 -132
  53. shared/inboundnow/inboundnow.extension-updating.php +26 -13
  54. shared/inboundnow/inboundnow.global-settings.php +32 -0
  55. shared/languages/landing-pages.po +2437 -0
  56. shared/languages/landing-pages/_get-translations.bat +12 -0
  57. shared/languages/landing-pages/ach.mo +0 -0
  58. shared/languages/landing-pages/af.mo +0 -0
  59. shared/languages/landing-pages/ar.mo +0 -0
  60. shared/languages/landing-pages/az.mo +0 -0
  61. shared/languages/landing-pages/be_BY.mo +0 -0
  62. shared/languages/landing-pages/bg_BG.mo +0 -0
  63. shared/languages/landing-pages/bn_BD.mo +0 -0
  64. shared/languages/landing-pages/br.mo +0 -0
  65. shared/languages/landing-pages/bs_BA.mo +0 -0
  66. shared/languages/landing-pages/ca.mo +0 -0
  67. shared/languages/landing-pages/co.mo +0 -0
  68. shared/languages/landing-pages/cs_CZ.mo +0 -0
  69. shared/languages/landing-pages/cy.mo +0 -0
  70. shared/languages/landing-pages/da_DK.mo +0 -0
  71. shared/languages/landing-pages/de_DE.mo +0 -0
  72. shared/languages/landing-pages/el.mo +0 -0
  73. shared/languages/landing-pages/en_GB.mo +0 -0
  74. shared/languages/landing-pages/eo.mo +0 -0
  75. shared/languages/landing-pages/es_CL.mo +0 -0
  76. shared/languages/landing-pages/es_ES.mo +0 -0
  77. shared/languages/landing-pages/es_MX.mo +0 -0
  78. shared/languages/landing-pages/es_PE.mo +0 -0
  79. shared/languages/landing-pages/es_VE.mo +0 -0
  80. shared/languages/landing-pages/et.mo +0 -0
  81. shared/languages/landing-pages/eu.mo +0 -0
  82. shared/languages/landing-pages/fa.mo +0 -0
  83. shared/languages/landing-pages/fa_IR.mo +0 -0
  84. shared/languages/landing-pages/fi.mo +0 -0
  85. shared/languages/landing-pages/fo.mo +0 -0
  86. shared/languages/landing-pages/fr_FR.mo +0 -0
  87. shared/languages/landing-pages/gl_ES.mo +0 -0
  88. shared/languages/landing-pages/gu_IN.mo +0 -0
  89. shared/languages/landing-pages/he_IL.mo +0 -0
  90. shared/languages/landing-pages/hi_IN.mo +0 -0
  91. shared/languages/landing-pages/hr.mo +0 -0
  92. shared/languages/landing-pages/hu_HU.mo +0 -0
  93. shared/languages/landing-pages/id_ID.mo +0 -0
  94. shared/languages/landing-pages/is_IS.mo +0 -0
  95. shared/languages/landing-pages/it_IT.mo +0 -0
  96. shared/languages/landing-pages/ja.mo +0 -0
  97. shared/languages/landing-pages/jv.mo +0 -0
  98. shared/languages/landing-pages/ka.mo +0 -0
  99. shared/languages/landing-pages/ko_KR.mo +0 -0
  100. shared/languages/landing-pages/ku.mo +0 -0
  101. shared/languages/landing-pages/ky.mo +0 -0
  102. shared/languages/landing-pages/landing-pages.po +1 -1
  103. shared/languages/landing-pages/lv.mo +0 -0
  104. shared/languages/landing-pages/lv_LV.mo +0 -0
  105. shared/languages/landing-pages/mg.mo +0 -0
  106. shared/languages/landing-pages/mk_MK.mo +0 -0
  107. shared/languages/landing-pages/mn.mo +0 -0
  108. shared/languages/landing-pages/my_MM.mo +0 -0
  109. shared/languages/landing-pages/nb_NO.mo +0 -0
  110. shared/languages/landing-pages/ne_NP.mo +0 -0
  111. shared/languages/landing-pages/nl_NL.mo +0 -0
  112. shared/languages/landing-pages/nn_NO.mo +0 -0
  113. shared/languages/landing-pages/oc.mo +0 -0
  114. shared/languages/landing-pages/pap.mo +0 -0
  115. shared/languages/landing-pages/pl_PL.mo +0 -0
  116. shared/languages/landing-pages/pt_BR.mo +0 -0
  117. shared/languages/landing-pages/pt_PT.mo +0 -0
  118. shared/languages/landing-pages/ro_RO.mo +0 -0
  119. shared/languages/landing-pages/ru_RU.mo +0 -0
  120. shared/languages/landing-pages/sah.mo +0 -0
  121. shared/languages/landing-pages/sk_SK.mo +0 -0
  122. shared/languages/landing-pages/sq.mo +0 -0
  123. shared/languages/landing-pages/sr_RS.mo +0 -0
  124. shared/languages/landing-pages/su.mo +0 -0
  125. shared/languages/landing-pages/sv_SE.mo +0 -0
  126. shared/languages/landing-pages/sw.mo +0 -0
  127. shared/languages/landing-pages/te.mo +0 -0
  128. shared/languages/landing-pages/th.mo +0 -0
  129. shared/languages/landing-pages/tk_TM.mo +0 -0
  130. shared/languages/landing-pages/tr_TR.mo +0 -0
  131. shared/languages/landing-pages/ug.mo +0 -0
  132. shared/languages/landing-pages/uk.mo +0 -0
  133. shared/languages/landing-pages/uz.mo +0 -0
  134. shared/languages/landing-pages/vi.mo +0 -0
  135. shared/languages/landing-pages/zh_CN.mo +0 -0
  136. shared/languages/landing-pages/zh_TW.mo +0 -0
  137. shared/metaboxes/inbound-metaboxes.css +5 -22
  138. shared/metaboxes/template.metaboxes.php +181 -0
  139. shared/tracking/js/inprogress.store.lead.ajax.js +2 -1
  140. shared/tracking/js/store.lead.ajax.js +13 -5
  141. shared/tracking/store.lead.php +235 -215
  142. templates/rsvp-envelope/index.php +1 -1
css/admin-lp-cpt-only-style.css CHANGED
@@ -35,11 +35,12 @@ padding: 5px;
35
  padding-top: 0px;
36
  margin-right: 5px;
37
  text-align: center;
 
38
  }
39
  .lp-template-selector-container ul#template-filter {
40
  line-height: 30px;
41
  margin-top: 10px;
42
- margin-bottom: 15px;
43
  }
44
  .lp-template-selector-container ul#template-filter a {
45
  margin-right: 0px;
@@ -59,4 +60,33 @@ ul#template-filter .button-primary a {
59
  }
60
  #lp_2_form_content .hndle em {
61
  font-size: 13px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  }
35
  padding-top: 0px;
36
  margin-right: 5px;
37
  text-align: center;
38
+ margin-bottom: 10px;
39
  }
40
  .lp-template-selector-container ul#template-filter {
41
  line-height: 30px;
42
  margin-top: 10px;
43
+ margin-bottom: 0px;
44
  }
45
  .lp-template-selector-container ul#template-filter a {
46
  margin-right: 0px;
60
  }
61
  #lp_2_form_content .hndle em {
62
  font-size: 13px;
63
+ }
64
+ .template-thumbnail
65
+ {
66
+ width:100%;
67
+ height:190px;
68
+ -webkit-border-radius: 4px;
69
+ -khtml-border-radius: 4px;
70
+ -moz-border-radius: 4px;
71
+ border-radius: 4px;
72
+ background-color: #A9A9A9;
73
+ -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px,rgba(0, 0, 0, 0.3) 0 2px 5px;
74
+ -moz-box-shadow: rgba(0,0,0,0.2) 0 0 0 1px,rgba(0,0,0,0.3) 0 2px 5px;
75
+ box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px,rgba(0, 0, 0, 0.3) 0 2px 5px;
76
+ }
77
+
78
+ ul#template-filter{ margin: 0px 0; padding: 0; padding-left: 0px; line-height: 64px; }
79
+ ul#template-filter li{ display: inline; }
80
+ ul#template-filter a{ margin-right: 0.5em; padding: 0em 1em; font-weight: bold; text-decoration: none; }
81
+ ul#template-filter .button-primary a:hover { color:#fff;}
82
+ ul#template-filter a.current{ background-color: #DDD; }
83
+
84
+ #template-item{ float: left; margin-right: 18px; overflow: hidden; margin: 0px 0 0 0; padding: 0; list-style: none; width: 300px; margin-bottom: 10px; }
85
+ #template-item div{ display: block; }
86
+ /* #template-item div a{ display: block; width: 163px; height: 120px; overflow: hidden; border: 1px solid #CDCDCD; background: #eee; }*/
87
+ #template-item li p{ font-size: 11px; line-height: 15px; color: #AAA; margin: 5px 0; }
88
+ #template-box .lp_tooltip_templates{
89
+ bottom: 6px;
90
+ position: absolute;
91
+ right: 8px;
92
  }
css/new-customizer-admin.css CHANGED
@@ -196,6 +196,12 @@ margin-left: -10px !important;
196
  .mceIframeContainer.mceFirst.mceLast iframe {
197
  width: 100% !important;
198
  }
 
 
 
 
 
 
199
  #lp_metabox_select_template {
200
  margin-left: -20px !important;
201
  width: 108%;
196
  .mceIframeContainer.mceFirst.mceLast iframe {
197
  width: 100% !important;
198
  }
199
+ .mceIframeContainer.mceFirst.mceLast {
200
+ margin-top: 30px;
201
+ }
202
+ .mceToolbar.mceLeft.mceFirst.mceLast div {
203
+ background: #F5F5F5;
204
+ }
205
  #lp_metabox_select_template {
206
  margin-left: -20px !important;
207
  width: 108%;
images/localhost.png ADDED
Binary file
js/admin/admin.post-edit.js CHANGED
@@ -1,41 +1,41 @@
1
  jQuery(document).ready(function ($) {
2
 
3
- jQuery('#templates-container').isotope();
4
  // Isotope Styling
5
  jQuery('#template-filter li').first().addClass('button-primary');
6
- // filter items when filter link is clicked
7
- jQuery('#template-filter a').click(function(){
8
- var selector = jQuery(this).attr('data-filter');
9
- jQuery("ul#template-filter li").removeClass('button-primary');
10
  jQuery(this).parent().addClass('button-primary');
11
- jQuery('#templates-container').isotope({ filter: selector });
12
- return false;
13
- });
14
-
15
- /* Ajax loading tabs
16
- jQuery.koolSwap({
17
- swapBox : '#poststuff',
18
- outDuration : 550,
19
- inDuration : 600,
20
- });
21
- */
22
-
23
- jQuery("body").on('click', '#content-tmce, .wp-switch-editor.switch-tmce', function () {
24
- $.cookie("lp-edit-view-choice", "editor", { path: '/', expires: 7 });
25
- });
26
-
27
- jQuery("body").on('click', '#content-html, .wp-switch-editor.switch-html', function () {
28
- $.cookie("lp-edit-view-choice", "html", { path: '/', expires: 7 });
29
- });
30
-
31
- var which_editor = $.cookie("lp-edit-view-choice");
32
- if(which_editor === null){
33
- setTimeout(function() {
34
- //jQuery("#content-tmce").click();
35
- //jQuery(".wp-switch-editor.switch-tmce").click();
36
- }, 1000);
37
-
38
- }
39
  /*
40
 
41
  var chtml= jQuery('#content-html');
@@ -46,16 +46,16 @@ jQuery(document).ready(function ($) {
46
  switchEditors.switchto(ctmce[0]); // switch to tinymce
47
 
48
  */
49
- if(which_editor === 'editor'){
50
- setTimeout(function() {
51
 
52
  var ctmce= jQuery('#content-tmce');
53
  switchEditors.switchto(ctmce[0]); // switch to tinymce
54
 
55
  var conversion_area = jQuery("#landing-page-myeditor-tmce");
56
  switchEditors.switchto(conversion_area[0]); // switch to tinymce
57
- //jQuery("#content-tmce").click();
58
- //jQuery(".wp-switch-editor.switch-tmce").click();
59
  jQuery('.inbound-wysiwyg-option textarea').each(function(){
60
  var chtml= "#" + jQuery(this).attr('id') + '-html';
61
  var ctmce= "#" + jQuery(this).attr('id') + '-tmce';
@@ -63,8 +63,8 @@ jQuery(document).ready(function ($) {
63
  var tinymce_box = jQuery(ctmce);
64
  switchEditors.switchto(tinymce_box[0]); // switch to tinymce
65
  });
66
- }, 1000);
67
- }
68
 
69
  /* Tour Start JS */
70
  var tourbutton = '<a class="" id="lp-tour" style="font-size:13px;">Need help? Take the tour</a>';
@@ -90,10 +90,10 @@ jQuery(document).ready(function ($) {
90
  // Fix inactivate theme display
91
  jQuery("#template-box a").live('click', function () {
92
 
93
- setTimeout(function() {
94
- jQuery('#TB_window iframe').contents().find("#customize-controls").hide();
95
- jQuery('#TB_window iframe').contents().find(".wp-full-overlay.expanded").css("margin-left", "0px");
96
- }, 600);
97
 
98
  });
99
 
@@ -177,62 +177,62 @@ jQuery(document).ready(function ($) {
177
  jQuery('.lp_select_template').click(function(){
178
  var template = jQuery(this).attr('id');
179
  var label = jQuery(this).attr('label');
180
- var selected_template_id = "#" + template;
181
- var currentlabel = jQuery(".currently_selected").show();
182
- var current_template = jQuery("input#lp_select_template ").val();
183
  var current_template_meta = "#lp_" + current_template + "_custom_meta_box";
184
  var current_template_h3 = "#lp_" + current_template + "_custom_meta_box h3";
185
  var current_template_div = "#lp_" + current_template + "_custom_meta_box .handlediv";
186
  var open_variation = jQuery("#open_variation").val();
187
 
188
- if (open_variation>0)
189
- {
190
- var variation_tag = "-"+open_variation;
191
- }
192
- else
193
- {
194
- var variation_tag = "";
195
- }
196
 
197
- jQuery("#template-box.default_template_highlight").removeClass("default_template_highlight");
198
 
199
  jQuery(selected_template_id).parent().addClass("default_template_highlight").prepend(currentlabel);
200
 
201
- jQuery(".lp-template-selector-container").fadeOut(500,function(){
202
- jQuery('#lp_metabox_select_template input').remove();
203
- jQuery('#lp_metabox_select_template .form-table').remove();
204
-
205
- var ajax_data = {
206
- action: 'lp_get_template_meta',
207
- selected_template: template,
208
- post_id: lp_post_edit_ui.post_id,
209
- };
210
-
211
- jQuery.ajax({
212
- type: "POST",
213
- url: lp_post_edit_ui.ajaxurl,
214
- data: ajax_data,
215
- dataType: 'html',
216
- timeout: 7000,
217
- success: function (response) {
218
- //alert(response);
219
- var html = '<input id="lp_select_template" type="hidden" value="'+template+'" name="lp-selected-template'+variation_tag+'">'
220
- + '<input type="hidden" value="'+lp_post_edit_ui.lp_template_nonce+'" name="lp_lp_custom_fields_nonce">'
221
- + '<h3 class="hndle" style="cursor: default;">'
222
- + '<span>'
223
- + '<small>'+ template +' Options:</small>'
224
- + '</span>'
225
- + '</h3>'
226
- + response;
227
-
228
- jQuery('#lp_metabox_select_template #template-display-options').html(html);
229
- jQuery('.time-picker').timepicker({ 'timeFormat': 'H:i' });
230
-
231
- },
232
- error: function(request, status, err) {
233
- alert(status);
234
- }
235
- });
236
  jQuery(".wrap").fadeIn(500, function(){
237
  });
238
  });
@@ -324,7 +324,7 @@ jQuery(document).ready(function ($) {
324
 
325
  jQuery('#lp-change-template-button').live('click', function () {
326
  jQuery(".wrap").fadeOut(500,function(){
327
- jQuery('#templates-container').isotope();
328
  jQuery(".lp-template-selector-container").fadeIn(500, function(){
329
  jQuery(".currently_selected").show();
330
  jQuery('#lp-cancel-selection').show();
@@ -474,7 +474,7 @@ jQuery(document).ready(function ($) {
474
  */
475
 
476
 
477
- // SAVE META
478
  var nonce_val = lp_post_edit_ui.wp_landing_page_meta_nonce; // NEED CORRECT NONCE
479
  jQuery(document).on('mousedown', '.new-save-lp', function () {
480
  var type_input = jQuery(this).parent().find("input").attr("type");
1
  jQuery(document).ready(function ($) {
2
 
3
+
4
  // Isotope Styling
5
  jQuery('#template-filter li').first().addClass('button-primary');
6
+ // filter items when filter link is clicked
7
+ jQuery('#template-filter a').click(function(){
8
+ var selector = jQuery(this).attr('data-filter');
9
+ jQuery("ul#template-filter li").removeClass('button-primary');
10
  jQuery(this).parent().addClass('button-primary');
11
+
12
+ return false;
13
+ });
14
+
15
+ /* Ajax loading tabs
16
+ jQuery.koolSwap({
17
+ swapBox : '#poststuff',
18
+ outDuration : 550,
19
+ inDuration : 600,
20
+ });
21
+ */
22
+
23
+ jQuery("body").on('click', '#content-tmce, .wp-switch-editor.switch-tmce', function () {
24
+ $.cookie("lp-edit-view-choice", "editor", { path: '/', expires: 7 });
25
+ });
26
+
27
+ jQuery("body").on('click', '#content-html, .wp-switch-editor.switch-html', function () {
28
+ $.cookie("lp-edit-view-choice", "html", { path: '/', expires: 7 });
29
+ });
30
+
31
+ var which_editor = $.cookie("lp-edit-view-choice");
32
+ if(which_editor === null){
33
+ setTimeout(function() {
34
+ //jQuery("#content-tmce").click();
35
+ //jQuery(".wp-switch-editor.switch-tmce").click();
36
+ }, 1000);
37
+
38
+ }
39
  /*
40
 
41
  var chtml= jQuery('#content-html');
46
  switchEditors.switchto(ctmce[0]); // switch to tinymce
47
 
48
  */
49
+ if(which_editor === 'editor'){
50
+ setTimeout(function() {
51
 
52
  var ctmce= jQuery('#content-tmce');
53
  switchEditors.switchto(ctmce[0]); // switch to tinymce
54
 
55
  var conversion_area = jQuery("#landing-page-myeditor-tmce");
56
  switchEditors.switchto(conversion_area[0]); // switch to tinymce
57
+ //jQuery("#content-tmce").click();
58
+ //jQuery(".wp-switch-editor.switch-tmce").click();
59
  jQuery('.inbound-wysiwyg-option textarea').each(function(){
60
  var chtml= "#" + jQuery(this).attr('id') + '-html';
61
  var ctmce= "#" + jQuery(this).attr('id') + '-tmce';
63
  var tinymce_box = jQuery(ctmce);
64
  switchEditors.switchto(tinymce_box[0]); // switch to tinymce
65
  });
66
+ }, 1000);
67
+ }
68
 
69
  /* Tour Start JS */
70
  var tourbutton = '<a class="" id="lp-tour" style="font-size:13px;">Need help? Take the tour</a>';
90
  // Fix inactivate theme display
91
  jQuery("#template-box a").live('click', function () {
92
 
93
+ setTimeout(function() {
94
+ jQuery('#TB_window iframe').contents().find("#customize-controls").hide();
95
+ jQuery('#TB_window iframe').contents().find(".wp-full-overlay.expanded").css("margin-left", "0px");
96
+ }, 600);
97
 
98
  });
99
 
177
  jQuery('.lp_select_template').click(function(){
178
  var template = jQuery(this).attr('id');
179
  var label = jQuery(this).attr('label');
180
+ var selected_template_id = "#" + template;
181
+ var currentlabel = jQuery(".currently_selected").show();
182
+ var current_template = jQuery("input#lp_select_template ").val();
183
  var current_template_meta = "#lp_" + current_template + "_custom_meta_box";
184
  var current_template_h3 = "#lp_" + current_template + "_custom_meta_box h3";
185
  var current_template_div = "#lp_" + current_template + "_custom_meta_box .handlediv";
186
  var open_variation = jQuery("#open_variation").val();
187
 
188
+ if (open_variation>0)
189
+ {
190
+ var variation_tag = "-"+open_variation;
191
+ }
192
+ else
193
+ {
194
+ var variation_tag = "";
195
+ }
196
 
197
+ jQuery("#template-box.default_template_highlight").removeClass("default_template_highlight");
198
 
199
  jQuery(selected_template_id).parent().addClass("default_template_highlight").prepend(currentlabel);
200
 
201
+ jQuery(".lp-template-selector-container").fadeOut(500,function(){
202
+ jQuery('#lp_metabox_select_template input').remove();
203
+ jQuery('#lp_metabox_select_template .form-table').remove();
204
+
205
+ var ajax_data = {
206
+ action: 'lp_get_template_meta',
207
+ selected_template: template,
208
+ post_id: lp_post_edit_ui.post_id,
209
+ };
210
+
211
+ jQuery.ajax({
212
+ type: "POST",
213
+ url: lp_post_edit_ui.ajaxurl,
214
+ data: ajax_data,
215
+ dataType: 'html',
216
+ timeout: 7000,
217
+ success: function (response) {
218
+ //alert(response);
219
+ var html = '<input id="lp_select_template" type="hidden" value="'+template+'" name="lp-selected-template'+variation_tag+'">'
220
+ + '<input type="hidden" value="'+lp_post_edit_ui.lp_template_nonce+'" name="lp_lp_custom_fields_nonce">'
221
+ + '<h3 class="hndle" style="cursor: default;">'
222
+ + '<span>'
223
+ + '<small>'+ template +' Options:</small>'
224
+ + '</span>'
225
+ + '</h3>'
226
+ + response;
227
+
228
+ jQuery('#lp_metabox_select_template #template-display-options').html(html);
229
+ jQuery('.time-picker').timepicker({ 'timeFormat': 'H:i' });
230
+
231
+ },
232
+ error: function(request, status, err) {
233
+ alert(status);
234
+ }
235
+ });
236
  jQuery(".wrap").fadeIn(500, function(){
237
  });
238
  });
324
 
325
  jQuery('#lp-change-template-button').live('click', function () {
326
  jQuery(".wrap").fadeOut(500,function(){
327
+
328
  jQuery(".lp-template-selector-container").fadeIn(500, function(){
329
  jQuery(".currently_selected").show();
330
  jQuery('#lp-cancel-selection').show();
474
  */
475
 
476
 
477
+ // SAVE META
478
  var nonce_val = lp_post_edit_ui.wp_landing_page_meta_nonce; // NEED CORRECT NONCE
479
  jQuery(document).on('mousedown', '.new-save-lp', function () {
480
  var type_input = jQuery(this).parent().find("input").attr("type");
js/admin/admin.post-new.js CHANGED
@@ -8,7 +8,7 @@ jQuery(document).ready(function ($) {
8
  });
9
 
10
  jQuery("#submitdiv").siblings().hide();
11
- jQuery('#templates-container').isotope();
12
  jQuery("#title-prompt-text").text("Name Your New Landing Page");
13
 
14
  var titledescription = jQuery("<span id='descriptor'>This will be the administrative title your landing page, the main headline is created in the next step</span>");
@@ -52,7 +52,7 @@ jQuery(document).ready(function ($) {
52
 
53
  jQuery('#lp-change-template-button').live('click', function () {
54
  jQuery(".wrap").fadeOut(500,function(){
55
- jQuery('#templates-container').isotope();
56
  jQuery(".lp-template-selector-container").fadeIn(500, function(){
57
  jQuery('#lp-cancel-selection').show();
58
  });
@@ -65,7 +65,7 @@ jQuery(document).ready(function ($) {
65
  var selector = jQuery(this).attr('data-filter');
66
  jQuery("ul#template-filter li").removeClass('button-primary');
67
  jQuery(this).parent().addClass('button-primary');
68
- jQuery('#templates-container').isotope({ filter: selector });
69
  return false;
70
  });
71
 
8
  });
9
 
10
  jQuery("#submitdiv").siblings().hide();
11
+
12
  jQuery("#title-prompt-text").text("Name Your New Landing Page");
13
 
14
  var titledescription = jQuery("<span id='descriptor'>This will be the administrative title your landing page, the main headline is created in the next step</span>");
52
 
53
  jQuery('#lp-change-template-button').live('click', function () {
54
  jQuery(".wrap").fadeOut(500,function(){
55
+
56
  jQuery(".lp-template-selector-container").fadeIn(500, function(){
57
  jQuery('#lp-cancel-selection').show();
58
  });
65
  var selector = jQuery(this).attr('data-filter');
66
  jQuery("ul#template-filter li").removeClass('button-primary');
67
  jQuery(this).parent().addClass('button-primary');
68
+
69
  return false;
70
  });
71
 
js/libraries/isotope/css/style.css DELETED
@@ -1,752 +0,0 @@
1
-
2
- /**** Isotope Filtering ****/
3
-
4
- .isotope-item {
5
- z-index: 2;
6
- }
7
-
8
- .isotope-hidden.isotope-item {
9
- pointer-events: none;
10
- z-index: 1;
11
- }
12
-
13
- /**** Isotope CSS3 transitions ****/
14
-
15
- .isotope,
16
- .isotope .isotope-item {
17
- -webkit-transition-duration: 0.8s;
18
- -moz-transition-duration: 0.8s;
19
- -ms-transition-duration: 0.8s;
20
- -o-transition-duration: 0.8s;
21
- transition-duration: 0.8s;
22
- }
23
-
24
- .isotope {
25
- -webkit-transition-property: height, width;
26
- -moz-transition-property: height, width;
27
- -ms-transition-property: height, width;
28
- -o-transition-property: height, width;
29
- transition-property: height, width;
30
- }
31
-
32
- .isotope .isotope-item {
33
- -webkit-transition-property: -webkit-transform, opacity;
34
- -moz-transition-property: -moz-transform, opacity;
35
- -ms-transition-property: -ms-transform, opacity;
36
- -o-transition-property: -o-transform, opacity;
37
- transition-property: transform, opacity;
38
- }
39
-
40
- /**** disabling Isotope CSS3 transitions ****/
41
-
42
- .isotope.no-transition,
43
- .isotope.no-transition .isotope-item,
44
- .isotope .isotope-item.no-transition {
45
- -webkit-transition-duration: 0s;
46
- -moz-transition-duration: 0s;
47
- -ms-transition-duration: 0s;
48
- -o-transition-duration: 0s;
49
- transition-duration: 0s;
50
- }
51
-
52
- /* End: Recommended Isotope styles */
53
-
54
-
55
-
56
- /* disable CSS transitions for containers with infinite scrolling*/
57
- .isotope.infinite-scrolling {
58
- -webkit-transition: none;
59
- -moz-transition: none;
60
- -ms-transition: none;
61
- -o-transition: none;
62
- transition: none;
63
- }
64
-
65
-
66
- /**** Base styles ****/
67
-
68
-
69
-
70
- #container {
71
- border: 1px solid #666;
72
- padding: 5px;
73
- margin-bottom: 20px;
74
- }
75
-
76
- .element {
77
- width: 110px;
78
- height: 110px;
79
- margin: 5px;
80
- float: left;
81
- overflow: hidden;
82
- position: relative;
83
- background: #888;
84
- color: #222;
85
- -webkit-border-top-right-radius: 1.2em;
86
- -moz-border-radius-topright: 1.2em;
87
- border-top-right-radius: 1.2em;
88
- }
89
-
90
- .element.alkali { background: #F00; background: hsl( 0, 100%, 50%); }
91
- .element.alkaline-earth { background: #F80; background: hsl( 36, 100%, 50%); }
92
- .element.lanthanoid { background: #FF0; background: hsl( 72, 100%, 50%); }
93
- .element.actinoid { background: #0F0; background: hsl( 108, 100%, 50%); }
94
- .element.transition { background: #0F8; background: hsl( 144, 100%, 50%); }
95
- .element.post-transition { background: #0FF; background: hsl( 180, 100%, 50%); }
96
- .element.metalloid { background: #08F; background: hsl( 216, 100%, 50%); }
97
- .element.other.nonmetal { background: #00F; background: hsl( 252, 100%, 50%); }
98
- .element.halogen { background: #F0F; background: hsl( 288, 100%, 50%); }
99
- .element.noble-gas { background: #F08; background: hsl( 324, 100%, 50%); }
100
-
101
-
102
- .element * {
103
- position: absolute;
104
- margin: 0;
105
- }
106
-
107
- .element .symbol {
108
- left: 0.2em;
109
- top: 0.4em;
110
- font-size: 3.8em;
111
- line-height: 1.0em;
112
- color: #FFF;
113
- }
114
- .element.large .symbol {
115
- font-size: 4.5em;
116
- }
117
-
118
- .element.fake .symbol {
119
- color: #000;
120
- }
121
-
122
- .element .name {
123
- left: 0.5em;
124
- bottom: 1.6em;
125
- font-size: 1.05em;
126
- }
127
-
128
- .element .weight {
129
- font-size: 0.9em;
130
- left: 0.5em;
131
- bottom: 0.5em;
132
- }
133
-
134
- .element .number {
135
- font-size: 1.25em;
136
- font-weight: bold;
137
- color: hsla(0,0%,0%,.5);
138
- right: 0.5em;
139
- top: 0.5em;
140
- }
141
-
142
- .variable-sizes .element.width2 { width: 230px; }
143
-
144
- .variable-sizes .element.height2 { height: 230px; }
145
-
146
- .variable-sizes .element.width2.height2 {
147
- font-size: 2.0em;
148
- }
149
-
150
- .element.large,
151
- .variable-sizes .element.large,
152
- .variable-sizes .element.large.width2.height2 {
153
- font-size: 3.0em;
154
- width: 350px;
155
- height: 350px;
156
- z-index: 100;
157
- }
158
-
159
- .clickable .element:hover {
160
- cursor: pointer;
161
- }
162
-
163
- .clickable .element:hover h3 {
164
- text-shadow:
165
- 0 0 10px white,
166
- 0 0 10px white
167
- ;
168
- }
169
-
170
- .clickable .element:hover h2 {
171
- color: white;
172
- }
173
-
174
- /**** Example Options ****/
175
-
176
- #options {
177
- padding-bottom: 1.0em;
178
- }
179
-
180
- #options h3 {
181
- margin-bottom: 0.2em;
182
- font-size: 15px;
183
- }
184
-
185
- #options h4 {
186
- font-weight: bold;
187
- }
188
-
189
- #options ul {
190
- margin: 0;
191
- list-style: none;
192
- }
193
-
194
- #options ul ul {
195
- margin-left: 1.5em;
196
- }
197
-
198
- #options li {
199
- float: left;
200
- margin-bottom: 0.2em;
201
- }
202
-
203
- #options li a {
204
- display: block;
205
- padding: 0.4em 0.5em;
206
- background-color: #DDD;
207
- color: #222;
208
- font-weight: bold;
209
- text-shadow: 0 1px hsla( 0, 0%, 100%, 0.5 );
210
- background-image: -webkit-linear-gradient( top, hsla( 0, 0%, 100%, 0.5 ), hsla( 0, 0%, 100%, 0.0 ) );
211
- background-image: -moz-linear-gradient( top, hsla( 0, 0%, 100%, 0.5 ), hsla( 0, 0%, 100%, 0.0 ) );
212
- background-image: -ms-linear-gradient( top, hsla( 0, 0%, 100%, 0.5 ), hsla( 0, 0%, 100%, 0.0 ) );
213
- background-image: -o-linear-gradient( top, hsla( 0, 0%, 100%, 0.5 ), hsla( 0, 0%, 100%, 0.0 ) );
214
- background-image: linear-gradient( top, hsla( 0, 0%, 100%, 0.5 ), hsla( 0, 0%, 100%, 0.0 ) );
215
- }
216
-
217
- #options li a:hover {
218
- background-color: #5BF;
219
- }
220
-
221
- #options li a:active {
222
- background-color: #39D;
223
- -webkit-box-shadow: inset 0 2px 8px hsla( 0, 0%, 0%, 0.6 );
224
- -moz-box-shadow: inset 0 2px 8px hsla( 0, 0%, 0%, 0.6 );
225
- -o-box-shadow: inset 0 2px 8px hsla( 0, 0%, 0%, 0.6 );
226
- box-shadow: inset 0 2px 8px hsla( 0, 0%, 0%, 0.6 );
227
- }
228
-
229
- #options li a {
230
- border-left: 1px solid hsla( 0, 0%, 100%, 0.3 );
231
- border-right: 1px solid hsla( 0, 0%, 0%, 0.2 );
232
- }
233
-
234
- #options li:first-child a {
235
- border-radius: 7px 0 0 7px;
236
- border-left: none;
237
- }
238
-
239
- #options li:last-child a {
240
- border-radius: 0 7px 7px 0;
241
- }
242
-
243
- #options li a.selected {
244
- background-color: #13F;
245
- text-shadow: none;
246
- color: white;
247
- }
248
-
249
- /* Combination filter options*/
250
-
251
- #options .option-combo {
252
- display: inline-block;
253
- float: left;
254
- margin-right: 10px;
255
- }
256
-
257
- #options .option-combo ul {
258
- margin-right: 20px;
259
- display: inline-block;
260
- }
261
-
262
- #options .option-combo h2,
263
- #options .option-combo h4 {
264
- line-height: 34px;
265
- margin-bottom: 0;
266
- margin-right: 5px;
267
- display: inline-block;
268
- vertical-align: top;
269
- }
270
-
271
- /* Color shapes */
272
-
273
- .color-shape {
274
- width: 70px;
275
- height: 70px;
276
- margin: 5px;
277
- float: left;
278
- }
279
-
280
- .color-shape.round {
281
- -webkit-border-radius: 35px;
282
- -moz-border-radius: 35px;
283
- border-radius: 35px;
284
- }
285
-
286
- .color-shape.big.round {
287
- -webkit-border-radius: 75px;
288
- -moz-border-radius: 75px;
289
- border-radius: 75px;
290
- }
291
-
292
- .color-shape.red { background: red; }
293
- .color-shape.blue { background: blue; }
294
- .color-shape.yellow { background: yellow; }
295
-
296
- .color-shape.wide, .color-shape.big { width: 150px; }
297
- .color-shape.tall, .color-shape.big { height: 150px; }
298
-
299
- .color-shape a {
300
- display: block;
301
- height: 100%;
302
- }
303
-
304
- .color-shape a:hover {
305
- background: white;
306
- background: hsla( 0, 0%, 100%, 0.5 );
307
- }
308
-
309
- /**** Horizontal ****/
310
-
311
- .horizontal #container {
312
- height: 80%;
313
- }
314
-
315
- #copy {
316
- max-width: 640px;
317
- }
318
-
319
- /**** Photo demo ****/
320
-
321
- .photos .photo {
322
- width: 320px;
323
- margin: 5px;
324
- float: left;
325
- }
326
-
327
- .photos .photo img {
328
- display: block;
329
- width: 100%;
330
- }
331
-
332
-
333
- .demos #content {
334
- height: 100%;
335
- }
336
-
337
- /**** Docs ****/
338
-
339
- .docs #content {
340
- max-width: 640px;
341
- }
342
-
343
- .docs #content a:hover {
344
- border-bottom: 1px dotted;
345
- }
346
-
347
- /**** Doc page nav ****/
348
-
349
-
350
-
351
- #site-nav {
352
- width: 200px;
353
- position: absolute;
354
- left: 10px;
355
- top: 0px;
356
- padding-top: 20px;
357
- font-size: 12px;
358
- }
359
-
360
- #site-nav h1 {
361
- font-size: 24px;
362
- margin-bottom: 0.5em;
363
- margin-top: 0;
364
- font-weight: bold;
365
- font-family: 'Helvetica Neue', Arial, sans-serif;
366
- }
367
-
368
- #site-nav h2 {
369
- font-size: 17px;
370
- font-weight: normal;
371
- margin: 0 0 0.3em;
372
- border-top: none;
373
- }
374
-
375
- #site-nav h1 a { color: #4FB; }
376
- #site-nav h1 a:hover { color: #4BF; }
377
-
378
- #site-nav ul {
379
- list-style: none;
380
- margin: 0 0 1.0em;
381
- font-weight: bold;
382
- }
383
-
384
- #site-nav ul ul { margin-bottom: 0; }
385
-
386
- #site-nav ul a {
387
- display: block;
388
- border: none;
389
- padding: 1px 5px;
390
- }
391
-
392
- #site-nav ul .current a {
393
- background: hsla( 0, 0%, 0%, 0.3 );
394
- color: #1BF;
395
- }
396
- #site-nav ul a:hover,
397
- #site-nav ul .current a:hover { color: white; }
398
-
399
- #site-nav ul .current .toc a {
400
- font-size: 12px;
401
- padding-left: 1.2em;
402
- font-weight: normal;
403
- }
404
-
405
-
406
-
407
-
408
- footer {
409
- font-size: 12px;
410
- font-style: italic;
411
- border-top: 1px solid #333;
412
- padding: 0.8em 0;
413
- }
414
-
415
- pre {
416
- padding: 10px;
417
- }
418
-
419
- pre, code {
420
- background: black;
421
- color: white;
422
- font-family: 'Monaco', monospace, sans-serif;
423
- }
424
-
425
- #content code {
426
- font-size: 12px;
427
- }
428
-
429
- #content pre {
430
- line-height: 1.6em;
431
- }
432
-
433
- h3#options {
434
- padding-bottom: 0;
435
- }
436
-
437
- .option-def dl dt,
438
- .option-def dl dd {
439
- float: left;
440
- padding: 0 1.2em;;
441
- background: #161616;
442
- line-height: 36px;
443
- height: 36px;
444
- }
445
-
446
- .option-def dl.header dt,
447
- .option-def dl.header dd {
448
- background: #444;
449
- }
450
-
451
- .option-def dl .option-type {
452
- font-size: 13px;
453
- color: #AAA;
454
- font-style: italic;
455
- }
456
-
457
- .option-def dl dd {
458
- border-left: 1px solid #222;
459
- }
460
-
461
- /* Tagline */
462
-
463
- .docs .tagline {
464
- font-size: 22px;
465
- font-weight: 300;
466
- }
467
-
468
- /* as-is from MIT */
469
-
470
- .docs .as-is {
471
- font-size: 95%;
472
- }
473
-
474
- /* Commercial license blurb */
475
-
476
- .docs #commercial {
477
- background: white;
478
- padding: 10px;
479
- font-size: 14px;
480
- color: #1F1F1D;
481
- }
482
-
483
- .docs #commercial a { font-weight: bold;}
484
-
485
- /**** Pygments ****/
486
-
487
- code .s1,
488
- code .s { color: #78BD55; } /* string */
489
- code .mi, /* integer */
490
- code .cp, /* doctype */
491
- code .kc { color: #5298D4; } /*boolean*/
492
- code .k { color: #E39B79; } /* keyword */
493
- code .kd, /* storage */
494
- code .na { color: #A9D866; } /* markup attribute */
495
- code .p { color: #EDB; } /* punctuation */
496
- code .o { color: #F63; } /* operator */
497
- code .nb { color: #AA97AC;} /* support */
498
-
499
- /* comment */
500
- code .c,
501
- code .c1 { color: #666; font-style: italic; }
502
-
503
- code .nt { color: #A0C8FC; } /* Markup open tag */
504
-
505
- code .nf { color: #9EA8B8; } /* css id */
506
- code .nc { color: #A78352; } /* CSS class */
507
- code .m { color: #DE8E50; } /* CSS value */
508
- code .nd { color: #9FAD7E; } /* CSS pseudo selector */
509
-
510
-
511
-
512
- /**** Super list ****/
513
-
514
-
515
- /**** Sites using Isotope ****/
516
-
517
- #sites h2 {
518
- display: none;
519
- padding: 0.4em;
520
- line-height: 32px;
521
- margin-bottom: 0.4em;
522
- -webkit-transition: background-color 0.8s;
523
- -moz-transition: background-color 0.8s;
524
- -o-transition: background-color 0.8s;
525
- transition: background-color 0.8s;
526
- }
527
-
528
- #sites h2 img {
529
- display: inline-block;
530
- margin-right: 0.4em;
531
- vertical-align: bottom;
532
- }
533
-
534
- #sites h2.loading {
535
- background: white;
536
- color: #222;
537
- }
538
- #sites h2.error {
539
- background: red;
540
- color: #222;
541
- }
542
-
543
-
544
- #sites ul {
545
- margin: 0;
546
- }
547
-
548
- .super-list .example {
549
- list-style: none;
550
- float: left;
551
- width: 230px;
552
- margin: 5px;
553
- }
554
-
555
- .super-list .example a,
556
- .super-list .example b,
557
- .super-list .example img {
558
- display: block;
559
- }
560
-
561
- .super-list .example img { width: 100%; }
562
-
563
- .super-list .example a {
564
- background: #1F1E1D;
565
- }
566
-
567
- .super-list .example a:hover {
568
- background: white;
569
- color: #111;
570
- }
571
-
572
- .super-list .example b {
573
- font-weight: bold;
574
- line-height: 1.3em;
575
- padding: 3px;
576
- padding-top: 8px;
577
- }
578
-
579
- .super-list .link {
580
- float: left;
581
- position: relative;
582
- font-size: 24px;
583
- line-height: 1.2em;
584
- font-weight: 300;
585
- margin: 5px;
586
- }
587
-
588
- .super-list .link {
589
- width: 230px;
590
- height: 110px;
591
- }
592
-
593
- .super-list .link a {
594
- display: block;
595
- padding: 10px;
596
- padding-left: 65px;
597
- height: 90px;
598
- background: #1F1E1D;
599
- color: #FE5;
600
- -webkit-border-radius: 14px;
601
- -moz-border-radius: 14px;
602
- border-radius: 14px;
603
- }
604
-
605
- .super-list .link a:before {
606
- content: '➔';
607
- font-size: 70px;
608
- position: absolute;
609
- top: 30px;
610
- left: 5px;
611
- -webkit-transform: rotate(90deg);
612
- -moz-transform: rotate(90deg);
613
- -ms-transform: rotate(90deg);
614
- -o-transform: rotate(90deg);
615
- transform: rotate(90deg);
616
- }
617
-
618
- .super-list .link.away a:before {
619
- top: 25px;
620
- left: 0px;
621
- -webkit-transform: rotate(-45deg);
622
- -moz-transform: rotate(-45deg);
623
- -ms-transform: rotate(-45deg);
624
- -o-transform: rotate(-45deg);
625
- transform: rotate(-45deg);
626
- }
627
-
628
- .super-list .link a:hover {
629
- background: #E58;
630
- color: white;
631
- }
632
-
633
- .super-list .feature .name {
634
- bottom: auto;
635
- top: 140px;
636
- left: 18px;
637
- font-size: 20px;
638
- }
639
-
640
- /**** BIG Graph ****/
641
-
642
- .big-graph {
643
- background: white;
644
- height: 600px;
645
- margin: 20px auto;
646
- }
647
-
648
- .big-graph .project {
649
- width: 45px;
650
- height: 45px;
651
- float: left;
652
- }
653
-
654
- .big-graph .project .icon {
655
- pointer-events: none;
656
- width: 31px;
657
- height: 31px;
658
- background: white;
659
- margin-left: 7px;
660
- -webkit-transition: -webkit-transform 0.25s;
661
- -moz-transition: -moz-transform 0.25s;
662
- -ms-transition: -ms-transform 0.25s;
663
- -o-transition: -o-transform 0.25s;
664
- transition: transform 0.25s;
665
- }
666
-
667
- .big-graph .project:hover {
668
- z-index: 5;
669
-
670
- }
671
-
672
- .big-graph .project:hover .icon {
673
- -webkit-transform: scale(3);
674
- -moz-transform: scale(3);
675
- -ms-transform: scale(3);
676
- -o-transform: scale(3);
677
- transform: scale(3);
678
- }
679
-
680
- .big-graph .project.commercial .icon { background: #6B6B6B; }
681
- .big-graph .project.urbanism .icon { background: #00CF00; }
682
- .big-graph .project.public-space .icon { background: #FF8D00; }
683
- .big-graph .project.culture .icon { background: #D61919; }
684
- .big-graph .project.body-culture .icon { background: #00ECFF; }
685
- .big-graph .project.health .icon { background: #FF2251; }
686
- .big-graph .project.education .icon { background: #00A700; }
687
- .big-graph .project.housing .icon { background: #FF02FF; }
688
- .big-graph .project.hotel .icon { background: #0000C3; }
689
- .big-graph .project.media .icon { background: #292929; }
690
-
691
- .big-graph .project p {
692
- line-height: 14px;
693
- font-size: 10.5px;
694
- color: black;
695
- margin-left: 7px;
696
- }
697
-
698
- /**** Infinite Scroll ****/
699
-
700
- #infscr-loading {
701
- position: fixed;
702
- text-align: center;
703
- bottom: 30px;
704
- left: 42%;
705
- z-index: 100;
706
- background: white;
707
- background: hsla( 0, 0%, 100%, 0.9 );
708
- padding: 20px;
709
- color: #222;
710
- font-size: 15px;
711
- font-weight: bold;
712
- -webkit-border-radius: 10px;
713
- -moz-border-radius: 10px;
714
- border-radius: 10px;
715
- }
716
-
717
-
718
-
719
- /* The Magnificent Clearfix: nicolasgallagher.com/micro-clearfix-hack/ */
720
- .clearfix:before, .clearfix:after { content: ""; display: table; }
721
- .clearfix:after { clear: both; }
722
- .clearfix { zoom: 1; }
723
-
724
- .template-thumbnail
725
- {
726
- width:100%;
727
- height:190px;
728
- -webkit-border-radius: 4px;
729
- -khtml-border-radius: 4px;
730
- -moz-border-radius: 4px;
731
- border-radius: 4px;
732
- background-color: #A9A9A9;
733
- -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px,rgba(0, 0, 0, 0.3) 0 2px 5px;
734
- -moz-box-shadow: rgba(0,0,0,0.2) 0 0 0 1px,rgba(0,0,0,0.3) 0 2px 5px;
735
- box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px,rgba(0, 0, 0, 0.3) 0 2px 5px;
736
- }
737
-
738
- ul#template-filter{ margin: 0px 0; padding: 0; padding-left: 0px; line-height: 64px; }
739
- ul#template-filter li{ display: inline; }
740
- ul#template-filter a{ margin-right: 0.5em; padding: 0em 1em; font-weight: bold; text-decoration: none; }
741
- ul#template-filter .button-primary a:hover { color:#fff;}
742
- ul#template-filter a.current{ background-color: #DDD; }
743
-
744
- #template-item{ float: left; margin-right: 18px; overflow: hidden; margin: 0px 0 0 0; padding: 0; list-style: none; width: 300px; margin-bottom: 10px; }
745
- #template-item div{ display: block; }
746
- /* #template-item div a{ display: block; width: 163px; height: 120px; overflow: hidden; border: 1px solid #CDCDCD; background: #eee; }*/
747
- #template-item li p{ font-size: 11px; line-height: 15px; color: #AAA; margin: 5px 0; }
748
- #template-box .lp_tooltip_templates{
749
- bottom: 6px;
750
- position: absolute;
751
- right: 8px;
752
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/libraries/isotope/jquery.isotope.js DELETED
@@ -1,1406 +0,0 @@
1
- /**
2
- * Isotope v1.5.23
3
- * An exquisite jQuery plugin for magical layouts
4
- * http://isotope.metafizzy.co
5
- *
6
- * Commercial use requires one-time license fee
7
- * http://metafizzy.co/#licenses
8
- *
9
- * Copyright 2012 David DeSandro / Metafizzy
10
- */
11
-
12
- /*jshint asi: true, browser: true, curly: true, eqeqeq: true, forin: false, immed: false, newcap: true, noempty: true, strict: true, undef: true */
13
- /*global jQuery: false */
14
-
15
- (function( window, $, undefined ){
16
-
17
- 'use strict';
18
-
19
- // get global vars
20
- var document = window.document;
21
- var Modernizr = window.Modernizr;
22
-
23
- // helper function
24
- var capitalize = function( str ) {
25
- return str.charAt(0).toUpperCase() + str.slice(1);
26
- };
27
-
28
- // ========================= getStyleProperty by kangax ===============================
29
- // http://perfectionkills.com/feature-testing-css-properties/
30
-
31
- var prefixes = 'Moz Webkit O Ms'.split(' ');
32
-
33
- var getStyleProperty = function( propName ) {
34
- var style = document.documentElement.style,
35
- prefixed;
36
-
37
- // test standard property first
38
- if ( typeof style[propName] === 'string' ) {
39
- return propName;
40
- }
41
-
42
- // capitalize
43
- propName = capitalize( propName );
44
-
45
- // test vendor specific properties
46
- for ( var i=0, len = prefixes.length; i < len; i++ ) {
47
- prefixed = prefixes[i] + propName;
48
- if ( typeof style[ prefixed ] === 'string' ) {
49
- return prefixed;
50
- }
51
- }
52
- };
53
-
54
- var transformProp = getStyleProperty('transform'),
55
- transitionProp = getStyleProperty('transitionProperty');
56
-
57
-
58
- // ========================= miniModernizr ===============================
59
- // <3<3<3 and thanks to Faruk and Paul for doing the heavy lifting
60
-
61
- /*!
62
- * Modernizr v1.6ish: miniModernizr for Isotope
63
- * http://www.modernizr.com
64
- *
65
- * Developed by:
66
- * - Faruk Ates http://farukat.es/
67
- * - Paul Irish http://paulirish.com/
68
- *
69
- * Copyright (c) 2009-2010
70
- * Dual-licensed under the BSD or MIT licenses.
71
- * http://www.modernizr.com/license/
72
- */
73
-
74
- /*
75
- * This version whittles down the script just to check support for
76
- * CSS transitions, transforms, and 3D transforms.
77
- */
78
-
79
- var tests = {
80
- csstransforms: function() {
81
- return !!transformProp;
82
- },
83
-
84
- csstransforms3d: function() {
85
- var test = !!getStyleProperty('perspective');
86
- // double check for Chrome's false positive
87
- if ( test ) {
88
- var vendorCSSPrefixes = ' -o- -moz- -ms- -webkit- -khtml- '.split(' '),
89
- mediaQuery = '@media (' + vendorCSSPrefixes.join('transform-3d),(') + 'modernizr)',
90
- $style = $('<style>' + mediaQuery + '{#modernizr{height:3px}}' + '</style>')
91
- .appendTo('head'),
92
- $div = $('<div id="modernizr" />').appendTo('html');
93
-
94
- test = $div.height() === 3;
95
-
96
- $div.remove();
97
- $style.remove();
98
- }
99
- return test;
100
- },
101
-
102
- csstransitions: function() {
103
- return !!transitionProp;
104
- }
105
- };
106
-
107
- var testName;
108
-
109
- if ( Modernizr ) {
110
- // if there's a previous Modernzir, check if there are necessary tests
111
- for ( testName in tests) {
112
- if ( !Modernizr.hasOwnProperty( testName ) ) {
113
- // if test hasn't been run, use addTest to run it
114
- Modernizr.addTest( testName, tests[ testName ] );
115
- }
116
- }
117
- } else {
118
- // or create new mini Modernizr that just has the 3 tests
119
- Modernizr = window.Modernizr = {
120
- _version : '1.6ish: miniModernizr for Isotope'
121
- };
122
-
123
- var classes = ' ';
124
- var result;
125
-
126
- // Run through tests
127
- for ( testName in tests) {
128
- result = tests[ testName ]();
129
- Modernizr[ testName ] = result;
130
- classes += ' ' + ( result ? '' : 'no-' ) + testName;
131
- }
132
-
133
- // Add the new classes to the <html> element.
134
- $('html').addClass( classes );
135
- }
136
-
137
-
138
- // ========================= isoTransform ===============================
139
-
140
- /**
141
- * provides hooks for .css({ scale: value, translate: [x, y] })
142
- * Progressively enhanced CSS transforms
143
- * Uses hardware accelerated 3D transforms for Safari
144
- * or falls back to 2D transforms.
145
- */
146
-
147
- if ( Modernizr.csstransforms ) {
148
-
149
- // i.e. transformFnNotations.scale(0.5) >> 'scale3d( 0.5, 0.5, 1)'
150
- var transformFnNotations = Modernizr.csstransforms3d ?
151
- { // 3D transform functions
152
- translate : function ( position ) {
153
- return 'translate3d(' + position[0] + 'px, ' + position[1] + 'px, 0) ';
154
- },
155
- scale : function ( scale ) {
156
- return 'scale3d(' + scale + ', ' + scale + ', 1) ';
157
- }
158
- } :
159
- { // 2D transform functions
160
- translate : function ( position ) {
161
- return 'translate(' + position[0] + 'px, ' + position[1] + 'px) ';
162
- },
163
- scale : function ( scale ) {
164
- return 'scale(' + scale + ') ';
165
- }
166
- }
167
- ;
168
-
169
- var setIsoTransform = function ( elem, name, value ) {
170
- // unpack current transform data
171
- var data = jQuery.data( elem, 'isoTransform' ) || {},
172
- newData = {},
173
- fnName,
174
- transformObj = {},
175
- transformValue;
176
-
177
- // i.e. newData.scale = 0.5
178
- newData[ name ] = value;
179
- // extend new value over current data
180
- jQuery.extend( data, newData );
181
-
182
- for ( fnName in data ) {
183
- transformValue = data[ fnName ];
184
- transformObj[ fnName ] = transformFnNotations[ fnName ]( transformValue );
185
- }
186
-
187
- // get proper order
188
- // ideally, we could loop through this give an array, but since we only have
189
- // a couple transforms we're keeping track of, we'll do it like so
190
- var translateFn = transformObj.translate || '',
191
- scaleFn = transformObj.scale || '',
192
- // sorting so translate always comes first
193
- valueFns = translateFn + scaleFn;
194
-
195
- // set data back in elem
196
- jQuery.data( elem, 'isoTransform', data );
197
-
198
- // set name to vendor specific property
199
- elem.style[ transformProp ] = valueFns;
200
- };
201
-
202
- // ==================== scale ===================
203
-
204
- jQuery.cssNumber.scale = true;
205
-
206
- jQuery.cssHooks.scale = {
207
- set: function( elem, value ) {
208
- // uncomment this bit if you want to properly parse strings
209
- // if ( typeof value === 'string' ) {
210
- // value = parseFloat( value );
211
- // }
212
- setIsoTransform( elem, 'scale', value );
213
- },
214
- get: function( elem, computed ) {
215
- var transform = jQuery.data( elem, 'isoTransform' );
216
- return transform && transform.scale ? transform.scale : 1;
217
- }
218
- };
219
-
220
- jQuery.fx.step.scale = function( fx ) {
221
- jQuery.cssHooks.scale.set( fx.elem, fx.now+fx.unit );
222
- };
223
-
224
-
225
- // ==================== translate ===================
226
-
227
- jQuery.cssNumber.translate = true;
228
-
229
- jQuery.cssHooks.translate = {
230
- set: function( elem, value ) {
231
-
232
- // uncomment this bit if you want to properly parse strings
233
- // if ( typeof value === 'string' ) {
234
- // value = value.split(' ');
235
- // }
236
- //
237
- // var i, val;
238
- // for ( i = 0; i < 2; i++ ) {
239
- // val = value[i];
240
- // if ( typeof val === 'string' ) {
241
- // val = parseInt( val );
242
- // }
243
- // }
244
-
245
- setIsoTransform( elem, 'translate', value );
246
- },
247
-
248
- get: function( elem, computed ) {
249
- var transform = jQuery.data( elem, 'isoTransform' );
250
- return transform && transform.translate ? transform.translate : [ 0, 0 ];
251
- }
252
- };
253
-
254
- }
255
-
256
- // ========================= get transition-end event ===============================
257
- var transitionEndEvent, transitionDurProp;
258
-
259
- if ( Modernizr.csstransitions ) {
260
- transitionEndEvent = {
261
- WebkitTransitionProperty: 'webkitTransitionEnd', // webkit
262
- MozTransitionProperty: 'transitionend',
263
- OTransitionProperty: 'oTransitionEnd otransitionend',
264
- transitionProperty: 'transitionend'
265
- }[ transitionProp ];
266
-
267
- transitionDurProp = getStyleProperty('transitionDuration');
268
- }
269
-
270
- // ========================= smartresize ===============================
271
-
272
- /*
273
- * smartresize: debounced resize event for jQuery
274
- *
275
- * latest version and complete README available on Github:
276
- * https://github.com/louisremi/jquery.smartresize.js
277
- *
278
- * Copyright 2011 @louis_remi
279
- * Licensed under the MIT license.
280
- */
281
-
282
- var $event = jQuery.event,
283
- resizeTimeout;
284
-
285
- $event.special.smartresize = {
286
- setup: function() {
287
- $(this).bind( "resize", $event.special.smartresize.handler );
288
- },
289
- teardown: function() {
290
- $(this).unbind( "resize", $event.special.smartresize.handler );
291
- },
292
- handler: function( event, execAsap ) {
293
- // Save the context
294
- var context = this,
295
- args = arguments;
296
-
297
- // set correct event type
298
- event.type = "smartresize";
299
-
300
- if ( resizeTimeout ) { clearTimeout( resizeTimeout ); }
301
- resizeTimeout = setTimeout(function() {
302
- jQuery.event.handle.apply( context, args );
303
- }, execAsap === "execAsap"? 0 : 100 );
304
- }
305
- };
306
-
307
- jQuery.fn.smartresize = function( fn ) {
308
- return fn ? this.bind( "smartresize", fn ) : this.trigger( "smartresize", ["execAsap"] );
309
- };
310
-
311
-
312
-
313
- // ========================= Isotope ===============================
314
-
315
-
316
- // our "Widget" object constructor
317
- jQuery.Isotope = function( options, element, callback ){
318
- this.element = $( element );
319
-
320
- this._create( options );
321
- this._init( callback );
322
- };
323
-
324
- // styles of container element we want to keep track of
325
- var isoContainerStyles = [ 'width', 'height' ];
326
-
327
- var $window = $(window);
328
-
329
- jQuery.Isotope.settings = {
330
- resizable: true,
331
- layoutMode : 'masonry',
332
- containerClass : 'isotope',
333
- itemClass : 'isotope-item',
334
- hiddenClass : 'isotope-hidden',
335
- hiddenStyle: { opacity: 0, scale: 0.001 },
336
- visibleStyle: { opacity: 1, scale: 1 },
337
- containerStyle: {
338
- position: 'relative',
339
- overflow: 'hidden'
340
- },
341
- animationEngine: 'best-available',
342
- animationOptions: {
343
- queue: false,
344
- duration: 800
345
- },
346
- sortBy : 'original-order',
347
- sortAscending : true,
348
- resizesContainer : true,
349
- transformsEnabled: true,
350
- itemPositionDataEnabled: false
351
- };
352
-
353
- jQuery.Isotope.prototype = {
354
-
355
- // sets up widget
356
- _create : function( options ) {
357
-
358
- this.options = jQuery.extend( {}, jQuery.Isotope.settings, options );
359
-
360
- this.styleQueue = [];
361
- this.elemCount = 0;
362
-
363
- // get original styles in case we re-apply them in .destroy()
364
- var elemStyle = this.element[0].style;
365
- this.originalStyle = {};
366
- // keep track of container styles
367
- var containerStyles = isoContainerStyles.slice(0);
368
- for ( var prop in this.options.containerStyle ) {
369
- containerStyles.push( prop );
370
- }
371
- for ( var i=0, len = containerStyles.length; i < len; i++ ) {
372
- prop = containerStyles[i];
373
- this.originalStyle[ prop ] = elemStyle[ prop ] || '';
374
- }
375
- // apply container style from options
376
- this.element.css( this.options.containerStyle );
377
-
378
- this._updateAnimationEngine();
379
- this._updateUsingTransforms();
380
-
381
- // sorting
382
- var originalOrderSorter = {
383
- 'original-order' : function( $elem, instance ) {
384
- instance.elemCount ++;
385
- return instance.elemCount;
386
- },
387
- random : function() {
388
- return Math.random();
389
- }
390
- };
391
-
392
- this.options.getSortData = jQuery.extend( this.options.getSortData, originalOrderSorter );
393
-
394
- // need to get atoms
395
- this.reloadItems();
396
-
397
- // get top left position of where the bricks should be
398
- this.offset = {
399
- left: parseInt( ( this.element.css('padding-left') || 0 ), 10 ),
400
- top: parseInt( ( this.element.css('padding-top') || 0 ), 10 )
401
- };
402
-
403
- // add isotope class first time around
404
- var instance = this;
405
- setTimeout( function() {
406
- instance.element.addClass( instance.options.containerClass );
407
- }, 0 );
408
-
409
- // bind resize method
410
- if ( this.options.resizable ) {
411
- $window.bind( 'smartresize.isotope', function() {
412
- instance.resize();
413
- });
414
- }
415
-
416
- // dismiss all click events from hidden events
417
- this.element.delegate( '.' + this.options.hiddenClass, 'click', function(){
418
- return false;
419
- });
420
-
421
- },
422
-
423
- _getAtoms : function( $elems ) {
424
- var selector = this.options.itemSelector,
425
- // filter & find
426
- $atoms = selector ? $elems.filter( selector ).add( $elems.find( selector ) ) : $elems,
427
- // base style for atoms
428
- atomStyle = { position: 'absolute' };
429
-
430
- // filter out text nodes
431
- $atoms = $atoms.filter( function( i, atom ) {
432
- return atom.nodeType === 1;
433
- });
434
-
435
- if ( this.usingTransforms ) {
436
- atomStyle.left = 0;
437
- atomStyle.top = 0;
438
- }
439
-
440
- $atoms.css( atomStyle ).addClass( this.options.itemClass );
441
-
442
- this.updateSortData( $atoms, true );
443
-
444
- return $atoms;
445
- },
446
-
447
- // _init fires when your instance is first created
448
- // (from the constructor above), and when you
449
- // attempt to initialize the widget again (by the bridge)
450
- // after it has already been initialized.
451
- _init : function( callback ) {
452
-
453
- this.$filteredAtoms = this._filter( this.$allAtoms );
454
- this._sort();
455
- this.reLayout( callback );
456
-
457
- },
458
-
459
- option : function( opts ){
460
- // change options AFTER initialization:
461
- // signature: $('#foo').bar({ cool:false });
462
- if ( jQuery.isPlainObject( opts ) ){
463
- this.options = jQuery.extend( true, this.options, opts );
464
-
465
- // trigger _updateOptionName if it exists
466
- var updateOptionFn;
467
- for ( var optionName in opts ) {
468
- updateOptionFn = '_update' + capitalize( optionName );
469
- if ( this[ updateOptionFn ] ) {
470
- this[ updateOptionFn ]();
471
- }
472
- }
473
- }
474
- },
475
-
476
- // ====================== updaters ====================== //
477
- // kind of like setters
478
-
479
- _updateAnimationEngine : function() {
480
- var animationEngine = this.options.animationEngine.toLowerCase().replace( /[ _\-]/g, '');
481
- var isUsingJQueryAnimation;
482
- // set applyStyleFnName
483
- switch ( animationEngine ) {
484
- case 'css' :
485
- case 'none' :
486
- isUsingJQueryAnimation = false;
487
- break;
488
- case 'jquery' :
489
- isUsingJQueryAnimation = true;
490
- break;
491
- default : // best available
492
- isUsingJQueryAnimation = !Modernizr.csstransitions;
493
- }
494
- this.isUsingJQueryAnimation = isUsingJQueryAnimation;
495
- this._updateUsingTransforms();
496
- },
497
-
498
- _updateTransformsEnabled : function() {
499
- this._updateUsingTransforms();
500
- },
501
-
502
- _updateUsingTransforms : function() {
503
- var usingTransforms = this.usingTransforms = this.options.transformsEnabled &&
504
- Modernizr.csstransforms && Modernizr.csstransitions && !this.isUsingJQueryAnimation;
505
-
506
- // prevent scales when transforms are disabled
507
- if ( !usingTransforms ) {
508
- delete this.options.hiddenStyle.scale;
509
- delete this.options.visibleStyle.scale;
510
- }
511
-
512
- this.getPositionStyles = usingTransforms ? this._translate : this._positionAbs;
513
- },
514
-
515
-
516
- // ====================== Filtering ======================
517
-
518
- _filter : function( $atoms ) {
519
- var filter = this.options.filter === '' ? '*' : this.options.filter;
520
-
521
- if ( !filter ) {
522
- return $atoms;
523
- }
524
-
525
- var hiddenClass = this.options.hiddenClass,
526
- hiddenSelector = '.' + hiddenClass,
527
- $hiddenAtoms = $atoms.filter( hiddenSelector ),
528
- $atomsToShow = $hiddenAtoms;
529
-
530
- if ( filter !== '*' ) {
531
- $atomsToShow = $hiddenAtoms.filter( filter );
532
- var $atomsToHide = $atoms.not( hiddenSelector ).not( filter ).addClass( hiddenClass );
533
- this.styleQueue.push({ $el: $atomsToHide, style: this.options.hiddenStyle });
534
- }
535
-
536
- this.styleQueue.push({ $el: $atomsToShow, style: this.options.visibleStyle });
537
- $atomsToShow.removeClass( hiddenClass );
538
-
539
- return $atoms.filter( filter );
540
- },
541
-
542
- // ====================== Sorting ======================
543
-
544
- updateSortData : function( $atoms, isIncrementingElemCount ) {
545
- var instance = this,
546
- getSortData = this.options.getSortData,
547
- $this, sortData;
548
- $atoms.each(function(){
549
- $this = $(this);
550
- sortData = {};
551
- // get value for sort data based on fn( $elem ) passed in
552
- for ( var key in getSortData ) {
553
- if ( !isIncrementingElemCount && key === 'original-order' ) {
554
- // keep original order original
555
- sortData[ key ] = jQuery.data( this, 'isotope-sort-data' )[ key ];
556
- } else {
557
- sortData[ key ] = getSortData[ key ]( $this, instance );
558
- }
559
- }
560
- // apply sort data to element
561
- jQuery.data( this, 'isotope-sort-data', sortData );
562
- });
563
- },
564
-
565
- // used on all the filtered atoms
566
- _sort : function() {
567
-
568
- var sortBy = this.options.sortBy,
569
- getSorter = this._getSorter,
570
- sortDir = this.options.sortAscending ? 1 : -1,
571
- sortFn = function( alpha, beta ) {
572
- var a = getSorter( alpha, sortBy ),
573
- b = getSorter( beta, sortBy );
574
- // fall back to original order if data matches
575
- if ( a === b && sortBy !== 'original-order') {
576
- a = getSorter( alpha, 'original-order' );
577
- b = getSorter( beta, 'original-order' );
578
- }
579
- return ( ( a > b ) ? 1 : ( a < b ) ? -1 : 0 ) * sortDir;
580
- };
581
-
582
- this.$filteredAtoms.sort( sortFn );
583
- },
584
-
585
- _getSorter : function( elem, sortBy ) {
586
- return jQuery.data( elem, 'isotope-sort-data' )[ sortBy ];
587
- },
588
-
589
- // ====================== Layout Helpers ======================
590
-
591
- _translate : function( x, y ) {
592
- return { translate : [ x, y ] };
593
- },
594
-
595
- _positionAbs : function( x, y ) {
596
- return { left: x, top: y };
597
- },
598
-
599
- _pushPosition : function( $elem, x, y ) {
600
- x = Math.round( x + this.offset.left );
601
- y = Math.round( y + this.offset.top );
602
- var position = this.getPositionStyles( x, y );
603
- this.styleQueue.push({ $el: $elem, style: position });
604
- if ( this.options.itemPositionDataEnabled ) {
605
- $elem.data('isotope-item-position', {x: x, y: y} );
606
- }
607
- },
608
-
609
-
610
- // ====================== General Layout ======================
611
-
612
- // used on collection of atoms (should be filtered, and sorted before )
613
- // accepts atoms-to-be-laid-out to start with
614
- layout : function( $elems, callback ) {
615
-
616
- var layoutMode = this.options.layoutMode;
617
-
618
- // layout logic
619
- this[ '_' + layoutMode + 'Layout' ]( $elems );
620
-
621
- // set the size of the container
622
- if ( this.options.resizesContainer ) {
623
- var containerStyle = this[ '_' + layoutMode + 'GetContainerSize' ]();
624
- this.styleQueue.push({ $el: this.element, style: containerStyle });
625
- }
626
-
627
- this._processStyleQueue( $elems, callback );
628
-
629
- this.isLaidOut = true;
630
- },
631
-
632
- _processStyleQueue : function( $elems, callback ) {
633
- // are we animating the layout arrangement?
634
- // use plugin-ish syntax for css or animate
635
- var styleFn = !this.isLaidOut ? 'css' : (
636
- this.isUsingJQueryAnimation ? 'animate' : 'css'
637
- ),
638
- animOpts = this.options.animationOptions,
639
- onLayout = this.options.onLayout,
640
- objStyleFn, processor,
641
- triggerCallbackNow, callbackFn;
642
-
643
- // default styleQueue processor, may be overwritten down below
644
- processor = function( i, obj ) {
645
- obj.$el[ styleFn ]( obj.style, animOpts );
646
- };
647
-
648
- if ( this._isInserting && this.isUsingJQueryAnimation ) {
649
- // if using styleQueue to insert items
650
- processor = function( i, obj ) {
651
- // only animate if it not being inserted
652
- objStyleFn = obj.$el.hasClass('no-transition') ? 'css' : styleFn;
653
- obj.$el[ objStyleFn ]( obj.style, animOpts );
654
- };
655
-
656
- } else if ( callback || onLayout || animOpts.complete ) {
657
- // has callback
658
- var isCallbackTriggered = false,
659
- // array of possible callbacks to trigger
660
- callbacks = [ callback, onLayout, animOpts.complete ],
661
- instance = this;
662
- triggerCallbackNow = true;
663
- // trigger callback only once
664
- callbackFn = function() {
665
- if ( isCallbackTriggered ) {
666
- return;
667
- }
668
- var hollaback;
669
- for (var i=0, len = callbacks.length; i < len; i++) {
670
- hollaback = callbacks[i];
671
- if ( typeof hollaback === 'function' ) {
672
- hollaback.call( instance.element, $elems, instance );
673
- }
674
- }
675
- isCallbackTriggered = true;
676
- };
677
-
678
- if ( this.isUsingJQueryAnimation && styleFn === 'animate' ) {
679
- // add callback to animation options
680
- animOpts.complete = callbackFn;
681
- triggerCallbackNow = false;
682
-
683
- } else if ( Modernizr.csstransitions ) {
684
- // detect if first item has transition
685
- var i = 0,
686
- firstItem = this.styleQueue[0],
687
- testElem = firstItem && firstItem.$el,
688
- styleObj;
689
- // get first non-empty jQ object
690
- while ( !testElem || !testElem.length ) {
691
- styleObj = this.styleQueue[ i++ ];
692
- // HACK: sometimes styleQueue[i] is undefined
693
- if ( !styleObj ) {
694
- return;
695
- }
696
- testElem = styleObj.$el;
697
- }
698
- // get transition duration of the first element in that object
699
- // yeah, this is inexact
700
- var duration = parseFloat( getComputedStyle( testElem[0] )[ transitionDurProp ] );
701
- if ( duration > 0 ) {
702
- processor = function( i, obj ) {
703
- obj.$el[ styleFn ]( obj.style, animOpts )
704
- // trigger callback at transition end
705
- .one( transitionEndEvent, callbackFn );
706
- };
707
- triggerCallbackNow = false;
708
- }
709
- }
710
- }
711
-
712
- // process styleQueue
713
- jQuery.each( this.styleQueue, processor );
714
-
715
- if ( triggerCallbackNow ) {
716
- callbackFn();
717
- }
718
-
719
- // clear out queue for next time
720
- this.styleQueue = [];
721
- },
722
-
723
-
724
- resize : function() {
725
- if ( this[ '_' + this.options.layoutMode + 'ResizeChanged' ]() ) {
726
- this.reLayout();
727
- }
728
- },
729
-
730
-
731
- reLayout : function( callback ) {
732
-
733
- this[ '_' + this.options.layoutMode + 'Reset' ]();
734
- this.layout( this.$filteredAtoms, callback );
735
-
736
- },
737
-
738
- // ====================== Convenience methods ======================
739
-
740
- // ====================== Adding items ======================
741
-
742
- // adds a jQuery object of items to a isotope container
743
- addItems : function( $content, callback ) {
744
- var $newAtoms = this._getAtoms( $content );
745
- // add new atoms to atoms pools
746
- this.$allAtoms = this.$allAtoms.add( $newAtoms );
747
-
748
- if ( callback ) {
749
- callback( $newAtoms );
750
- }
751
- },
752
-
753
- // convienence method for adding elements properly to any layout
754
- // positions items, hides them, then animates them back in <--- very sezzy
755
- insert : function( $content, callback ) {
756
- // position items
757
- this.element.append( $content );
758
-
759
- var instance = this;
760
- this.addItems( $content, function( $newAtoms ) {
761
- var $newFilteredAtoms = instance._filter( $newAtoms );
762
- instance._addHideAppended( $newFilteredAtoms );
763
- instance._sort();
764
- instance.reLayout();
765
- instance._revealAppended( $newFilteredAtoms, callback );
766
- });
767
-
768
- },
769
-
770
- // convienence method for working with Infinite Scroll
771
- appended : function( $content, callback ) {
772
- var instance = this;
773
- this.addItems( $content, function( $newAtoms ) {
774
- instance._addHideAppended( $newAtoms );
775
- instance.layout( $newAtoms );
776
- instance._revealAppended( $newAtoms, callback );
777
- });
778
- },
779
-
780
- // adds new atoms, then hides them before positioning
781
- _addHideAppended : function( $newAtoms ) {
782
- this.$filteredAtoms = this.$filteredAtoms.add( $newAtoms );
783
- $newAtoms.addClass('no-transition');
784
-
785
- this._isInserting = true;
786
-
787
- // apply hidden styles
788
- this.styleQueue.push({ $el: $newAtoms, style: this.options.hiddenStyle });
789
- },
790
-
791
- // sets visible style on new atoms
792
- _revealAppended : function( $newAtoms, callback ) {
793
- var instance = this;
794
- // apply visible style after a sec
795
- setTimeout( function() {
796
- // enable animation
797
- $newAtoms.removeClass('no-transition');
798
- // reveal newly inserted filtered elements
799
- instance.styleQueue.push({ $el: $newAtoms, style: instance.options.visibleStyle });
800
- instance._isInserting = false;
801
- instance._processStyleQueue( $newAtoms, callback );
802
- }, 10 );
803
- },
804
-
805
- // gathers all atoms
806
- reloadItems : function() {
807
- this.$allAtoms = this._getAtoms( this.element.children() );
808
- },
809
-
810
- // removes elements from Isotope widget
811
- remove: function( $content, callback ) {
812
- // remove elements immediately from Isotope instance
813
- this.$allAtoms = this.$allAtoms.not( $content );
814
- this.$filteredAtoms = this.$filteredAtoms.not( $content );
815
- // remove() as a callback, for after transition / animation
816
- var instance = this;
817
- var removeContent = function() {
818
- $content.remove();
819
- if ( callback ) {
820
- callback.call( instance.element );
821
- }
822
- };
823
-
824
- if ( $content.filter( ':not(.' + this.options.hiddenClass + ')' ).length ) {
825
- // if any non-hidden content needs to be removed
826
- this.styleQueue.push({ $el: $content, style: this.options.hiddenStyle });
827
- this._sort();
828
- this.reLayout( removeContent );
829
- } else {
830
- // remove it now
831
- removeContent();
832
- }
833
-
834
- },
835
-
836
- shuffle : function( callback ) {
837
- this.updateSortData( this.$allAtoms );
838
- this.options.sortBy = 'random';
839
- this._sort();
840
- this.reLayout( callback );
841
- },
842
-
843
- // destroys widget, returns elements and container back (close) to original style
844
- destroy : function() {
845
-
846
- var usingTransforms = this.usingTransforms;
847
- var options = this.options;
848
-
849
- this.$allAtoms
850
- .removeClass( options.hiddenClass + ' ' + options.itemClass )
851
- .each(function(){
852
- var style = this.style;
853
- style.position = '';
854
- style.top = '';
855
- style.left = '';
856
- style.opacity = '';
857
- if ( usingTransforms ) {
858
- style[ transformProp ] = '';
859
- }
860
- });
861
-
862
- // re-apply saved container styles
863
- var elemStyle = this.element[0].style;
864
- for ( var prop in this.originalStyle ) {
865
- elemStyle[ prop ] = this.originalStyle[ prop ];
866
- }
867
-
868
- this.element
869
- .unbind('.isotope')
870
- .undelegate( '.' + options.hiddenClass, 'click' )
871
- .removeClass( options.containerClass )
872
- .removeData('isotope');
873
-
874
- $window.unbind('.isotope');
875
-
876
- },
877
-
878
-
879
- // ====================== LAYOUTS ======================
880
-
881
- // calculates number of rows or columns
882
- // requires columnWidth or rowHeight to be set on namespaced object
883
- // i.e. this.masonry.columnWidth = 200
884
- _getSegments : function( isRows ) {
885
- var namespace = this.options.layoutMode,
886
- measure = isRows ? 'rowHeight' : 'columnWidth',
887
- size = isRows ? 'height' : 'width',
888
- segmentsName = isRows ? 'rows' : 'cols',
889
- containerSize = this.element[ size ](),
890
- segments,
891
- // i.e. options.masonry && options.masonry.columnWidth
892
- segmentSize = this.options[ namespace ] && this.options[ namespace ][ measure ] ||
893
- // or use the size of the first item, i.e. outerWidth
894
- this.$filteredAtoms[ 'outer' + capitalize(size) ](true) ||
895
- // if there's no items, use size of container
896
- containerSize;
897
-
898
- segments = Math.floor( containerSize / segmentSize );
899
- segments = Math.max( segments, 1 );
900
-
901
- // i.e. this.masonry.cols = ....
902
- this[ namespace ][ segmentsName ] = segments;
903
- // i.e. this.masonry.columnWidth = ...
904
- this[ namespace ][ measure ] = segmentSize;
905
-
906
- },
907
-
908
- _checkIfSegmentsChanged : function( isRows ) {
909
- var namespace = this.options.layoutMode,
910
- segmentsName = isRows ? 'rows' : 'cols',
911
- prevSegments = this[ namespace ][ segmentsName ];
912
- // update cols/rows
913
- this._getSegments( isRows );
914
- // return if updated cols/rows is not equal to previous
915
- return ( this[ namespace ][ segmentsName ] !== prevSegments );
916
- },
917
-
918
- // ====================== Masonry ======================
919
-
920
- _masonryReset : function() {
921
- // layout-specific props
922
- this.masonry = {};
923
- // FIXME shouldn't have to call this again
924
- this._getSegments();
925
- var i = this.masonry.cols;
926
- this.masonry.colYs = [];
927
- while (i--) {
928
- this.masonry.colYs.push( 0 );
929
- }
930
- },
931
-
932
- _masonryLayout : function( $elems ) {
933
- var instance = this,
934
- props = instance.masonry;
935
- $elems.each(function(){
936
- var $this = $(this),
937
- //how many columns does this brick span
938
- colSpan = Math.ceil( $this.outerWidth(true) / props.columnWidth );
939
- colSpan = Math.min( colSpan, props.cols );
940
-
941
- if ( colSpan === 1 ) {
942
- // if brick spans only one column, just like singleMode
943
- instance._masonryPlaceBrick( $this, props.colYs );
944
- } else {
945
- // brick spans more than one column
946
- // how many different places could this brick fit horizontally
947
- var groupCount = props.cols + 1 - colSpan,
948
- groupY = [],
949
- groupColY,
950
- i;
951
-
952
- // for each group potential horizontal position
953
- for ( i=0; i < groupCount; i++ ) {
954
- // make an array of colY values for that one group
955
- groupColY = props.colYs.slice( i, i+colSpan );
956
- // and get the max value of the array
957
- groupY[i] = Math.max.apply( Math, groupColY );
958
- }
959
-
960
- instance._masonryPlaceBrick( $this, groupY );
961
- }
962
- });
963
- },
964
-
965
- // worker method that places brick in the columnSet
966
- // with the the minY
967
- _masonryPlaceBrick : function( $brick, setY ) {
968
- // get the minimum Y value from the columns
969
- var minimumY = Math.min.apply( Math, setY ),
970
- shortCol = 0;
971
-
972
- // Find index of short column, the first from the left
973
- for (var i=0, len = setY.length; i < len; i++) {
974
- if ( setY[i] === minimumY ) {
975
- shortCol = i;
976
- break;
977
- }
978
- }
979
-
980
- // position the brick
981
- var x = this.masonry.columnWidth * shortCol,
982
- y = minimumY;
983
- this._pushPosition( $brick, x, y );
984
-
985
- // apply setHeight to necessary columns
986
- var setHeight = minimumY + $brick.outerHeight(true),
987
- setSpan = this.masonry.cols + 1 - len;
988
- for ( i=0; i < setSpan; i++ ) {
989
- this.masonry.colYs[ shortCol + i ] = setHeight;
990
- }
991
-
992
- },
993
-
994
- _masonryGetContainerSize : function() {
995
- var containerHeight = Math.max.apply( Math, this.masonry.colYs );
996
- return { height: containerHeight };
997
- },
998
-
999
- _masonryResizeChanged : function() {
1000
- return this._checkIfSegmentsChanged();
1001
- },
1002
-
1003
- // ====================== fitRows ======================
1004
-
1005
- _fitRowsReset : function() {
1006
- this.fitRows = {
1007
- x : 0,
1008
- y : 0,
1009
- height : 0
1010
- };
1011
- },
1012
-
1013
- _fitRowsLayout : function( $elems ) {
1014
- var instance = this,
1015
- containerWidth = this.element.width(),
1016
- props = this.fitRows;
1017
-
1018
- $elems.each( function() {
1019
- var $this = $(this),
1020
- atomW = $this.outerWidth(true),
1021
- atomH = $this.outerHeight(true);
1022
-
1023
- if ( props.x !== 0 && atomW + props.x > containerWidth ) {
1024
- // if this element cannot fit in the current row
1025
- props.x = 0;
1026
- props.y = props.height;
1027
- }
1028
-
1029
- // position the atom
1030
- instance._pushPosition( $this, props.x, props.y );
1031
-
1032
- props.height = Math.max( props.y + atomH, props.height );
1033
- props.x += atomW;
1034
-
1035
- });
1036
- },
1037
-
1038
- _fitRowsGetContainerSize : function () {
1039
- return { height : this.fitRows.height };
1040
- },
1041
-
1042
- _fitRowsResizeChanged : function() {
1043
- return true;
1044
- },
1045
-
1046
-
1047
- // ====================== cellsByRow ======================
1048
-
1049
- _cellsByRowReset : function() {
1050
- this.cellsByRow = {
1051
- index : 0
1052
- };
1053
- // get this.cellsByRow.columnWidth
1054
- this._getSegments();
1055
- // get this.cellsByRow.rowHeight
1056
- this._getSegments(true);
1057
- },
1058
-
1059
- _cellsByRowLayout : function( $elems ) {
1060
- var instance = this,
1061
- props = this.cellsByRow;
1062
- $elems.each( function(){
1063
- var $this = $(this),
1064
- col = props.index % props.cols,
1065
- row = Math.floor( props.index / props.cols ),
1066
- x = ( col + 0.5 ) * props.columnWidth - $this.outerWidth(true) / 2,
1067
- y = ( row + 0.5 ) * props.rowHeight - $this.outerHeight(true) / 2;
1068
- instance._pushPosition( $this, x, y );
1069
- props.index ++;
1070
- });
1071
- },
1072
-
1073
- _cellsByRowGetContainerSize : function() {
1074
- return { height : Math.ceil( this.$filteredAtoms.length / this.cellsByRow.cols ) * this.cellsByRow.rowHeight + this.offset.top };
1075
- },
1076
-
1077
- _cellsByRowResizeChanged : function() {
1078
- return this._checkIfSegmentsChanged();
1079
- },
1080
-
1081
-
1082
- // ====================== straightDown ======================
1083
-
1084
- _straightDownReset : function() {
1085
- this.straightDown = {
1086
- y : 0
1087
- };
1088
- },
1089
-
1090
- _straightDownLayout : function( $elems ) {
1091
- var instance = this;
1092
- $elems.each( function( i ){
1093
- var $this = $(this);
1094
- instance._pushPosition( $this, 0, instance.straightDown.y );
1095
- instance.straightDown.y += $this.outerHeight(true);
1096
- });
1097
- },
1098
-
1099
- _straightDownGetContainerSize : function() {
1100
- return { height : this.straightDown.y };
1101
- },
1102
-
1103
- _straightDownResizeChanged : function() {
1104
- return true;
1105
- },
1106
-
1107
-
1108
- // ====================== masonryHorizontal ======================
1109
-
1110
- _masonryHorizontalReset : function() {
1111
- // layout-specific props
1112
- this.masonryHorizontal = {};
1113
- // FIXME shouldn't have to call this again
1114
- this._getSegments( true );
1115
- var i = this.masonryHorizontal.rows;
1116
- this.masonryHorizontal.rowXs = [];
1117
- while (i--) {
1118
- this.masonryHorizontal.rowXs.push( 0 );
1119
- }
1120
- },
1121
-
1122
- _masonryHorizontalLayout : function( $elems ) {
1123
- var instance = this,
1124
- props = instance.masonryHorizontal;
1125
- $elems.each(function(){
1126
- var $this = $(this),
1127
- //how many rows does this brick span
1128
- rowSpan = Math.ceil( $this.outerHeight(true) / props.rowHeight );
1129
- rowSpan = Math.min( rowSpan, props.rows );
1130
-
1131
- if ( rowSpan === 1 ) {
1132
- // if brick spans only one column, just like singleMode
1133
- instance._masonryHorizontalPlaceBrick( $this, props.rowXs );
1134
- } else {
1135
- // brick spans more than one row
1136
- // how many different places could this brick fit horizontally
1137
- var groupCount = props.rows + 1 - rowSpan,
1138
- groupX = [],
1139
- groupRowX, i;
1140
-
1141
- // for each group potential horizontal position
1142
- for ( i=0; i < groupCount; i++ ) {
1143
- // make an array of colY values for that one group
1144
- groupRowX = props.rowXs.slice( i, i+rowSpan );
1145
- // and get the max value of the array
1146
- groupX[i] = Math.max.apply( Math, groupRowX );
1147
- }
1148
-
1149
- instance._masonryHorizontalPlaceBrick( $this, groupX );
1150
- }
1151
- });
1152
- },
1153
-
1154
- _masonryHorizontalPlaceBrick : function( $brick, setX ) {
1155
- // get the minimum Y value from the columns
1156
- var minimumX = Math.min.apply( Math, setX ),
1157
- smallRow = 0;
1158
- // Find index of smallest row, the first from the top
1159
- for (var i=0, len = setX.length; i < len; i++) {
1160
- if ( setX[i] === minimumX ) {
1161
- smallRow = i;
1162
- break;
1163
- }
1164
- }
1165
-
1166
- // position the brick
1167
- var x = minimumX,
1168
- y = this.masonryHorizontal.rowHeight * smallRow;
1169
- this._pushPosition( $brick, x, y );
1170
-
1171
- // apply setHeight to necessary columns
1172
- var setWidth = minimumX + $brick.outerWidth(true),
1173
- setSpan = this.masonryHorizontal.rows + 1 - len;
1174
- for ( i=0; i < setSpan; i++ ) {
1175
- this.masonryHorizontal.rowXs[ smallRow + i ] = setWidth;
1176
- }
1177
- },
1178
-
1179
- _masonryHorizontalGetContainerSize : function() {
1180
- var containerWidth = Math.max.apply( Math, this.masonryHorizontal.rowXs );
1181
- return { width: containerWidth };
1182
- },
1183
-
1184
- _masonryHorizontalResizeChanged : function() {
1185
- return this._checkIfSegmentsChanged(true);
1186
- },
1187
-
1188
-
1189
- // ====================== fitColumns ======================
1190
-
1191
- _fitColumnsReset : function() {
1192
- this.fitColumns = {
1193
- x : 0,
1194
- y : 0,
1195
- width : 0
1196
- };
1197
- },
1198
-
1199
- _fitColumnsLayout : function( $elems ) {
1200
- var instance = this,
1201
- containerHeight = this.element.height(),
1202
- props = this.fitColumns;
1203
- $elems.each( function() {
1204
- var $this = $(this),
1205
- atomW = $this.outerWidth(true),
1206
- atomH = $this.outerHeight(true);
1207
-
1208
- if ( props.y !== 0 && atomH + props.y > containerHeight ) {
1209
- // if this element cannot fit in the current column
1210
- props.x = props.width;
1211
- props.y = 0;
1212
- }
1213
-
1214
- // position the atom
1215
- instance._pushPosition( $this, props.x, props.y );
1216
-
1217
- props.width = Math.max( props.x + atomW, props.width );
1218
- props.y += atomH;
1219
-
1220
- });
1221
- },
1222
-
1223
- _fitColumnsGetContainerSize : function () {
1224
- return { width : this.fitColumns.width };
1225
- },
1226
-
1227
- _fitColumnsResizeChanged : function() {
1228
- return true;
1229
- },
1230
-
1231
-
1232
-
1233
- // ====================== cellsByColumn ======================
1234
-
1235
- _cellsByColumnReset : function() {
1236
- this.cellsByColumn = {
1237
- index : 0
1238
- };
1239
- // get this.cellsByColumn.columnWidth
1240
- this._getSegments();
1241
- // get this.cellsByColumn.rowHeight
1242
- this._getSegments(true);
1243
- },
1244
-
1245
- _cellsByColumnLayout : function( $elems ) {
1246
- var instance = this,
1247
- props = this.cellsByColumn;
1248
- $elems.each( function(){
1249
- var $this = $(this),
1250
- col = Math.floor( props.index / props.rows ),
1251
- row = props.index % props.rows,
1252
- x = ( col + 0.5 ) * props.columnWidth - $this.outerWidth(true) / 2,
1253
- y = ( row + 0.5 ) * props.rowHeight - $this.outerHeight(true) / 2;
1254
- instance._pushPosition( $this, x, y );
1255
- props.index ++;
1256
- });
1257
- },
1258
-
1259
- _cellsByColumnGetContainerSize : function() {
1260
- return { width : Math.ceil( this.$filteredAtoms.length / this.cellsByColumn.rows ) * this.cellsByColumn.columnWidth };
1261
- },
1262
-
1263
- _cellsByColumnResizeChanged : function() {
1264
- return this._checkIfSegmentsChanged(true);
1265
- },
1266
-
1267
- // ====================== straightAcross ======================
1268
-
1269
- _straightAcrossReset : function() {
1270
- this.straightAcross = {
1271
- x : 0
1272
- };
1273
- },
1274
-
1275
- _straightAcrossLayout : function( $elems ) {
1276
- var instance = this;
1277
- $elems.each( function( i ){
1278
- var $this = $(this);
1279
- instance._pushPosition( $this, instance.straightAcross.x, 0 );
1280
- instance.straightAcross.x += $this.outerWidth(true);
1281
- });
1282
- },
1283
-
1284
- _straightAcrossGetContainerSize : function() {
1285
- return { width : this.straightAcross.x };
1286
- },
1287
-
1288
- _straightAcrossResizeChanged : function() {
1289
- return true;
1290
- }
1291
-
1292
- };
1293
-
1294
-
1295
- // ======================= imagesLoaded Plugin ===============================
1296
- /*!
1297
- * jQuery imagesLoaded plugin v1.1.0
1298
- * http://github.com/desandro/imagesloaded
1299
- *
1300
- * MIT License. by Paul Irish et al.
1301
- */
1302
-
1303
-
1304
- // $('#my-container').imagesLoaded(myFunction)
1305
- // or
1306
- // $('img').imagesLoaded(myFunction)
1307
-
1308
- // execute a callback when all images have loaded.
1309
- // needed because .load() doesn't work on cached images
1310
-
1311
- // callback function gets image collection as argument
1312
- // `this` is the container
1313
-
1314
- jQuery.fn.imagesLoaded = function( callback ) {
1315
- var $this = this,
1316
- $images = $this.find('img').add( $this.filter('img') ),
1317
- len = $images.length,
1318
- blank = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==',
1319
- loaded = [];
1320
-
1321
- function triggerCallback() {
1322
- callback.call( $this, $images );
1323
- }
1324
-
1325
- function imgLoaded( event ) {
1326
- var img = event.target;
1327
- if ( img.src !== blank && jQuery.inArray( img, loaded ) === -1 ){
1328
- loaded.push( img );
1329
- if ( --len <= 0 ){
1330
- setTimeout( triggerCallback );
1331
- $images.unbind( '.imagesLoaded', imgLoaded );
1332
- }
1333
- }
1334
- }
1335
-
1336
- // if no images, trigger immediately
1337
- if ( !len ) {
1338
- triggerCallback();
1339
- }
1340
-
1341
- $images.bind( 'load.imagesLoaded error.imagesLoaded', imgLoaded ).each( function() {
1342
- // cached images don't fire load sometimes, so we reset src.
1343
- var src = this.src;
1344
- // webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f
1345
- // data uri bypasses webkit log warning (thx doug jones)
1346
- this.src = blank;
1347
- this.src = src;
1348
- });
1349
-
1350
- return $this;
1351
- };
1352
-
1353
-
1354
- // helper function for logging errors
1355
- // jQuery.error breaks jQuery chaining
1356
- var logError = function( message ) {
1357
- if ( window.console ) {
1358
- window.console.error( message );
1359
- }
1360
- };
1361
-
1362
- // ======================= Plugin bridge ===============================
1363
- // leverages data method to either create or return jQuery.Isotope constructor
1364
- // A bit from jQuery UI
1365
- // https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.widget.js
1366
- // A bit from jcarousel
1367
- // https://github.com/jsor/jcarousel/blob/master/lib/jquery.jcarousel.js
1368
-
1369
- jQuery.fn.isotope = function( options, callback ) {
1370
- if ( typeof options === 'string' ) {
1371
- // call method
1372
- var args = Array.prototype.slice.call( arguments, 1 );
1373
-
1374
- this.each(function(){
1375
- var instance = jQuery.data( this, 'isotope' );
1376
- if ( !instance ) {
1377
- logError( "cannot call methods on isotope prior to initialization; " +
1378
- "attempted to call method '" + options + "'" );
1379
- return;
1380
- }
1381
- if ( !jQuery.isFunction( instance[options] ) || options.charAt(0) === "_" ) {
1382
- logError( "no such method '" + options + "' for isotope instance" );
1383
- return;
1384
- }
1385
- // apply method
1386
- instance[ options ].apply( instance, args );
1387
- });
1388
- } else {
1389
- this.each(function() {
1390
- var instance = jQuery.data( this, 'isotope' );
1391
- if ( instance ) {
1392
- // apply options & init
1393
- instance.option( options );
1394
- instance._init( callback );
1395
- } else {
1396
- // initialize new instance
1397
- jQuery.data( this, 'isotope', new jQuery.Isotope( options, this, callback ) );
1398
- }
1399
- });
1400
- }
1401
- // return jQuery object
1402
- // so plugin methods do not have to
1403
- return this;
1404
- };
1405
-
1406
- })( window, jQuery );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/libraries/isotope/jquery.isotope.min.js DELETED
@@ -1,11 +0,0 @@
1
- /**
2
- * Isotope v1.5.23
3
- * An exquisite jQuery plugin for magical layouts
4
- * http://isotope.metafizzy.co
5
- *
6
- * Commercial use requires one-time license fee
7
- * http://metafizzy.co/#licenses
8
- *
9
- * Copyright 2012 David DeSandro / Metafizzy
10
- */
11
- (function(a,b,c){"use strict";var d=a.document,e=a.Modernizr,f=function(a){return a.charAt(0).toUpperCase()+a.slice(1)},g="Moz Webkit O Ms".split(" "),h=function(a){var b=d.documentElement.style,c;if(typeof b[a]=="string")return a;a=f(a);for(var e=0,h=g.length;e<h;e++){c=g[e]+a;if(typeof b[c]=="string")return c}},i=h("transform"),j=h("transitionProperty"),k={csstransforms:function(){return!!i},csstransforms3d:function(){var a=!!h("perspective");if(a){var c=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),d="@media ("+c.join("transform-3d),(")+"modernizr)",e=b("<style>"+d+"{#modernizr{height:3px}}"+"</style>").appendTo("head"),f=b('<div id="modernizr" />').appendTo("html");a=f.height()===3,f.remove(),e.remove()}return a},csstransitions:function(){return!!j}},l;if(e)for(l in k)e.hasOwnProperty(l)||e.addTest(l,k[l]);else{e=a.Modernizr={_version:"1.6ish: miniModernizr for Isotope"};var m=" ",n;for(l in k)n=k[l](),e[l]=n,m+=" "+(n?"":"no-")+l;b("html").addClass(m)}if(e.csstransforms){var o=e.csstransforms3d?{translate:function(a){return"translate3d("+a[0]+"px, "+a[1]+"px, 0) "},scale:function(a){return"scale3d("+a+", "+a+", 1) "}}:{translate:function(a){return"translate("+a[0]+"px, "+a[1]+"px) "},scale:function(a){return"scale("+a+") "}},p=function(a,c,d){var e=b.data(a,"isoTransform")||{},f={},g,h={},j;f[c]=d,b.extend(e,f);for(g in e)j=e[g],h[g]=o[g](j);var k=h.translate||"",l=h.scale||"",m=k+l;b.data(a,"isoTransform",e),a.style[i]=m};b.cssNumber.scale=!0,b.cssHooks.scale={set:function(a,b){p(a,"scale",b)},get:function(a,c){var d=b.data(a,"isoTransform");return d&&d.scale?d.scale:1}},b.fx.step.scale=function(a){b.cssHooks.scale.set(a.elem,a.now+a.unit)},b.cssNumber.translate=!0,b.cssHooks.translate={set:function(a,b){p(a,"translate",b)},get:function(a,c){var d=b.data(a,"isoTransform");return d&&d.translate?d.translate:[0,0]}}}var q,r;e.csstransitions&&(q={WebkitTransitionProperty:"webkitTransitionEnd",MozTransitionProperty:"transitionend",OTransitionProperty:"oTransitionEnd otransitionend",transitionProperty:"transitionend"}[j],r=h("transitionDuration"));var s=b.event,t;s.special.smartresize={setup:function(){b(this).bind("resize",s.special.smartresize.handler)},teardown:function(){b(this).unbind("resize",s.special.smartresize.handler)},handler:function(a,b){var c=this,d=arguments;a.type="smartresize",t&&clearTimeout(t),t=setTimeout(function(){jQuery.event.handle.apply(c,d)},b==="execAsap"?0:100)}},b.fn.smartresize=function(a){return a?this.bind("smartresize",a):this.trigger("smartresize",["execAsap"])},b.Isotope=function(a,c,d){this.element=b(c),this._create(a),this._init(d)};var u=["width","height"],v=b(a);b.Isotope.settings={resizable:!0,layoutMode:"masonry",containerClass:"isotope",itemClass:"isotope-item",hiddenClass:"isotope-hidden",hiddenStyle:{opacity:0,scale:.001},visibleStyle:{opacity:1,scale:1},containerStyle:{position:"relative",overflow:"hidden"},animationEngine:"best-available",animationOptions:{queue:!1,duration:800},sortBy:"original-order",sortAscending:!0,resizesContainer:!0,transformsEnabled:!0,itemPositionDataEnabled:!1},b.Isotope.prototype={_create:function(a){this.options=b.extend({},b.Isotope.settings,a),this.styleQueue=[],this.elemCount=0;var c=this.element[0].style;this.originalStyle={};var d=u.slice(0);for(var e in this.options.containerStyle)d.push(e);for(var f=0,g=d.length;f<g;f++)e=d[f],this.originalStyle[e]=c[e]||"";this.element.css(this.options.containerStyle),this._updateAnimationEngine(),this._updateUsingTransforms();var h={"original-order":function(a,b){return b.elemCount++,b.elemCount},random:function(){return Math.random()}};this.options.getSortData=b.extend(this.options.getSortData,h),this.reloadItems(),this.offset={left:parseInt(this.element.css("padding-left")||0,10),top:parseInt(this.element.css("padding-top")||0,10)};var i=this;setTimeout(function(){i.element.addClass(i.options.containerClass)},0),this.options.resizable&&v.bind("smartresize.isotope",function(){i.resize()}),this.element.delegate("."+this.options.hiddenClass,"click",function(){return!1})},_getAtoms:function(a){var b=this.options.itemSelector,c=b?a.filter(b).add(a.find(b)):a,d={position:"absolute"};return c=c.filter(function(a,b){return b.nodeType===1}),this.usingTransforms&&(d.left=0,d.top=0),c.css(d).addClass(this.options.itemClass),this.updateSortData(c,!0),c},_init:function(a){this.$filteredAtoms=this._filter(this.$allAtoms),this._sort(),this.reLayout(a)},option:function(a){if(b.isPlainObject(a)){this.options=b.extend(!0,this.options,a);var c;for(var d in a)c="_update"+f(d),this[c]&&this[c]()}},_updateAnimationEngine:function(){var a=this.options.animationEngine.toLowerCase().replace(/[ _\-]/g,""),b;switch(a){case"css":case"none":b=!1;break;case"jquery":b=!0;break;default:b=!e.csstransitions}this.isUsingJQueryAnimation=b,this._updateUsingTransforms()},_updateTransformsEnabled:function(){this._updateUsingTransforms()},_updateUsingTransforms:function(){var a=this.usingTransforms=this.options.transformsEnabled&&e.csstransforms&&e.csstransitions&&!this.isUsingJQueryAnimation;a||(delete this.options.hiddenStyle.scale,delete this.options.visibleStyle.scale),this.getPositionStyles=a?this._translate:this._positionAbs},_filter:function(a){var b=this.options.filter===""?"*":this.options.filter;if(!b)return a;var c=this.options.hiddenClass,d="."+c,e=a.filter(d),f=e;if(b!=="*"){f=e.filter(b);var g=a.not(d).not(b).addClass(c);this.styleQueue.push({$el:g,style:this.options.hiddenStyle})}return this.styleQueue.push({$el:f,style:this.options.visibleStyle}),f.removeClass(c),a.filter(b)},updateSortData:function(a,c){var d=this,e=this.options.getSortData,f,g;a.each(function(){f=b(this),g={};for(var a in e)!c&&a==="original-order"?g[a]=b.data(this,"isotope-sort-data")[a]:g[a]=e[a](f,d);b.data(this,"isotope-sort-data",g)})},_sort:function(){var a=this.options.sortBy,b=this._getSorter,c=this.options.sortAscending?1:-1,d=function(d,e){var f=b(d,a),g=b(e,a);return f===g&&a!=="original-order"&&(f=b(d,"original-order"),g=b(e,"original-order")),(f>g?1:f<g?-1:0)*c};this.$filteredAtoms.sort(d)},_getSorter:function(a,c){return b.data(a,"isotope-sort-data")[c]},_translate:function(a,b){return{translate:[a,b]}},_positionAbs:function(a,b){return{left:a,top:b}},_pushPosition:function(a,b,c){b=Math.round(b+this.offset.left),c=Math.round(c+this.offset.top);var d=this.getPositionStyles(b,c);this.styleQueue.push({$el:a,style:d}),this.options.itemPositionDataEnabled&&a.data("isotope-item-position",{x:b,y:c})},layout:function(a,b){var c=this.options.layoutMode;this["_"+c+"Layout"](a);if(this.options.resizesContainer){var d=this["_"+c+"GetContainerSize"]();this.styleQueue.push({$el:this.element,style:d})}this._processStyleQueue(a,b),this.isLaidOut=!0},_processStyleQueue:function(a,c){var d=this.isLaidOut?this.isUsingJQueryAnimation?"animate":"css":"css",f=this.options.animationOptions,g=this.options.onLayout,h,i,j,k;i=function(a,b){b.$el[d](b.style,f)};if(this._isInserting&&this.isUsingJQueryAnimation)i=function(a,b){h=b.$el.hasClass("no-transition")?"css":d,b.$el[h](b.style,f)};else if(c||g||f.complete){var l=!1,m=[c,g,f.complete],n=this;j=!0,k=function(){if(l)return;var b;for(var c=0,d=m.length;c<d;c++)b=m[c],typeof b=="function"&&b.call(n.element,a,n);l=!0};if(this.isUsingJQueryAnimation&&d==="animate")f.complete=k,j=!1;else if(e.csstransitions){var o=0,p=this.styleQueue[0],s=p&&p.$el,t;while(!s||!s.length){t=this.styleQueue[o++];if(!t)return;s=t.$el}var u=parseFloat(getComputedStyle(s[0])[r]);u>0&&(i=function(a,b){b.$el[d](b.style,f).one(q,k)},j=!1)}}b.each(this.styleQueue,i),j&&k(),this.styleQueue=[]},resize:function(){this["_"+this.options.layoutMode+"ResizeChanged"]()&&this.reLayout()},reLayout:function(a){this["_"+this.options.layoutMode+"Reset"](),this.layout(this.$filteredAtoms,a)},addItems:function(a,b){var c=this._getAtoms(a);this.$allAtoms=this.$allAtoms.add(c),b&&b(c)},insert:function(a,b){this.element.append(a);var c=this;this.addItems(a,function(a){var d=c._filter(a);c._addHideAppended(d),c._sort(),c.reLayout(),c._revealAppended(d,b)})},appended:function(a,b){var c=this;this.addItems(a,function(a){c._addHideAppended(a),c.layout(a),c._revealAppended(a,b)})},_addHideAppended:function(a){this.$filteredAtoms=this.$filteredAtoms.add(a),a.addClass("no-transition"),this._isInserting=!0,this.styleQueue.push({$el:a,style:this.options.hiddenStyle})},_revealAppended:function(a,b){var c=this;setTimeout(function(){a.removeClass("no-transition"),c.styleQueue.push({$el:a,style:c.options.visibleStyle}),c._isInserting=!1,c._processStyleQueue(a,b)},10)},reloadItems:function(){this.$allAtoms=this._getAtoms(this.element.children())},remove:function(a,b){this.$allAtoms=this.$allAtoms.not(a),this.$filteredAtoms=this.$filteredAtoms.not(a);var c=this,d=function(){a.remove(),b&&b.call(c.element)};a.filter(":not(."+this.options.hiddenClass+")").length?(this.styleQueue.push({$el:a,style:this.options.hiddenStyle}),this._sort(),this.reLayout(d)):d()},shuffle:function(a){this.updateSortData(this.$allAtoms),this.options.sortBy="random",this._sort(),this.reLayout(a)},destroy:function(){var a=this.usingTransforms,b=this.options;this.$allAtoms.removeClass(b.hiddenClass+" "+b.itemClass).each(function(){var b=this.style;b.position="",b.top="",b.left="",b.opacity="",a&&(b[i]="")});var c=this.element[0].style;for(var d in this.originalStyle)c[d]=this.originalStyle[d];this.element.unbind(".isotope").undelegate("."+b.hiddenClass,"click").removeClass(b.containerClass).removeData("isotope"),v.unbind(".isotope")},_getSegments:function(a){var b=this.options.layoutMode,c=a?"rowHeight":"columnWidth",d=a?"height":"width",e=a?"rows":"cols",g=this.element[d](),h,i=this.options[b]&&this.options[b][c]||this.$filteredAtoms["outer"+f(d)](!0)||g;h=Math.floor(g/i),h=Math.max(h,1),this[b][e]=h,this[b][c]=i},_checkIfSegmentsChanged:function(a){var b=this.options.layoutMode,c=a?"rows":"cols",d=this[b][c];return this._getSegments(a),this[b][c]!==d},_masonryReset:function(){this.masonry={},this._getSegments();var a=this.masonry.cols;this.masonry.colYs=[];while(a--)this.masonry.colYs.push(0)},_masonryLayout:function(a){var c=this,d=c.masonry;a.each(function(){var a=b(this),e=Math.ceil(a.outerWidth(!0)/d.columnWidth);e=Math.min(e,d.cols);if(e===1)c._masonryPlaceBrick(a,d.colYs);else{var f=d.cols+1-e,g=[],h,i;for(i=0;i<f;i++)h=d.colYs.slice(i,i+e),g[i]=Math.max.apply(Math,h);c._masonryPlaceBrick(a,g)}})},_masonryPlaceBrick:function(a,b){var c=Math.min.apply(Math,b),d=0;for(var e=0,f=b.length;e<f;e++)if(b[e]===c){d=e;break}var g=this.masonry.columnWidth*d,h=c;this._pushPosition(a,g,h);var i=c+a.outerHeight(!0),j=this.masonry.cols+1-f;for(e=0;e<j;e++)this.masonry.colYs[d+e]=i},_masonryGetContainerSize:function(){var a=Math.max.apply(Math,this.masonry.colYs);return{height:a}},_masonryResizeChanged:function(){return this._checkIfSegmentsChanged()},_fitRowsReset:function(){this.fitRows={x:0,y:0,height:0}},_fitRowsLayout:function(a){var c=this,d=this.element.width(),e=this.fitRows;a.each(function(){var a=b(this),f=a.outerWidth(!0),g=a.outerHeight(!0);e.x!==0&&f+e.x>d&&(e.x=0,e.y=e.height),c._pushPosition(a,e.x,e.y),e.height=Math.max(e.y+g,e.height),e.x+=f})},_fitRowsGetContainerSize:function(){return{height:this.fitRows.height}},_fitRowsResizeChanged:function(){return!0},_cellsByRowReset:function(){this.cellsByRow={index:0},this._getSegments(),this._getSegments(!0)},_cellsByRowLayout:function(a){var c=this,d=this.cellsByRow;a.each(function(){var a=b(this),e=d.index%d.cols,f=Math.floor(d.index/d.cols),g=(e+.5)*d.columnWidth-a.outerWidth(!0)/2,h=(f+.5)*d.rowHeight-a.outerHeight(!0)/2;c._pushPosition(a,g,h),d.index++})},_cellsByRowGetContainerSize:function(){return{height:Math.ceil(this.$filteredAtoms.length/this.cellsByRow.cols)*this.cellsByRow.rowHeight+this.offset.top}},_cellsByRowResizeChanged:function(){return this._checkIfSegmentsChanged()},_straightDownReset:function(){this.straightDown={y:0}},_straightDownLayout:function(a){var c=this;a.each(function(a){var d=b(this);c._pushPosition(d,0,c.straightDown.y),c.straightDown.y+=d.outerHeight(!0)})},_straightDownGetContainerSize:function(){return{height:this.straightDown.y}},_straightDownResizeChanged:function(){return!0},_masonryHorizontalReset:function(){this.masonryHorizontal={},this._getSegments(!0);var a=this.masonryHorizontal.rows;this.masonryHorizontal.rowXs=[];while(a--)this.masonryHorizontal.rowXs.push(0)},_masonryHorizontalLayout:function(a){var c=this,d=c.masonryHorizontal;a.each(function(){var a=b(this),e=Math.ceil(a.outerHeight(!0)/d.rowHeight);e=Math.min(e,d.rows);if(e===1)c._masonryHorizontalPlaceBrick(a,d.rowXs);else{var f=d.rows+1-e,g=[],h,i;for(i=0;i<f;i++)h=d.rowXs.slice(i,i+e),g[i]=Math.max.apply(Math,h);c._masonryHorizontalPlaceBrick(a,g)}})},_masonryHorizontalPlaceBrick:function(a,b){var c=Math.min.apply(Math,b),d=0;for(var e=0,f=b.length;e<f;e++)if(b[e]===c){d=e;break}var g=c,h=this.masonryHorizontal.rowHeight*d;this._pushPosition(a,g,h);var i=c+a.outerWidth(!0),j=this.masonryHorizontal.rows+1-f;for(e=0;e<j;e++)this.masonryHorizontal.rowXs[d+e]=i},_masonryHorizontalGetContainerSize:function(){var a=Math.max.apply(Math,this.masonryHorizontal.rowXs);return{width:a}},_masonryHorizontalResizeChanged:function(){return this._checkIfSegmentsChanged(!0)},_fitColumnsReset:function(){this.fitColumns={x:0,y:0,width:0}},_fitColumnsLayout:function(a){var c=this,d=this.element.height(),e=this.fitColumns;a.each(function(){var a=b(this),f=a.outerWidth(!0),g=a.outerHeight(!0);e.y!==0&&g+e.y>d&&(e.x=e.width,e.y=0),c._pushPosition(a,e.x,e.y),e.width=Math.max(e.x+f,e.width),e.y+=g})},_fitColumnsGetContainerSize:function(){return{width:this.fitColumns.width}},_fitColumnsResizeChanged:function(){return!0},_cellsByColumnReset:function(){this.cellsByColumn={index:0},this._getSegments(),this._getSegments(!0)},_cellsByColumnLayout:function(a){var c=this,d=this.cellsByColumn;a.each(function(){var a=b(this),e=Math.floor(d.index/d.rows),f=d.index%d.rows,g=(e+.5)*d.columnWidth-a.outerWidth(!0)/2,h=(f+.5)*d.rowHeight-a.outerHeight(!0)/2;c._pushPosition(a,g,h),d.index++})},_cellsByColumnGetContainerSize:function(){return{width:Math.ceil(this.$filteredAtoms.length/this.cellsByColumn.rows)*this.cellsByColumn.columnWidth}},_cellsByColumnResizeChanged:function(){return this._checkIfSegmentsChanged(!0)},_straightAcrossReset:function(){this.straightAcross={x:0}},_straightAcrossLayout:function(a){var c=this;a.each(function(a){var d=b(this);c._pushPosition(d,c.straightAcross.x,0),c.straightAcross.x+=d.outerWidth(!0)})},_straightAcrossGetContainerSize:function(){return{width:this.straightAcross.x}},_straightAcrossResizeChanged:function(){return!0}},b.fn.imagesLoaded=function(a){function h(){a.call(c,d)}function i(a){var c=a.target;c.src!==f&&b.inArray(c,g)===-1&&(g.push(c),--e<=0&&(setTimeout(h),d.unbind(".imagesLoaded",i)))}var c=this,d=c.find("img").add(c.filter("img")),e=d.length,f="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",g=[];return e||h(),d.bind("load.imagesLoaded error.imagesLoaded",i).each(function(){var a=this.src;this.src=f,this.src=a}),c};var w=function(b){a.console&&a.console.error(b)};b.fn.isotope=function(a,c){if(typeof a=="string"){var d=Array.prototype.slice.call(arguments,1);this.each(function(){var c=b.data(this,"isotope");if(!c){w("cannot call methods on isotope prior to initialization; attempted to call method '"+a+"'");return}if(!b.isFunction(c[a])||a.charAt(0)==="_"){w("no such method '"+a+"' for isotope instance");return}c[a].apply(c,d)})}else this.each(function(){var d=b.data(this,"isotope");d?(d.option(a),d._init(c)):b.data(this,"isotope",new b.Isotope(a,this,c))});return this}})(window,jQuery);
 
 
 
 
 
 
 
 
 
 
 
js/libraries/isotope/js/fake-element.js DELETED
@@ -1,38 +0,0 @@
1
- var fakeElement = {};
2
-
3
- fakeElement.constanants = 'b c d f g k l m n p q r s t v x z'.split(' ');
4
- fakeElement.vowels = 'a e i o u y'.split(' ');
5
- fakeElement.categories = 'alkali alkaline-earth lanthanoid actinoid transition post-transition'.split(' ');
6
- fakeElement.suffices = 'on ium ogen'.split(' ');
7
-
8
- fakeElement.getRandom = function( property ) {
9
- var values = fakeElement[ property ];
10
- return values[ Math.floor( Math.random() * values.length ) ];
11
- };
12
-
13
- fakeElement.create = function() {
14
- var widthClass = Math.random()*10 > 6 ? 'width2' : 'width1';
15
- heightClass = Math.random()*10 > 6 ? 'height2' : 'height1';
16
- category = fakeElement.getRandom('categories');
17
- className = 'element fake metal ' + category + ' ' + widthClass + ' ' + heightClass;
18
- letter1 = fakeElement.getRandom('constanants').toUpperCase();
19
- letter2 = fakeElement.getRandom('constanants');
20
- symbol = letter1 + letter2;
21
- name = letter1 + fakeElement.getRandom('vowels') + letter2 + fakeElement.getRandom('vowels') + fakeElement.getRandom('constanants') + fakeElement.getRandom('suffices');
22
- number = ~~( 21 + Math.random() * 100 );
23
- weight = ~~( number * 2 + Math.random() * 15 );
24
-
25
- return '<div class="' + className + '" data-symbol="' + symbol +
26
- '" data-category="' + category + '"><p class="number">' + number +
27
- '</p><h3 class="symbol">' + symbol + '</h3><h2 class="name">' + name +
28
- '</h2><p class="weight">' + weight + '</p></div>';
29
- };
30
-
31
- fakeElement.getGroup = function() {
32
- var i = Math.ceil( Math.random()*3 + 1 ),
33
- newEls = '';
34
- while ( i-- ) {
35
- newEls += fakeElement.create();
36
- }
37
- return newEls;
38
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/libraries/isotope/js/jquery-1.7.1.min.js DELETED
@@ -1,4 +0,0 @@
1
- /*! jQuery v1.7.1 jquery.com | jquery.org/license */
2
- (function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
3
- f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
4
- {for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
 
 
 
 
js/libraries/isotope/js/jquery.ba-bbq.min.js DELETED
@@ -1,18 +0,0 @@
1
- /*
2
- * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
3
- * http://benalman.com/projects/jquery-bbq-plugin/
4
- *
5
- * Copyright (c) 2010 "Cowboy" Ben Alman
6
- * Dual licensed under the MIT and GPL licenses.
7
- * http://benalman.com/about/license/
8
- */
9
- (function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this);
10
- /*
11
- * jQuery hashchange event - v1.2 - 2/11/2010
12
- * http://benalman.com/projects/jquery-hashchange-plugin/
13
- *
14
- * Copyright (c) 2010 "Cowboy" Ben Alman
15
- * Dual licensed under the MIT and GPL licenses.
16
- * http://benalman.com/about/license/
17
- */
18
- (function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/libraries/isotope/js/jquery.infinitescroll.min.js DELETED
@@ -1,47 +0,0 @@
1
- /*
2
- --------------------------------
3
- Infinite Scroll
4
- --------------------------------
5
- + https://github.com/paulirish/infinitescroll
6
- + version 2.0b2.110713
7
- + Copyright 2011 Paul Irish & Luke Shumard
8
- + Licensed under the MIT license
9
-
10
- + Documentation: http://infinite-scroll.com/
11
-
12
- */
13
-
14
- (function(window,$,undefined){$.infinitescroll=function infscr(options,callback,element){this.element=$(element);this._create(options,callback);};$.infinitescroll.defaults={loading:{finished:undefined,finishedMsg:"<em>Congratulations, you've reached the end of the internet.</em>",img:"http://www.infinite-scroll.com/loading.gif",msg:null,msgText:"<em>Loading the next set of posts...</em>",selector:null,speed:'fast',start:undefined},state:{isDuringAjax:false,isInvalidPage:false,isDestroyed:false,isDone:false,isPaused:false,currPage:1},callback:undefined,debug:false,behavior:undefined,binder:$(window),nextSelector:"div.navigation a:first",navSelector:"div.navigation",contentSelector:null,extraScrollPx:150,itemSelector:"div.post",animate:false,pathParse:undefined,dataType:'html',appendCallback:true,bufferPx:40,errorCallback:function(){},infid:0,pixelsFromNavToBottom:undefined,path:undefined};$.infinitescroll.prototype={_binding:function infscr_binding(binding){var instance=this,opts=instance.options;if(!!opts.behavior&&this['_binding_'+opts.behavior]!==undefined){this['_binding_'+opts.behavior].call(this);return;}
15
- if(binding!=='bind'&&binding!=='unbind'){this._debug('Binding value '+binding+' not valid')
16
- return false;}
17
- if(binding=='unbind'){(this.options.binder).unbind('smartscroll.infscr.'+instance.options.infid);}else{(this.options.binder)[binding]('smartscroll.infscr.'+instance.options.infid,function(){instance.scroll();});};this._debug('Binding',binding);},_create:function infscr_create(options,callback){if(!this._validate(options)){return false;}
18
- var opts=this.options=$.extend(true,{},$.infinitescroll.defaults,options),relurl=/(.*?\/\/).*?(\/.*)/,path=$(opts.nextSelector).attr('href');opts.contentSelector=opts.contentSelector||this.element;opts.loading.selector=opts.loading.selector||opts.contentSelector;if(!path){this._debug('Navigation selector not found');return;}
19
- opts.path=this._determinepath(path);opts.loading.msg=$('<div id="infscr-loading"><img alt="Loading..." src="'+opts.loading.img+'" /><div>'+opts.loading.msgText+'</div></div>');(new Image()).src=opts.loading.img;opts.pixelsFromNavToBottom=$(document).height()-$(opts.navSelector).offset().top;opts.loading.start=opts.loading.start||function(){$(opts.navSelector).hide();opts.loading.msg.appendTo(opts.loading.selector).show(opts.loading.speed,function(){beginAjax(opts);});};opts.loading.finished=opts.loading.finished||function(){opts.loading.msg.fadeOut('normal');};opts.callback=function(instance,data){if(!!opts.behavior&&instance['_callback_'+opts.behavior]!==undefined){instance['_callback_'+opts.behavior].call($(opts.contentSelector)[0],data);}
20
- if(callback){callback.call($(opts.contentSelector)[0],data);}};this._setup();},_debug:function infscr_debug(){if(this.options.debug){return window.console&&console.log.call(console,arguments);}},_determinepath:function infscr_determinepath(path){var opts=this.options;if(!!opts.behavior&&this['_determinepath_'+opts.behavior]!==undefined){this['_determinepath_'+opts.behavior].call(this,path);return;}
21
- if(!!opts.pathParse){this._debug('pathParse manual');return opts.pathParse;}else if(path.match(/^(.*?)\b2\b(.*?$)/)){path=path.match(/^(.*?)\b2\b(.*?$)/).slice(1);}else if(path.match(/^(.*?)2(.*?$)/)){if(path.match(/^(.*?page=)2(\/.*|$)/)){path=path.match(/^(.*?page=)2(\/.*|$)/).slice(1);return path;}
22
- path=path.match(/^(.*?)2(.*?$)/).slice(1);}else{if(path.match(/^(.*?page=)1(\/.*|$)/)){path=path.match(/^(.*?page=)1(\/.*|$)/).slice(1);return path;}else{this._debug('Sorry, we couldn\'t parse your Next (Previous Posts) URL. Verify your the css selector points to the correct A tag. If you still get this error: yell, scream, and kindly ask for help at infinite-scroll.com.');opts.state.isInvalidPage=true;}}
23
- this._debug('determinePath',path);return path;},_error:function infscr_error(xhr){var opts=this.options;if(!!opts.behavior&&this['_error_'+opts.behavior]!==undefined){this['_error_'+opts.behavior].call(this,xhr);return;}
24
- if(xhr!=='destroy'&&xhr!=='end'){xhr='unknown';}
25
- this._debug('Error',xhr);if(xhr=='end'){this._showdonemsg();}
26
- opts.state.isDone=true;opts.state.currPage=1;opts.state.isPaused=false;this._binding('unbind');},_loadcallback:function infscr_loadcallback(box,data){var opts=this.options,callback=this.options.callback,result=(opts.state.isDone)?'done':(!opts.appendCallback)?'no-append':'append',frag;if(!!opts.behavior&&this['_loadcallback_'+opts.behavior]!==undefined){this['_loadcallback_'+opts.behavior].call(this,box,data);return;}
27
- switch(result){case'done':this._showdonemsg();return false;break;case'no-append':if(opts.dataType=='html'){data='<div>'+data+'</div>';data=$(data).find(opts.itemSelector);};break;case'append':var children=box.children();if(children.length==0){return this._error('end');}
28
- frag=document.createDocumentFragment();while(box[0].firstChild){frag.appendChild(box[0].firstChild);}
29
- this._debug('contentSelector',$(opts.contentSelector)[0])
30
- $(opts.contentSelector)[0].appendChild(frag);data=children.get();break;}
31
- opts.loading.finished.call($(opts.contentSelector)[0],opts)
32
- if(opts.animate){var scrollTo=$(window).scrollTop()+$('#infscr-loading').height()+opts.extraScrollPx+'px';$('html,body').animate({scrollTop:scrollTo},800,function(){opts.state.isDuringAjax=false;});}
33
- if(!opts.animate)opts.state.isDuringAjax=false;callback(this,data);},_nearbottom:function infscr_nearbottom(){var opts=this.options,pixelsFromWindowBottomToBottom=0+$(document).height()-(opts.binder.scrollTop())-$(window).height();if(!!opts.behavior&&this['_nearbottom_'+opts.behavior]!==undefined){this['_nearbottom_'+opts.behavior].call(this);return;}
34
- this._debug('math:',pixelsFromWindowBottomToBottom,opts.pixelsFromNavToBottom);return(pixelsFromWindowBottomToBottom-opts.bufferPx<opts.pixelsFromNavToBottom);},_pausing:function infscr_pausing(pause){var opts=this.options;if(!!opts.behavior&&this['_pausing_'+opts.behavior]!==undefined){this['_pausing_'+opts.behavior].call(this,pause);return;}
35
- if(pause!=='pause'&&pause!=='resume'&&pause!==null){this._debug('Invalid argument. Toggling pause value instead');};pause=(pause&&(pause=='pause'||pause=='resume'))?pause:'toggle';switch(pause){case'pause':opts.state.isPaused=true;break;case'resume':opts.state.isPaused=false;break;case'toggle':opts.state.isPaused=!opts.state.isPaused;break;}
36
- this._debug('Paused',opts.state.isPaused);return false;},_setup:function infscr_setup(){var opts=this.options;if(!!opts.behavior&&this['_setup_'+opts.behavior]!==undefined){this['_setup_'+opts.behavior].call(this);return;}
37
- this._binding('bind');return false;},_showdonemsg:function infscr_showdonemsg(){var opts=this.options;if(!!opts.behavior&&this['_showdonemsg_'+opts.behavior]!==undefined){this['_showdonemsg_'+opts.behavior].call(this);return;}
38
- opts.loading.msg.find('img').hide().parent().find('div').html(opts.loading.finishedMsg).animate({opacity:1},2000,function(){$(this).parent().fadeOut('normal');});opts.errorCallback.call($(opts.contentSelector)[0],'done');},_validate:function infscr_validate(opts){for(var key in opts){if(key.indexOf&&key.indexOf('Selector')>-1&&$(opts[key]).length===0){this._debug('Your '+key+' found no elements.');return false;}
39
- return true;}},bind:function infscr_bind(){this._binding('bind');},destroy:function infscr_destroy(){this.options.state.isDestroyed=true;return this._error('destroy');},pause:function infscr_pause(){this._pausing('pause');},resume:function infscr_resume(){this._pausing('resume');},retrieve:function infscr_retrieve(pageNum){var instance=this,opts=instance.options,path=opts.path,box,frag,desturl,method,condition,pageNum=pageNum||null,getPage=(!!pageNum)?pageNum:opts.state.currPage;beginAjax=function infscr_ajax(opts){opts.state.currPage++;instance._debug('heading into ajax',path);box=$(opts.contentSelector).is('table')?$('<tbody/>'):$('<div/>');desturl=path.join(opts.state.currPage);method=(opts.dataType=='html'||opts.dataType=='json')?opts.dataType:'html+callback';if(opts.appendCallback&&opts.dataType=='html')method+='+callback'
40
- switch(method){case'html+callback':instance._debug('Using HTML via .load() method');box.load(desturl+' '+opts.itemSelector,null,function infscr_ajax_callback(responseText){instance._loadcallback(box,responseText);});break;case'html':case'json':instance._debug('Using '+(method.toUpperCase())+' via $.ajax() method');$.ajax({url:desturl,dataType:opts.dataType,complete:function infscr_ajax_callback(jqXHR,textStatus){condition=(typeof(jqXHR.isResolved)!=='undefined')?(jqXHR.isResolved()):(textStatus==="success"||textStatus==="notmodified");(condition)?instance._loadcallback(box,jqXHR.responseText):instance._error('end');}});break;}};if(!!opts.behavior&&this['retrieve_'+opts.behavior]!==undefined){this['retrieve_'+opts.behavior].call(this,pageNum);return;}
41
- if(opts.state.isDestroyed){this._debug('Instance is destroyed');return false;};opts.state.isDuringAjax=true;opts.loading.start.call($(opts.contentSelector)[0],opts);},scroll:function infscr_scroll(){var opts=this.options,state=opts.state;if(!!opts.behavior&&this['scroll_'+opts.behavior]!==undefined){this['scroll_'+opts.behavior].call(this);return;}
42
- if(state.isDuringAjax||state.isInvalidPage||state.isDone||state.isDestroyed||state.isPaused)return;if(!this._nearbottom())return;this.retrieve();},toggle:function infscr_toggle(){this._pausing();},unbind:function infscr_unbind(){this._binding('unbind');},update:function infscr_options(key){if($.isPlainObject(key)){this.options=$.extend(true,this.options,key);}}}
43
- $.fn.infinitescroll=function infscr_init(options,callback){var thisCall=typeof options;switch(thisCall){case'string':var args=Array.prototype.slice.call(arguments,1);this.each(function(){var instance=$.data(this,'infinitescroll');if(!instance){return false;}
44
- if(!$.isFunction(instance[options])||options.charAt(0)==="_"){return false;}
45
- instance[options].apply(instance,args);});break;case'object':this.each(function(){var instance=$.data(this,'infinitescroll');if(instance){instance.update(options);}else{$.data(this,'infinitescroll',new $.infinitescroll(options,callback,this));}});break;}
46
- return this;};var event=$.event,scrollTimeout;event.special.smartscroll={setup:function(){$(this).bind("scroll",event.special.smartscroll.handler);},teardown:function(){$(this).unbind("scroll",event.special.smartscroll.handler);},handler:function(event,execAsap){var context=this,args=arguments;event.type="smartscroll";if(scrollTimeout){clearTimeout(scrollTimeout);}
47
- scrollTimeout=setTimeout(function(){$.event.handle.apply(context,args);},execAsap==="execAsap"?0:100);}};$.fn.smartscroll=function(fn){return fn?this.bind("smartscroll",fn):this.trigger("smartscroll",["execAsap"]);};})(window,jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/libraries/isotope/js/make-big-graph-projects.js DELETED
@@ -1,43 +0,0 @@
1
- var programs = 'commercial urbanism public-space culture body-culture health education housing hotel media'.split(' '),
2
- programsLen = programs.length,
3
- statuses = 'idea in-progress under-construction completed'.split(' '),
4
- statusesLen = statuses.length;
5
-
6
- function randInt(num) {
7
- return Math.floor( Math.random() * num );
8
- }
9
-
10
- function getChar() {
11
- var code;
12
- if ( Math.random() < 0.05 ) {
13
- // number
14
- code = randInt(10) + 48;
15
- } else {
16
- // alpha
17
- code = randInt(24) + 65;
18
- }
19
- return String.fromCharCode(code);
20
- }
21
-
22
- function makeBigGraphProject() {
23
- var year = 2001 + randInt(11),
24
- i = Math.floor( Math.random() * 2 + 3 ),
25
- title = '';
26
- while (i--) {
27
- title += getChar();
28
- }
29
- var program = programs[ randInt( programsLen ) ];
30
- status = statuses[ randInt( statusesLen ) ];
31
- scale = randInt(20);
32
-
33
- project = '<div class="project ' + program + '" ' +
34
- 'data-year="' + year + '" ' +
35
- 'data-program="' + program + '" ' +
36
- 'data-scale="' + scale + '" ' +
37
- 'data-status="' + status + '" ' +
38
- '><div class="icon"></div>' +
39
- '<p class="title">' + title + '</p>' +
40
- '</div>';
41
-
42
- return project;
43
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/libraries/jquery-datepicker/picker_functions.js CHANGED
@@ -1,5 +1,7 @@
1
  jQuery(document).ready(function ($) {
2
 
 
 
3
  jQuery('.time-picker').timepicker({ 'timeFormat': 'H:i' });
4
 
5
  if ($('.current_lander .new-date').length) { // implies *not* zero
@@ -12,24 +14,34 @@ jQuery(document).ready(function ($) {
12
  var current_val = '';
13
  }
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
 
16
- var ret = current_val.split(" ");
17
- var current_date = ret[0];
18
- var current_time = ret[1];
19
- jQuery(".jquery-date-picker .date.start").val(current_date);
20
- jQuery(".jquery-date-picker .time-picker").val(current_time);
21
-
22
- jQuery('.lp_select_template').live('click', function() {
23
- var template = jQuery(this).attr('id');
24
- jQuery("#date-picker-"+template).val(current_date).addClass("live_date");
25
- jQuery("#time-picker-"+template).val(current_time).addClass("live_time");
26
  });
27
 
28
- jQuery("body").on('change', '.jquery-date-picker .date.start, .jquery-date-picker .time-picker', function () {
29
- var date_chosen = jQuery(".jquery-date-picker .date.start").val();
30
- var time_chosen = jQuery(".jquery-date-picker .time-picker").val();
 
 
 
31
  var total_time = date_chosen + " " + time_chosen;
32
- jQuery(".new-date").val(total_time);
33
 
34
  });
35
 
1
  jQuery(document).ready(function ($) {
2
 
3
+ /* Populates timepicker values */
4
+
5
  jQuery('.time-picker').timepicker({ 'timeFormat': 'H:i' });
6
 
7
  if ($('.current_lander .new-date').length) { // implies *not* zero
14
  var current_val = '';
15
  }
16
 
17
+ jQuery('.new-date').each(function(){
18
+ var the_val = $(this).val();
19
+ if (typeof (the_val) == "undefined" || the_val === null || the_val == "") {
20
+ var the_val = '';
21
+ }
22
+ var ret = the_val.split(" ");
23
+ var current_date = ret[0];
24
+ var current_time = ret[1];
25
+ jQuery(this).parent().parent().find(".date.start").val(current_date);
26
+ jQuery(this).parent().parent().find(".time-picker").val(current_time);
27
+ });
28
+
29
+ jQuery("body").on('change', '.jquery-date-picker .date.start', function () {
30
+ var date_chosen = jQuery(this).val();
31
+ var time_chosen = jQuery(this).parent().parent().find(".jquery-date-picker .time-picker").val();
32
+ var total_time = date_chosen + " " + time_chosen;
33
+ jQuery(this).parent().parent().find(".new-date").val(total_time);
34
 
 
 
 
 
 
 
 
 
 
 
35
  });
36
 
37
+ jQuery("body").on('change', '.jquery-date-picker .time-picker', function () {
38
+ var date_chosen = jQuery(this).parent().parent().find(".jquery-date-picker .date.start").val();
39
+ var time_chosen = jQuery(this).val();
40
+ if (typeof (time_chosen) === "undefined" && time_chosen == null && time_chosen === "") {
41
+ var time_chosen = "00:00";
42
+ }
43
  var total_time = date_chosen + " " + time_chosen;
44
+ jQuery(this).parent().find(".new-date").val(total_time);
45
 
46
  });
47
 
landing-pages.php CHANGED
@@ -3,14 +3,14 @@
3
  Plugin Name: Landing Pages
4
  Plugin URI: http://www.inboundnow.com/landing-pages/
5
  Description: The first true all-in-one Landing Page solution for WordPress, including ongoing conversion metrics, a/b split testing, unlimited design options and so much more!
6
- Version: 1.4.5
7
- Author: David Wells, Hudson Atwell
8
  Author URI: http://www.inboundnow.com/
9
  Text Domain: landing-pages
10
  Domain Path: shared/languages/landing-pages/
11
  */
12
 
13
- define('LANDINGPAGES_CURRENT_VERSION', '1.4.5' );
14
  define('LANDINGPAGES_URLPATH', WP_PLUGIN_URL.'/'.plugin_basename( dirname(__FILE__) ).'/' );
15
  define('LANDINGPAGES_PATH', WP_PLUGIN_DIR.'/'.plugin_basename( dirname(__FILE__) ).'/' );
16
  define('LANDINGPAGES_PLUGIN_SLUG', plugin_basename( dirname(__FILE__) ) );
@@ -82,18 +82,33 @@ switch (is_admin()) :
82
  BREAK;
83
  endswitch;
84
 
85
- /* Singleton Shared Class Loads */
86
- include_once('shared/inbound-shortcodes/inbound-shortcodes.php'); // Shared Shortcodes
87
- include_once('shared/classes/menu.class.php'); // Inbound Marketing Menu
88
- include_once('shared/classes/feedback.class.php'); // Inbound Feedback Form
89
 
90
  /* Inbound Core Shared Files. Lead files take presidence */
91
- add_action( 'plugins_loaded', 'inbound_load_shared_landing_pages' );
92
  function inbound_load_shared_landing_pages(){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  include_once('shared/tracking/store.lead.php'); // Lead Storage from landing pages
94
  include_once('shared/classes/form.class.php'); // Mirrored forms
 
95
  include_once('shared/inboundnow/inboundnow.extension-licensing.php'); // Inboundnow Package Licensing
96
  include_once('shared/inboundnow/inboundnow.extension-updating.php'); // Inboundnow Package Updating
 
 
 
97
  }
98
 
99
  /* lagacy - Conditional check LP active */
3
  Plugin Name: Landing Pages
4
  Plugin URI: http://www.inboundnow.com/landing-pages/
5
  Description: The first true all-in-one Landing Page solution for WordPress, including ongoing conversion metrics, a/b split testing, unlimited design options and so much more!
6
+ Version: 1.4.6
7
+ Author: Inbound Now
8
  Author URI: http://www.inboundnow.com/
9
  Text Domain: landing-pages
10
  Domain Path: shared/languages/landing-pages/
11
  */
12
 
13
+ define('LANDINGPAGES_CURRENT_VERSION', '1.4.6' );
14
  define('LANDINGPAGES_URLPATH', WP_PLUGIN_URL.'/'.plugin_basename( dirname(__FILE__) ).'/' );
15
  define('LANDINGPAGES_PATH', WP_PLUGIN_DIR.'/'.plugin_basename( dirname(__FILE__) ).'/' );
16
  define('LANDINGPAGES_PLUGIN_SLUG', plugin_basename( dirname(__FILE__) ) );
82
  BREAK;
83
  endswitch;
84
 
85
+
 
 
 
86
 
87
  /* Inbound Core Shared Files. Lead files take presidence */
88
+ add_action( 'plugins_loaded', 'inbound_load_shared_landing_pages' , 11 );
89
  function inbound_load_shared_landing_pages(){
90
+
91
+ /* Check if Shared Files Already Loaded */
92
+ if (defined('INBOUDNOW_SHARED'))
93
+ return;
94
+
95
+ /* Define Shared Constant for Load Prevention*/
96
+ define('INBOUDNOW_SHARED','loaded');
97
+
98
+ /* Singleton Shared Class Loads */
99
+ include_once('shared/inbound-shortcodes/inbound-shortcodes.php'); // Shared Shortcodes
100
+ include_once('shared/classes/menu.class.php'); // Inbound Marketing Menu
101
+ include_once('shared/classes/feedback.class.php'); // Inbound Feedback Form
102
+ include_once('shared/classes/debug.class.php'); // Inbound Debug & Scripts Class
103
+ include_once('shared/classes/compatibility.class.php'); // Inbound Compatibility Class
104
  include_once('shared/tracking/store.lead.php'); // Lead Storage from landing pages
105
  include_once('shared/classes/form.class.php'); // Mirrored forms
106
+ include_once('shared/inboundnow/inboundnow.extend.php'); // Legacy
107
  include_once('shared/inboundnow/inboundnow.extension-licensing.php'); // Inboundnow Package Licensing
108
  include_once('shared/inboundnow/inboundnow.extension-updating.php'); // Inboundnow Package Updating
109
+ include_once('shared/inboundnow/inboundnow.global-settings.php'); // Inboundnow Global Settings
110
+
111
+
112
  }
113
 
114
  /* lagacy - Conditional check LP active */
libraries/library.shareme.php CHANGED
@@ -1 +1 @@
1
- <?php
1
+ <?php
modules/module.activate.php CHANGED
@@ -25,7 +25,7 @@ function landing_page_activate($wp = '3.6', $php = '5.3', $cta = '1.2.1', $leads
25
  $flag = __('WordPress Calls to Action' , LANDINGPAGES_TEXT_DOMAIN);
26
  wp_die( __('<p>The <strong>WordPress Landing Pages</strong> plugin requires '.$flag.' version '.$cta.' or greater. <br><br>Please Update WordPress Call to Action Plugin to update & install WordPress Landing Pages</p>' , LANDINGPAGES_TEXT_DOMAIN) , __('Plugin Activation Error' , LANDINGPAGES_TEXT_DOMAIN) , array( 'response'=>200, 'back_link'=>TRUE ) );
27
  }
28
- elseif (defined('LEADS_CURRENT_VERSION') && version_compare( LEADS_CURRENT_VERSION, $leads, '<' ))
29
  {
30
  $flag = 'WordPress Leads';
31
  wp_die( __('<p>The <strong>WordPress Landing Pages</strong> plugin requires '.$flag.' version '.$leads.' or greater. <br><br>Please Update WordPress Leads Plugin to update & install WordPress Landing Pages</p>' , INBOUDNOW_LABEL ) , __( 'Plugin Activation Error' , LANDINGPAGES_TEXT_DOMAIN) , array( 'response'=>200, 'back_link'=>TRUE ) );
25
  $flag = __('WordPress Calls to Action' , LANDINGPAGES_TEXT_DOMAIN);
26
  wp_die( __('<p>The <strong>WordPress Landing Pages</strong> plugin requires '.$flag.' version '.$cta.' or greater. <br><br>Please Update WordPress Call to Action Plugin to update & install WordPress Landing Pages</p>' , LANDINGPAGES_TEXT_DOMAIN) , __('Plugin Activation Error' , LANDINGPAGES_TEXT_DOMAIN) , array( 'response'=>200, 'back_link'=>TRUE ) );
27
  }
28
+ elseif (defined('WPL_CURRENT_VERSION') && version_compare( WPL_CURRENT_VERSION, $leads, '<' ))
29
  {
30
  $flag = 'WordPress Leads';
31
  wp_die( __('<p>The <strong>WordPress Landing Pages</strong> plugin requires '.$flag.' version '.$leads.' or greater. <br><br>Please Update WordPress Leads Plugin to update & install WordPress Landing Pages</p>' , INBOUDNOW_LABEL ) , __( 'Plugin Activation Error' , LANDINGPAGES_TEXT_DOMAIN) , array( 'response'=>200, 'back_link'=>TRUE ) );
modules/module.clone.php CHANGED
@@ -1 +1 @@
1
- <?php
1
+ <?php
modules/module.extension-licensing.php CHANGED
@@ -20,6 +20,7 @@ class LP_EXTENSION_LICENSE {
20
  private $item_slug;
21
  private $item_shortname;
22
  private $version;
 
23
 
24
  /**
25
  * Class constructor
@@ -37,7 +38,8 @@ class LP_EXTENSION_LICENSE {
37
 
38
  $this->item_label = $_item_label;
39
  $this->item_slug = $_item_slug;
40
-
 
41
  // Setup hooks
42
  $this->hooks();
43
  }
@@ -51,7 +53,7 @@ class LP_EXTENSION_LICENSE {
51
 
52
  private function hooks() {
53
  // Register settings
54
- add_filter( 'lp_define_global_settings', array( $this, 'settings' ), 1 );
55
 
56
  }
57
 
@@ -70,7 +72,7 @@ class LP_EXTENSION_LICENSE {
70
  'label' => sprintf( __( '%1$s', 'lp' ), $this->item_label ),
71
  'description' => 'Head to http://www.inboundnow.com/ to retrieve your license key for Landing Page Customizer for Landing Pages',
72
  'type' => 'license-key',
73
- 'default' => '',
74
  );
75
 
76
  //print_r($lp_global_settings);exit;
20
  private $item_slug;
21
  private $item_shortname;
22
  private $version;
23
+ private $global_license;
24
 
25
  /**
26
  * Class constructor
38
 
39
  $this->item_label = $_item_label;
40
  $this->item_slug = $_item_slug;
41
+ $this->global_license = get_option('inboundnow_master_license_key' , '');
42
+
43
  // Setup hooks
44
  $this->hooks();
45
  }
53
 
54
  private function hooks() {
55
  // Register settings
56
+ add_filter( 'lp_define_global_settings', array( $this, 'settings' ), 2 );
57
 
58
  }
59
 
72
  'label' => sprintf( __( '%1$s', 'lp' ), $this->item_label ),
73
  'description' => 'Head to http://www.inboundnow.com/ to retrieve your license key for Landing Page Customizer for Landing Pages',
74
  'type' => 'license-key',
75
+ 'default' => $this->global_license
76
  );
77
 
78
  //print_r($lp_global_settings);exit;
modules/module.extension-updater.php CHANGED
@@ -22,15 +22,15 @@ class LP_EXTENSION_UPDATER {
22
  * @uses hook()
23
  *
24
  * @param string $_api_url The URL pointing to the custom API endpoint.
25
- * @param string $_plugin_file Path to the plugin file.
26
  * @param array $_api_data Optional data to send with API calls.
27
  * @return void
28
  */
29
- function __construct( $_api_url, $_plugin_file, $_api_data = null ) {
30
  $this->api_url = trailingslashit( $_api_url );
31
  $this->api_data = urlencode_deep( $_api_data );
32
- $this->name = plugin_basename( $_plugin_file );
33
- $this->slug = basename( $_plugin_file, '.php');
34
  $this->version = $_api_data['version'];
35
 
36
  // Set up hooks.
@@ -47,8 +47,8 @@ class LP_EXTENSION_UPDATER {
47
  private function hook() {
48
  //update_option('_site_transient_update_plugins',''); //uncomment to force upload update check
49
  add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'pre_set_site_transient_update_plugins_filter' ) );
50
- add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3);
51
- //echo 1; exit;
52
  }
53
 
54
  /**
@@ -143,7 +143,6 @@ class LP_EXTENSION_UPDATER {
143
  'license' => $data['license'],
144
  'name' => $data['item_name'],
145
  'slug' => $this->slug,
146
- //'author' => $data['author'],
147
  'nature' => 'extension',
148
  );
149
  $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
22
  * @uses hook()
23
  *
24
  * @param string $_api_url The URL pointing to the custom API endpoint.
25
+ * @param string $_remote_key permalink slug of remote download
26
  * @param array $_api_data Optional data to send with API calls.
27
  * @return void
28
  */
29
+ function __construct( $_api_url, $_remote_key, $_api_data = null ) {
30
  $this->api_url = trailingslashit( $_api_url );
31
  $this->api_data = urlencode_deep( $_api_data );
32
+ $this->name = plugin_basename( $_remote_key );
33
+ $this->slug = basename( $_remote_key, '.php');
34
  $this->version = $_api_data['version'];
35
 
36
  // Set up hooks.
47
  private function hook() {
48
  //update_option('_site_transient_update_plugins',''); //uncomment to force upload update check
49
  add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'pre_set_site_transient_update_plugins_filter' ) );
50
+ add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3);
51
+ //print_r($this);exit;
52
  }
53
 
54
  /**
143
  'license' => $data['license'],
144
  'name' => $data['item_name'],
145
  'slug' => $this->slug,
 
146
  'nature' => 'extension',
147
  );
148
  $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
modules/module.global-settings.php CHANGED
@@ -76,7 +76,15 @@ function lp_get_global_settings()
76
  'type' => 'textarea',
77
  'default' => '<button><script><textarea><style><input><form><select><label><a><p><b><u><strong><i><img><strong><span><font><h1><h2><h3><center><blockquote><embed><object><small>',
78
  'options' => null
79
- )
 
 
 
 
 
 
 
 
80
  );
81
 
82
 
@@ -112,8 +120,9 @@ function lp_get_global_settings()
112
  return $lp_global_settings;
113
  }
114
 
 
115
  /* Add Extensions License Key Header if Extensions are present */
116
- add_filter('lp_define_global_settings', 'lp_add_extension_license_key_header',1,1);
117
  function lp_add_extension_license_key_header($lp_global_settings)
118
  {
119
  if (array_key_exists('lp-license-keys',$lp_global_settings))
@@ -122,7 +131,7 @@ function lp_add_extension_license_key_header($lp_global_settings)
122
  'id' => 'extensions-license-keys-header',
123
  'description' => __( "Head to http://www.inboundnow.com/ to retrieve your license key for this template." , LANDINGPAGES_TEXT_DOMAIN),
124
  'type' => 'header',
125
- 'default' => '<h3 class="lp_global_settings_header">'. __( 'Extension License Keys' , LANDINGPAGES_TEXT_DOMAIN) .'</h3>'
126
  );
127
  }
128
 
@@ -228,7 +237,8 @@ function lp_display_global_settings()
228
  $active_tab = $_REQUEST['open-tab'];
229
  }
230
 
231
- //echo $active_tab;exit;
 
232
 
233
  lp_display_global_settings_js();
234
  lp_save_global_settings();
@@ -243,7 +253,7 @@ function lp_display_global_settings()
243
  }
244
 
245
  echo "</h2><div class='lp-settings-tab-sidebar'>";
246
- echo $test;
247
  echo "<div class='lp-sidebar-settings'><h2 style='font-size:16px;'>Like the Plugin? Leave us a review</h2><center><a class='review-button' href='http://wordpress.org/support/view/plugin-reviews/landing-pages?rate=5#postform' target='_blank'>Leave a Quick Review</a></center><small>Reviews help constantly improve the plugin & keep us motivated! <strong>Thank you for your support!</strong></small></div><div class='lp-sidebar-settings'><h2>Help keep the plugin up to date, awesome & free!</h2><form action='https://www.paypal.com/cgi-bin/webscr' method='post' target='_top'>
248
  <input type='hidden' name='cmd' value='_s-xclick'>
249
  <input type='hidden' name='hosted_button_id' value='GKQ2BR3RKB3YQ'>
@@ -577,10 +587,10 @@ function lp_save_global_settings()
577
  (isset($_POST[$field['id'] ]))? $field['new_value'] = $_POST[$field['id'] ] : $field['new_value'] = null;
578
 
579
 
580
- if ((isset($field['new_value']) && ($field['new_value'] !== $field['old_value'] ) )|| !isset($field['old_value']) )
581
  {
582
  //echo $field['id'] ;exit;
583
- $bool = update_option($field['id'] ,$field['new_value']);
584
  if ($field['id'] =='main-landing-page-permalink-prefix')
585
  {
586
  //echo "here";
@@ -601,7 +611,7 @@ function lp_save_global_settings()
601
 
602
  // Call the custom API.
603
  $response = wp_remote_get( add_query_arg( $api_params, LANDINGPAGES_STORE_URL ), array( 'timeout' => 30, 'sslverify' => false ) );
604
- //echo $response['body'];exit;
605
 
606
  // make sure the response came back okay
607
  if ( is_wp_error( $response ) )
@@ -617,26 +627,38 @@ function lp_save_global_settings()
617
  //echo 'lp_license_status-'.$field['slug']." :".$license_data->license;exit;
618
  }
619
  }
620
- elseif (!$field['new_value'] && $field['old_value'])
621
  {
622
- //echo "here: $key <br>";
623
- $bool = delete_option($field['id'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
624
  }
625
  else
626
  {
627
- //print_r($field);
628
- if ($field['type']=='license-key'&& $field['new_value'] )
629
- {
630
 
 
 
631
  $license_status = get_option('lp_license_status-'.$field['slug']);
632
 
633
  if ($license_status=='valid' && $field['new_value'] == $field['old_value'])
634
- {
635
  continue;
636
- }
637
 
638
- // retrieve the license from the database
639
- $license = trim( get_option( 'edd_sample_license_key' ) );
640
 
641
  // data to send in our API request
642
  $api_params = array(
@@ -648,8 +670,13 @@ function lp_save_global_settings()
648
 
649
  // Call the custom API.
650
  $response = wp_remote_get( add_query_arg( $api_params, LANDINGPAGES_STORE_URL ), array( 'timeout' => 30, 'sslverify' => false ) );
651
- //echo $field['slug'];
652
- //echo "<br>";
 
 
 
 
 
653
 
654
  // make sure the response came back okay
655
  if ( is_wp_error( $response ) )
@@ -677,6 +704,8 @@ function lp_render_global_settings($key,$custom_fields,$active_tab)
677
  if (!$custom_fields)
678
  return;
679
 
 
 
680
  if ($key==$active_tab)
681
  {
682
  $display = 'block';
@@ -705,6 +734,7 @@ function lp_render_global_settings($key,$custom_fields,$active_tab)
705
  else
706
  {
707
  $default = null;
 
708
  }
709
 
710
  $field['id'] = $key."-".$field['id'];
@@ -735,41 +765,56 @@ function lp_render_global_settings($key,$custom_fields,$active_tab)
735
  }
736
  echo '<input type="text" class="jpicker" name="'.$field['id'] .'" id="'.$field['id'] .'" value="'.$field['value'].'" size="5" />
737
  <div class="lp_tooltip tool_color" title="'.$field['description'].'"></div>';
738
- break;
739
  case 'datepicker':
740
  echo '<input id="datepicker-example2" class="Zebra_DatePicker_Icon" type="text" name="'.$field['id'] .'" id="'.$field['id'] .'" value="'.$field['value'].'" size="8" />
741
  <div class="lp_tooltip tool_date" title="'.$field['description'].'"></div><p class="description">'.$field['description'].'</p>';
742
- break;
743
  case 'license-key':
 
 
 
 
 
 
 
 
 
 
 
744
  $license_status = lp_check_license_status($field);
745
 
746
- echo '<input type="hidden" name="lp_license_status-'.$field['slug'].'" id="'.$field['id'] .'" value="'.$license_status.'" size="30" />
747
- <input type="text" name="'.$field['id'] .'" id="'.$field['id'] .'" value="'.$field['value'].'" size="30" />
748
- <div class="lp_tooltip tool_text" title="'.$field['description'].'"></div>';
 
749
 
750
  if ($license_status=='valid')
751
  {
752
- echo '<div class="lp_license_status_valid">Valid</div>';
753
  }
754
  else
755
  {
756
- echo '<div class="lp_license_status_invalid">Invalid</div>';
757
  }
758
- break;
 
 
 
759
  case 'text':
760
  echo '<input type="text" name="'.$field['id'] .'" id="'.$field['id'] .'" value="'.$field['value'].'" size="30" />
761
  <div class="lp_tooltip tool_text" title="'.$field['description'].'"></div>';
762
- break;
763
  // textarea
764
  case 'textarea':
765
  echo '<textarea name="'.$field['id'] .'" id="'.$field['id'] .'" cols="106" rows="6">'.$field['value'].'</textarea>
766
  <div class="lp_tooltip tool_textarea" title="'.$field['description'].'"></div>';
767
- break;
768
  // wysiwyg
769
  case 'wysiwyg':
770
  wp_editor( $field['value'], $field['id'] , $settings = array() );
771
  echo '<span class="description">'.$field['description'].'</span><br><br>';
772
- break;
773
  // media
774
  case 'media':
775
  //echo 1; exit;
@@ -777,7 +822,7 @@ function lp_render_global_settings($key,$custom_fields,$active_tab)
777
  echo '<input name="'.$field['id'] .'" id="'.$field['id'] .'" type="text" size="36" name="upload_image" value="'.$field['value'].'" />';
778
  echo '<input class="upload_image_button" id="uploader_'.$field['id'] .'" type="button" value="Upload Image" />';
779
  echo '<br /><div class="lp_tooltip tool_media" title="'.$field['description'].'"></div>';
780
- break;
781
  // checkbox
782
  case 'checkbox':
783
  $i = 1;
@@ -802,7 +847,7 @@ function lp_render_global_settings($key,$custom_fields,$active_tab)
802
  }
803
  echo "</table>";
804
  echo '<br><div class="lp_tooltip tool_checkbox" title="'.$field['description'].'"></div>';
805
- break;
806
  // radio
807
  case 'radio':
808
  foreach ($field['options'] as $value=>$label) {
@@ -812,7 +857,7 @@ function lp_render_global_settings($key,$custom_fields,$active_tab)
812
  echo '<label for="'.$value.'">&nbsp;&nbsp;'.$label.'</label> &nbsp;&nbsp;&nbsp;&nbsp;';
813
  }
814
  echo '<div class="lp_tooltip tool_radio" title="'.$field['description'].'"></div>';
815
- break;
816
  // select
817
  case 'dropdown':
818
  echo '<select name="'.$field['id'] .'" id="'.$field['id'] .'">';
@@ -820,12 +865,12 @@ function lp_render_global_settings($key,$custom_fields,$active_tab)
820
  echo '<option', $field['value'] == $value ? ' selected="selected"' : '', ' value="'.$value.'">'.$label.'</option>';
821
  }
822
  echo '</select><br /><div class="lp_tooltip tool_dropdown" title="'.$field['description'].'"></div>';
823
- break;
824
  case 'html':
825
  //print_r($field);
826
  echo $field['value'];
827
  echo '<br /><div class="lp_tooltip tool_dropdown" title="'.$field['description'].'"></div>';
828
- break;
829
 
830
 
831
 
@@ -851,14 +896,12 @@ function lp_check_license_status($field)
851
  return "valid";
852
  }
853
 
854
- $license_key = get_option($field['id']);
855
-
856
- if ($license_key)
857
  {
858
  $api_params = array(
859
  'edd_action' => 'check_license',
860
- 'license' => $license_key,
861
- 'key' => $license_key,
862
  'item_name' => urlencode( $field['slug'] ),
863
  'cache_bust'=> substr(md5(rand()),0,7)
864
  );
@@ -871,10 +914,8 @@ function lp_check_license_status($field)
871
 
872
  $license_data = json_decode( wp_remote_retrieve_body( $response ) );
873
 
874
- //var_dump($license_data);exit;
875
-
876
  if( $license_data->license == 'valid' ) {
877
- $newDate = date('Y-m-d', strtotime("+15 days"));
878
  update_option($field['id']."-expire", $newDate);
879
  return 'valid';
880
  // this license is still valid
76
  'type' => 'textarea',
77
  'default' => '<button><script><textarea><style><input><form><select><label><a><p><b><u><strong><i><img><strong><span><font><h1><h2><h3><center><blockquote><embed><object><small>',
78
  'options' => null
79
+ ),
80
+ array(
81
+ 'id' => 'inbound_compatibility_mode',
82
+ 'label' => 'Turn on compability mode',
83
+ 'description' => "<p>This option turns on compability mode for the inbound now plugins. This is typically used if you are experiencing bugs caused by third party plugin conflicts.</p>",
84
+ 'type' => 'radio',
85
+ 'default' => '0',
86
+ 'options' => array('1'=>'On','0'=>'Off')
87
+ ),
88
  );
89
 
90
 
120
  return $lp_global_settings;
121
  }
122
 
123
+
124
  /* Add Extensions License Key Header if Extensions are present */
125
+ add_filter('lp_define_global_settings', 'lp_add_extension_license_key_header', 2, 1);
126
  function lp_add_extension_license_key_header($lp_global_settings)
127
  {
128
  if (array_key_exists('lp-license-keys',$lp_global_settings))
131
  'id' => 'extensions-license-keys-header',
132
  'description' => __( "Head to http://www.inboundnow.com/ to retrieve your license key for this template." , LANDINGPAGES_TEXT_DOMAIN),
133
  'type' => 'header',
134
+ 'default' => '<h3 class="lp_global_settings_header">'. __( 'Extension Licensing' , LANDINGPAGES_TEXT_DOMAIN) .'</h3>'
135
  );
136
  }
137
 
237
  $active_tab = $_REQUEST['open-tab'];
238
  }
239
 
240
+
241
+ do_action('lp_pre_display_global_settings');
242
 
243
  lp_display_global_settings_js();
244
  lp_save_global_settings();
253
  }
254
 
255
  echo "</h2><div class='lp-settings-tab-sidebar'>";
256
+
257
  echo "<div class='lp-sidebar-settings'><h2 style='font-size:16px;'>Like the Plugin? Leave us a review</h2><center><a class='review-button' href='http://wordpress.org/support/view/plugin-reviews/landing-pages?rate=5#postform' target='_blank'>Leave a Quick Review</a></center><small>Reviews help constantly improve the plugin & keep us motivated! <strong>Thank you for your support!</strong></small></div><div class='lp-sidebar-settings'><h2>Help keep the plugin up to date, awesome & free!</h2><form action='https://www.paypal.com/cgi-bin/webscr' method='post' target='_top'>
258
  <input type='hidden' name='cmd' value='_s-xclick'>
259
  <input type='hidden' name='hosted_button_id' value='GKQ2BR3RKB3YQ'>
587
  (isset($_POST[$field['id'] ]))? $field['new_value'] = $_POST[$field['id'] ] : $field['new_value'] = null;
588
 
589
 
590
+ if ((!empty($field['new_value']) && ($field['new_value'] !== $field['old_value'] ) ) || !isset($field['old_value']) )
591
  {
592
  //echo $field['id'] ;exit;
593
+ update_option($field['id'] ,$field['new_value']);
594
  if ($field['id'] =='main-landing-page-permalink-prefix')
595
  {
596
  //echo "here";
611
 
612
  // Call the custom API.
613
  $response = wp_remote_get( add_query_arg( $api_params, LANDINGPAGES_STORE_URL ), array( 'timeout' => 30, 'sslverify' => false ) );
614
+
615
 
616
  // make sure the response came back okay
617
  if ( is_wp_error( $response ) )
627
  //echo 'lp_license_status-'.$field['slug']." :".$license_data->license;exit;
628
  }
629
  }
630
+ else if (!$field['new_value'] && $field['old_value'])
631
  {
632
+ if ($field['type']=='license-key')
633
+ {
634
+ $master_key = get_option('inboundnow_master_license_key' , '');
635
+ if ($master_key)
636
+ {
637
+ $bool = update_option($field['id'], $master_key );
638
+ $license_status = update_option('lp_license_status-'.$field['slug'], $license_data->license);
639
+ }
640
+ else
641
+ {
642
+ update_option($field['id'], '' );
643
+ $license_status = update_option('lp_license_status-'.$field['slug'], $license_data->license);
644
+ }
645
+ }
646
+ else
647
+ {
648
+ $bool = update_option($field['id'],$field['default']);
649
+ }
650
  }
651
  else
652
  {
 
 
 
653
 
654
+ if ($field['type']=='license-key' && $field['new_value'] )
655
+ {
656
  $license_status = get_option('lp_license_status-'.$field['slug']);
657
 
658
  if ($license_status=='valid' && $field['new_value'] == $field['old_value'])
 
659
  continue;
 
660
 
661
+ //echo 'here:'.$license_status;
 
662
 
663
  // data to send in our API request
664
  $api_params = array(
670
 
671
  // Call the custom API.
672
  $response = wp_remote_get( add_query_arg( $api_params, LANDINGPAGES_STORE_URL ), array( 'timeout' => 30, 'sslverify' => false ) );
673
+
674
+ /*
675
+ print_r($field);
676
+ echo '<br>';
677
+ echo $response['body'];
678
+ echo "<hr>";
679
+ */
680
 
681
  // make sure the response came back okay
682
  if ( is_wp_error( $response ) )
704
  if (!$custom_fields)
705
  return;
706
 
707
+ $master_license_key = get_option('inboundnow_master_license_key' , '');
708
+
709
  if ($key==$active_tab)
710
  {
711
  $display = 'block';
734
  else
735
  {
736
  $default = null;
737
+
738
  }
739
 
740
  $field['id'] = $key."-".$field['id'];
765
  }
766
  echo '<input type="text" class="jpicker" name="'.$field['id'] .'" id="'.$field['id'] .'" value="'.$field['value'].'" size="5" />
767
  <div class="lp_tooltip tool_color" title="'.$field['description'].'"></div>';
768
+ continue 2;
769
  case 'datepicker':
770
  echo '<input id="datepicker-example2" class="Zebra_DatePicker_Icon" type="text" name="'.$field['id'] .'" id="'.$field['id'] .'" value="'.$field['value'].'" size="8" />
771
  <div class="lp_tooltip tool_date" title="'.$field['description'].'"></div><p class="description">'.$field['description'].'</p>';
772
+ continue 2;
773
  case 'license-key':
774
+
775
+ if ($master_license_key)
776
+ {
777
+ $field['value'] = $master_license_key;
778
+ $input_type = 'hidden';
779
+ }
780
+ else
781
+ {
782
+ $input_type = 'text';
783
+ }
784
+
785
  $license_status = lp_check_license_status($field);
786
 
787
+ echo '<input type="'.$input_type.'" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$field['value'].'" size="30" />';
788
+
789
+
790
+ echo '<input type="hidden" name="lp_license_status-'.$field['slug'].'" id="'.$field['id'] .'" value="'.$license_status.'" size="30" />';
791
 
792
  if ($license_status=='valid')
793
  {
794
+ echo '<div class="lp_license_status_valid">Enabled</div>';
795
  }
796
  else
797
  {
798
+ echo '<div class="lp_license_status_invalid">Disabled</div>';
799
  }
800
+
801
+ echo '<div class="lp_tooltip tool_text" title="'.$field['description'].'"></div>';
802
+
803
+ continue 2;
804
  case 'text':
805
  echo '<input type="text" name="'.$field['id'] .'" id="'.$field['id'] .'" value="'.$field['value'].'" size="30" />
806
  <div class="lp_tooltip tool_text" title="'.$field['description'].'"></div>';
807
+ continue 2;
808
  // textarea
809
  case 'textarea':
810
  echo '<textarea name="'.$field['id'] .'" id="'.$field['id'] .'" cols="106" rows="6">'.$field['value'].'</textarea>
811
  <div class="lp_tooltip tool_textarea" title="'.$field['description'].'"></div>';
812
+ continue 2;
813
  // wysiwyg
814
  case 'wysiwyg':
815
  wp_editor( $field['value'], $field['id'] , $settings = array() );
816
  echo '<span class="description">'.$field['description'].'</span><br><br>';
817
+ continue 2;
818
  // media
819
  case 'media':
820
  //echo 1; exit;
822
  echo '<input name="'.$field['id'] .'" id="'.$field['id'] .'" type="text" size="36" name="upload_image" value="'.$field['value'].'" />';
823
  echo '<input class="upload_image_button" id="uploader_'.$field['id'] .'" type="button" value="Upload Image" />';
824
  echo '<br /><div class="lp_tooltip tool_media" title="'.$field['description'].'"></div>';
825
+ continue 2;
826
  // checkbox
827
  case 'checkbox':
828
  $i = 1;
847
  }
848
  echo "</table>";
849
  echo '<br><div class="lp_tooltip tool_checkbox" title="'.$field['description'].'"></div>';
850
+ continue 2;
851
  // radio
852
  case 'radio':
853
  foreach ($field['options'] as $value=>$label) {
857
  echo '<label for="'.$value.'">&nbsp;&nbsp;'.$label.'</label> &nbsp;&nbsp;&nbsp;&nbsp;';
858
  }
859
  echo '<div class="lp_tooltip tool_radio" title="'.$field['description'].'"></div>';
860
+ continue 2;
861
  // select
862
  case 'dropdown':
863
  echo '<select name="'.$field['id'] .'" id="'.$field['id'] .'">';
865
  echo '<option', $field['value'] == $value ? ' selected="selected"' : '', ' value="'.$value.'">'.$label.'</option>';
866
  }
867
  echo '</select><br /><div class="lp_tooltip tool_dropdown" title="'.$field['description'].'"></div>';
868
+ continue 2;
869
  case 'html':
870
  //print_r($field);
871
  echo $field['value'];
872
  echo '<br /><div class="lp_tooltip tool_dropdown" title="'.$field['description'].'"></div>';
873
+ continue 2;
874
 
875
 
876
 
896
  return "valid";
897
  }
898
 
899
+ if ($field['value'])
 
 
900
  {
901
  $api_params = array(
902
  'edd_action' => 'check_license',
903
+ 'license' => $field['value'],
904
+ 'key' => $field['value'],
905
  'item_name' => urlencode( $field['slug'] ),
906
  'cache_bust'=> substr(md5(rand()),0,7)
907
  );
914
 
915
  $license_data = json_decode( wp_remote_retrieve_body( $response ) );
916
 
 
 
917
  if( $license_data->license == 'valid' ) {
918
+ $newDate = date('Y-m-d', strtotime($license_data->expires) );
919
  update_option($field['id']."-expire", $newDate);
920
  return 'valid';
921
  // this license is still valid
modules/module.javascript-admin.php CHANGED
@@ -63,9 +63,7 @@ function lp_admin_enqueue($hook)
63
  $params = array('selected_template'=>$template, 'templates'=>$template_data);
64
  wp_localize_script('lp-js-metaboxes', 'data', $params);
65
 
66
- // Isotope sorting
67
- wp_enqueue_script('isotope', LANDINGPAGES_URLPATH . 'js/libraries/isotope/jquery.isotope.js', array('jquery'), '1.0', true );
68
- wp_enqueue_style('isotope', LANDINGPAGES_URLPATH . 'js/libraries/isotope/css/style.css');
69
 
70
  // Conditional TINYMCE for landing pages
71
  wp_dequeue_script('jquery-tinymce');
63
  $params = array('selected_template'=>$template, 'templates'=>$template_data);
64
  wp_localize_script('lp-js-metaboxes', 'data', $params);
65
 
66
+
 
 
67
 
68
  // Conditional TINYMCE for landing pages
69
  wp_dequeue_script('jquery-tinymce');
modules/module.landing-page.php CHANGED
@@ -189,7 +189,11 @@ function lp_conversion_area($post = null, $content=null,$return=false, $doshortc
189
  if(!$return)
190
  {
191
 
 
 
 
192
  echo do_shortcode($content);
 
193
  }
194
  else
195
  {
@@ -208,8 +212,8 @@ function lp_conversion_area_shortcode( $atts, $content = null )
208
  //'style' => ''
209
  ), $atts));
210
 
211
- $conversion_area = "";
212
- $conversion_area .= lp_conversion_area($post = null, $content=null,$return=true, $doshortcode = true, $rebuild_attributes = true);
213
 
214
 
215
  return $conversion_area;
189
  if(!$return)
190
  {
191
 
192
+ $content = str_replace('<p><div id="inbound-form-wrapper"', '<div id="inbound-form-wrapper"', $content);
193
+ $content = preg_replace('/<p[^>]*><\/p[^>]*>/', '', $content); // remove empty p tags
194
+ $content = preg_replace('/<\/p>/', '', $content); // remove last empty p tag
195
  echo do_shortcode($content);
196
+
197
  }
198
  else
199
  {
212
  //'style' => ''
213
  ), $atts));
214
 
215
+
216
+ $conversion_area = lp_conversion_area($post = null, $content=null,$return=true, $doshortcode = true, $rebuild_attributes = true);
217
 
218
 
219
  return $conversion_area;
modules/module.load-extensions.php CHANGED
@@ -1 +1 @@
1
- <?php
2
  * LOAD NATIVE TEMPLATES FROM WP-CONTENT/PLUGINS LANDING-PAGES/TEMPLATES/
3
  */
4
  * LOAD NON-NATIVE TEMPLATES FROM WP-CONTENT/UPLOADS/LANDING-PAGES/TEMPLATES/
5
  */
6
  /**
7
  * DECLARE HELPER FUNCTIONS
8
  */
 
9
  * LOAD NATIVE TEMPLATES FROM WP-CONTENT/PLUGINS LANDING-PAGES/TEMPLATES/
10
  */
11
  * LOAD NON-NATIVE TEMPLATES FROM WP-CONTENT/UPLOADS/LANDING-PAGES/TEMPLATES/
12
  */
13
  /**
14
  * DECLARE HELPER FUNCTIONS
15
  */
 
1
  * LOAD NATIVE TEMPLATES FROM WP-CONTENT/PLUGINS LANDING-PAGES/TEMPLATES/
2
  */
3
  * LOAD NON-NATIVE TEMPLATES FROM WP-CONTENT/UPLOADS/LANDING-PAGES/TEMPLATES/
4
  */
5
  /**
6
  * DECLARE HELPER FUNCTIONS
7
  */
8
+ <?php
9
  * LOAD NATIVE TEMPLATES FROM WP-CONTENT/PLUGINS LANDING-PAGES/TEMPLATES/
10
  */
11
  * LOAD NON-NATIVE TEMPLATES FROM WP-CONTENT/UPLOADS/LANDING-PAGES/TEMPLATES/
12
  */
13
  /**
14
  * DECLARE HELPER FUNCTIONS
15
  */
modules/module.post-type.php CHANGED
@@ -1 +1,529 @@
1
- <?php
2
  $labels = array(
3
  'name' => _x('Landing Pages', 'post type general name' , LANDINGPAGES_TEXT_DOMAIN),
4
  'singular_name' => _x('Landing Page', 'post type singular name' , LANDINGPAGES_TEXT_DOMAIN),
5
  'add_new' => _x('Add New', 'Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
6
  'add_new_item' => __('Add New Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
7
  'edit_item' => __('Edit Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
8
  'new_item' => __('New Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
9
  'view_item' => __('View Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
10
  'search_items' => __('Search Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
11
  'not_found' => __('Nothing found' , LANDINGPAGES_TEXT_DOMAIN),
12
  'not_found_in_trash' => __('Nothing found in Trash' , LANDINGPAGES_TEXT_DOMAIN),
13
  'parent_item_colon' => ''
14
  );
15
  $args = array(
16
  'labels' => $labels,
17
  'public' => true,
18
  'publicly_queryable' => true,
19
  'show_ui' => true,
20
  'query_var' => true,
21
  'menu_icon' => LANDINGPAGES_URLPATH . '/images/plus.gif',
22
  'rewrite' => array("slug" => "$slug"),
23
  'with_front' => false,
24
  'capability_type' => 'post',
25
  'hierarchical' => false,
26
  'menu_position' => null,
27
  'supports' => array('title','custom-fields','editor','thumbnail', 'excerpt')
28
  );
29
  register_post_type( 'landing-page' , $args );
30
  $args = array(
31
  'hierarchical' => true,
32
  'label' => __("Categories" , LANDINGPAGES_TEXT_DOMAIN),
33
  'singular_label' => __("Landing Page Category" , LANDINGPAGES_TEXT_DOMAIN),
34
  'show_ui' => true,
35
  'query_var' => true,
36
  );
37
  register_taxonomy('landing_page_category', array('landing-page'), $args);
38
  // Set category transient for use in other areas
39
  $terms = get_terms('landing_page_category', array('hide_empty' => false));
40
  $lp_cats = get_transient( 'landing-page-cats' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  $labels = array(
2
  'name' => _x('Landing Pages', 'post type general name' , LANDINGPAGES_TEXT_DOMAIN),
3
  'singular_name' => _x('Landing Page', 'post type singular name' , LANDINGPAGES_TEXT_DOMAIN),
4
  'add_new' => _x('Add New', 'Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
5
  'add_new_item' => __('Add New Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
6
  'edit_item' => __('Edit Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
7
  'new_item' => __('New Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
8
  'view_item' => __('View Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
9
  'search_items' => __('Search Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
10
  'not_found' => __('Nothing found' , LANDINGPAGES_TEXT_DOMAIN),
11
  'not_found_in_trash' => __('Nothing found in Trash' , LANDINGPAGES_TEXT_DOMAIN),
12
  'parent_item_colon' => ''
13
  );
14
  $args = array(
15
  'labels' => $labels,
16
  'public' => true,
17
  'publicly_queryable' => true,
18
  'show_ui' => true,
19
  'query_var' => true,
20
  'menu_icon' => LANDINGPAGES_URLPATH . '/images/plus.gif',
21
  'rewrite' => array("slug" => "$slug"),
22
  'with_front' => false,
23
  'capability_type' => 'post',
24
  'hierarchical' => false,
25
  'menu_position' => null,
26
  'supports' => array('title','custom-fields','editor','thumbnail', 'excerpt')
27
  );
28
  register_post_type( 'landing-page' , $args );
29
  $args = array(
30
  'hierarchical' => true,
31
  'label' => __("Categories" , LANDINGPAGES_TEXT_DOMAIN),
32
  'singular_label' => __("Landing Page Category" , LANDINGPAGES_TEXT_DOMAIN),
33
  'show_ui' => true,
34
  'query_var' => true,
35
  );
36
  register_taxonomy('landing_page_category', array('landing-page'), $args);
37
  // Set category transient for use in other areas
38
  $terms = get_terms('landing_page_category', array('hide_empty' => false));
39
  $lp_cats = get_transient( 'landing-page-cats' );
40
+ <?php
41
+
42
+ add_action('admin_init', 'lp_rebuild_permalinks');
43
+ function lp_rebuild_permalinks()
44
+ {
45
+ $activation_check = get_option('lp_activate_rewrite_check',0);
46
+
47
+ if ($activation_check)
48
+ {
49
+ global $wp_rewrite;
50
+ $wp_rewrite->flush_rules();
51
+ update_option( 'lp_activate_rewrite_check', '0');
52
+ }
53
+ }
54
+
55
+ add_action('init', 'landing_page_register');
56
+ function landing_page_register() {
57
+
58
+ $slug = get_option( 'lp-main-landing-page-permalink-prefix', 'go' );
59
+ $labels = array(
60
+ 'name' => _x('Landing Pages', 'post type general name' , LANDINGPAGES_TEXT_DOMAIN),
61
+ 'singular_name' => _x('Landing Page', 'post type singular name' , LANDINGPAGES_TEXT_DOMAIN),
62
+ 'add_new' => _x('Add New', 'Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
63
+ 'add_new_item' => __('Add New Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
64
+ 'edit_item' => __('Edit Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
65
+ 'new_item' => __('New Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
66
+ 'view_item' => __('View Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
67
+ 'search_items' => __('Search Landing Page' , LANDINGPAGES_TEXT_DOMAIN),
68
+ 'not_found' => __('Nothing found' , LANDINGPAGES_TEXT_DOMAIN),
69
+ 'not_found_in_trash' => __('Nothing found in Trash' , LANDINGPAGES_TEXT_DOMAIN),
70
+ 'parent_item_colon' => ''
71
+ );
72
+
73
+ $args = array(
74
+ 'labels' => $labels,
75
+ 'public' => true,
76
+ 'publicly_queryable' => true,
77
+ 'show_ui' => true,
78
+ 'query_var' => true,
79
+ 'menu_icon' => LANDINGPAGES_URLPATH . '/images/plus.gif',
80
+ 'rewrite' => array("slug" => "$slug"),
81
+ 'with_front' => false,
82
+ 'capability_type' => 'post',
83
+ 'hierarchical' => false,
84
+ 'menu_position' => null,
85
+ 'supports' => array('title','custom-fields','editor','thumbnail', 'excerpt')
86
+ );
87
+
88
+ register_post_type( 'landing-page' , $args );
89
+
90
+ //flush_rewrite_rules( false );
91
+ }
92
+
93
+ add_action('init', 'landing_page_category_registerTaxonomy');
94
+ function landing_page_category_registerTaxonomy() {
95
+ $args = array(
96
+ 'hierarchical' => true,
97
+ 'label' => __("Categories" , LANDINGPAGES_TEXT_DOMAIN),
98
+ 'singular_label' => __("Landing Page Category" , LANDINGPAGES_TEXT_DOMAIN),
99
+ 'show_ui' => true,
100
+ 'query_var' => true,
101
+ "rewrite" => true
102
+ );
103
+
104
+ register_taxonomy('landing_page_category', array('landing-page'), $args);
105
+ // Set category transient for use in other areas
106
+ $terms = get_terms('landing_page_category', array('hide_empty' => false));
107
+ $lp_cats = get_transient( 'landing-page-cats' );
108
+ if ( false === $lp_cats ) {
109
+ $options_categories = array();
110
+ $options_categories['all'] = __('All Landing Page Categories' , LANDINGPAGES_TEXT_DOMAIN);
111
+ foreach ($terms as $term) {
112
+ $options_categories[$term->term_id] = $term->name;
113
+ }
114
+ set_transient('landing-page-cats', $options_categories, 24 * HOUR_IN_SECONDS);
115
+ }
116
+ }
117
+
118
+
119
+ // Change except box title
120
+ add_action( 'admin_init', 'lp_change_excerpt_to_summary' );
121
+ function lp_change_excerpt_to_summary() {
122
+ $post_type = "landing-page";
123
+ if ( post_type_supports($post_type, 'excerpt') ) {
124
+ add_meta_box('postexcerpt', __('Short Description' , LANDINGPAGES_TEXT_DOMAIN), 'post_excerpt_meta_box', $post_type, 'normal', 'core'); }
125
+ }
126
+
127
+
128
+ /* This piece is for the customizer? I'm not sure - H */
129
+ add_filter('admin_url','lp_add_fullscreen_param');
130
+ function lp_add_fullscreen_param( $link )
131
+ {
132
+ if (isset($_GET['page']))
133
+ return $link;
134
+
135
+ if ( ( isset($post) && 'landing-page' == $post->post_type ) || ( isset($_REQUEST['post_type']) && $_REQUEST['post_type']=='landing-page' ) )
136
+ {
137
+ $params['frontend'] = 'false';
138
+ if(isset($_GET['frontend']) && $_GET['frontend'] == 'true') {
139
+ $params['frontend'] = 'true';
140
+ }
141
+ if(isset($_REQUEST['frontend']) && $_REQUEST['frontend'] == 'true') {
142
+ $params['frontend'] = 'true';
143
+ }
144
+ $link = add_query_arg( $params, $link );
145
+
146
+ }
147
+
148
+ return $link;
149
+ }
150
+
151
+ /*********PREPARE COLUMNS FOR IMPRESSIONS AND CONVERSIONS***************/
152
+ if (is_admin())
153
+ {
154
+
155
+ //include_once(LANDINGPAGES_PATH.'filters/filters.post-type.php');
156
+
157
+ //add_filter('manage_edit-landing-page_sortable_columns', 'lp_column_register_sortable');
158
+ add_filter("manage_edit-landing-page_columns", 'lp_columns');
159
+ add_action("manage_posts_custom_column", "lp_column");
160
+ add_filter('landing-page_orderby','lp_column_orderby', 10, 2);
161
+
162
+ // remove SEO filter
163
+ if ( (isset($_GET['post_type']) && ($_GET['post_type'] == 'landing-page') ) )
164
+ { add_filter( 'wpseo_use_page_analysis', '__return_false' ); }
165
+
166
+ //define columns for landing pages
167
+ function lp_columns($columns)
168
+ {
169
+ $columns = array(
170
+ "cb" => "<input type=\"checkbox\" />",
171
+ //"ID" => "ID",
172
+ "thumbnail-lander" => __( "Preview" , LANDINGPAGES_TEXT_DOMAIN),
173
+ "title" => __( "Landing Page Title" , LANDINGPAGES_TEXT_DOMAIN),
174
+ "stats" => __( "Variation Testing Stats" , LANDINGPAGES_TEXT_DOMAIN),
175
+ "impressions" => __( "Total<br>Visits" , LANDINGPAGES_TEXT_DOMAIN),
176
+ "actions" => __( "Total<br>Conversions" , LANDINGPAGES_TEXT_DOMAIN),
177
+ "cr" => __( "Total<br>Conversion Rate" , LANDINGPAGES_TEXT_DOMAIN)
178
+
179
+ );
180
+ return $columns;
181
+ }
182
+
183
+ function lp_show_stats_list() {
184
+
185
+ global $post;
186
+ $permalink = get_permalink($post->ID);
187
+ $variations = get_post_meta($post->ID, 'lp-ab-variations', true);
188
+ if ($variations)
189
+ {
190
+ $variations = explode(",", $variations);
191
+ $variations = array_filter($variations,'is_numeric');
192
+
193
+ //echo "<b>".$lp_impressions."</b> visits";
194
+ echo "<span class='show-stats button'>Show Variation Stats</span>";
195
+ echo "<ul class='lp-varation-stat-ul'>";
196
+
197
+ $first_status = get_post_meta($post->ID,'lp_ab_variation_status', true); // Current status
198
+ $first_notes = get_post_meta($post->ID,'lp-variation-notes', true);
199
+ $cr_array = array();
200
+ $i = 0;
201
+ $impressions = 0;
202
+ $conversions = 0;
203
+ foreach ($variations as $vid)
204
+ {
205
+ $letter = lp_ab_key_to_letter($vid); // convert to letter
206
+ $each_impression = get_post_meta($post->ID,'lp-ab-variation-impressions-'.$vid, true); // get impressions
207
+ $v_status = get_post_meta($post->ID,'lp_ab_variation_status-'.$vid, true); // Current status
208
+
209
+ if ($i === 0) { $v_status = $first_status; } // get status of first
210
+
211
+ (($v_status === "")) ? $v_status = "1" : $v_status = $v_status; // Get on/off status
212
+
213
+ $each_notes = get_post_meta($post->ID,'lp-variation-notes-'.$vid, true); // Get Notes
214
+
215
+ if ($i === 0) { $each_notes = $first_notes; } // Get first notes
216
+
217
+ $each_conversion = get_post_meta($post->ID,'lp-ab-variation-conversions-'.$vid, true);
218
+ (($each_conversion === "")) ? $final_conversion = 0 : $final_conversion = $each_conversion;
219
+
220
+ $impressions += get_post_meta($post->ID,'lp-ab-variation-impressions-'.$vid, true);
221
+
222
+ $conversions += get_post_meta($post->ID,'lp-ab-variation-conversions-'.$vid, true);
223
+
224
+ if ($each_impression != 0)
225
+ {
226
+ $conversion_rate = $final_conversion / $each_impression;
227
+ }
228
+ else
229
+ {
230
+ $conversion_rate = 0;
231
+ }
232
+
233
+ $conversion_rate = round($conversion_rate,2) * 100;
234
+ $cr_array[] = $conversion_rate;
235
+
236
+ if ($v_status === "0")
237
+ {
238
+ $final_status = __( "(Paused)" , LANDINGPAGES_TEXT_DOMAIN);
239
+ }
240
+ else
241
+ {
242
+ $final_status = "";
243
+ }
244
+ /*if ($cr_array[$i] > $largest) {
245
+ $largest = $cr_array[$i];
246
+ }
247
+ (($largest === $conversion_rate)) ? $winner_class = 'lp-current-winner' : $winner_class = ""; */
248
+ (($final_conversion === "1")) ? $c_text = __( 'conversion' , LANDINGPAGES_TEXT_DOMAIN) : $c_text = __( "conversions" , LANDINGPAGES_TEXT_DOMAIN);
249
+ (($each_impression === "1")) ? $i_text = __( 'visit' , LANDINGPAGES_TEXT_DOMAIN) : $i_text = __( "visits" , LANDINGPAGES_TEXT_DOMAIN);
250
+ (($each_notes === "")) ? $each_notes = __( 'No notes' , LANDINGPAGES_TEXT_DOMAIN) : $each_notes = $each_notes;
251
+ $data_letter = "data-letter=\"".$letter."\"";
252
+ $popup = "data-notes=\"<span class='lp-pop-description'>".$each_notes."</span><span class='lp-pop-controls'><span class='lp-pop-edit button-primary'><a href='/wp-admin/post.php?post=".$post->ID."&lp-variation-id=".$vid."&action=edit'>Edit This variation</a></span><span class='lp-pop-preview button'><a title='Click to Preview this variation' class='thickbox' href='".$permalink."?lp-variation-id=".$vid."&iframe_window=on&post_id=".$post->ID."&TB_iframe=true&width=640&height=703' target='_blank'>Preview This variation</a></span><span class='lp-bottom-controls'><span class='lp-delete-var-stats' data-letter='".$letter."' data-vid='".$vid."' rel='".$post->ID."'>Clear These Stats</span></span></span>\"";
253
+
254
+ echo "<li rel='".$final_status."' data-postid='".$post->ID."' data-letter='".$letter."' data-lp='' class='lp-stat-row-".$vid." ".$post->ID. '-'. $conversion_rate ." status-".$v_status. "'><a ".$popup." ".$data_letter." class='lp-letter' title='click to edit this variation' href='/wp-admin/post.php?post=".$post->ID."&lp-variation-id=".$vid."&action=edit'>" . $letter . "</a><span class='lp-numbers'> <span class='lp-impress-num'>" . $each_impression . "</span><span class='visit-text'>".$i_text." with</span><span class='lp-con-num'>". $final_conversion . "</span> ".$c_text."</span><a ".$popup." ".$data_letter." class='cr-number cr-empty-".$conversion_rate."' href='/wp-admin/post.php?post=".$post->ID."&lp-variation-id=".$vid."&action=edit'>". $conversion_rate . "%</a></li>";
255
+ $i++;
256
+ }
257
+ echo "</ul>";
258
+
259
+ $winning_cr = max($cr_array); // best conversion rate
260
+
261
+ if ($winning_cr != 0) {
262
+ echo "<span class='variation-winner-is'>".$post->ID. "-".$winning_cr."</span>";
263
+ }
264
+ //echo "Total Visits: " . $impressions;
265
+ //echo "Total Conversions: " . $conversions;
266
+ }
267
+ else
268
+ {
269
+ $notes = get_post_meta($post->ID,'lp-variation-notes', true); // Get Notes
270
+ $cr = lp_show_aggregated_stats("cr");
271
+ (($notes === "")) ? $notes = __( 'No notes' , LANDINGPAGES_TEXT_DOMAIN) : $notes = $notes;
272
+ $popup = "data-notes=\"<span class='lp-pop-description'>".$notes."</span><span class='lp-pop-controls'><span class='lp-pop-edit button-primary'><a href='/wp-admin/post.php?post=".$post->ID."&lp-variation-id=0&action=edit'>Edit This variation</a></span><span class='lp-pop-preview button'><a title='Click to Preview this variation' class='thickbox' href='".$permalink."?lp-variation-id=0&iframe_window=on&post_id=".$post->ID."&TB_iframe=true&width=640&height=703' target='_blank'>". __( 'Preview This variation' , LANDINGPAGES_TEXT_DOMAIN) ."</a></span><span class='lp-bottom-controls'><span class='lp-delete-var-stats' data-letter='A' data-vid='0' rel='".$post->ID."'>". __( 'Clear These Stats' , LANDINGPAGES_TEXT_DOMAIN) ."</span></span></span>\"";
273
+
274
+ echo "<ul class='lp-varation-stat-ul'><li rel='' data-postid='".$post->ID."' data-letter='A' data-lp=''><a ".$popup." data-letter=\"A\" class='lp-letter' title='click to edit this variation' href='/wp-admin/post.php?post=".$post->ID."&lp-variation-id=0&action=edit'>A</a><span class='lp-numbers'> <span class='lp-impress-num'>" . lp_show_aggregated_stats("impressions") . "</span><span class='visit-text'>visits with</span><span class='lp-con-num'>". lp_show_aggregated_stats("actions") . "</span> conversions</span><a class='cr-number cr-empty-".$cr."' href='/wp-admin/post.php?post=".$post->ID."&lp-variation-id=0&action=edit'>". $cr . "%</a></li></ul>";
275
+ echo "<div class='no-stats-yet'>". __('No A/B Tests running for this landing page' , LANDINGPAGES_TEXT_DOMAIN).". <a href='/wp-admin/post.php?post=".$post->ID."&lp-variation-id=1&action=edit&new-variation=1&lp-message=go'>". __('Start one' , LANDINGPAGES_TEXT_DOMAIN) ."</a></div>";
276
+
277
+
278
+ }
279
+ }
280
+
281
+ function lp_show_aggregated_stats($type_of_stat)
282
+ {
283
+ global $post;
284
+
285
+ $variations = get_post_meta($post->ID, 'lp-ab-variations', true);
286
+ $variations = explode(",", $variations);
287
+
288
+ $impressions = 0;
289
+ $conversions = 0;
290
+
291
+ foreach ($variations as $vid)
292
+ {
293
+ $each_impression = get_post_meta($post->ID,'lp-ab-variation-impressions-'.$vid, true);
294
+ $each_conversion = get_post_meta($post->ID,'lp-ab-variation-conversions-'.$vid, true);
295
+ (($each_conversion === "")) ? $final_conversion = 0 : $final_conversion = $each_conversion;
296
+ $impressions += get_post_meta($post->ID,'lp-ab-variation-impressions-'.$vid, true);
297
+ $conversions += get_post_meta($post->ID,'lp-ab-variation-conversions-'.$vid, true);
298
+ }
299
+
300
+ if ($type_of_stat === "actions")
301
+ {
302
+ return $conversions;
303
+ }
304
+ if ($type_of_stat === "impressions")
305
+ {
306
+ return $impressions;
307
+ }
308
+ if ($type_of_stat === "cr")
309
+ {
310
+ if ($impressions != 0) {
311
+ $conversion_rate = $conversions / $impressions;
312
+ } else {
313
+ $conversion_rate = 0;
314
+ }
315
+ $conversion_rate = round($conversion_rate,2) * 100;
316
+ return $conversion_rate;
317
+ }
318
+
319
+ }
320
+ //populate collumsn for landing pages
321
+ function lp_column($column)
322
+ {
323
+ global $post;
324
+
325
+ if ($post->post_type!='landing-page')
326
+ return;
327
+
328
+ if ("ID" == $column)
329
+ {
330
+ echo $post->ID;
331
+ }
332
+ else if ("title" == $column)
333
+ {
334
+ }
335
+ else if ("author" == $column)
336
+ {
337
+ }
338
+ else if ("date" == $column)
339
+ {
340
+ }
341
+ else if ("thumbnail-lander" == $column)
342
+ {
343
+ $template = get_post_meta($post->ID, 'lp-selected-template', true);
344
+ $permalink = get_permalink($post->ID);
345
+ $datetime = the_modified_date('YmjH',null,null,false);
346
+ $permalink = $permalink = $permalink.'?dt='.$datetime;
347
+ $thumbnail = 'http://s.wordpress.com/mshots/v1/' . urlencode(esc_url($permalink)) . '?w=140';
348
+ if (in_array($_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1'))) {
349
+ $thumbnail = LANDINGPAGES_URLPATH . '/images/localhost.png';
350
+ }
351
+ echo "<a title='".__('Click to Preview this variation' , LANDINGPAGES_TEXT_DOMAIN) ."' class='thickbox' href='".$permalink."?lp-variation-id=0&iframe_window=on&post_id=".$post->ID."&TB_iframe=true&width=640&height=703' target='_blank'><img src=".$thumbnail."' style='width:150px;height:110px;' title='Click to Preview'></a>";
352
+
353
+ }
354
+ else if ('cr' == $column)
355
+ {
356
+ $lp_impressions = lp_get_page_views($post->ID);
357
+ $lp_conversions = lp_get_conversions($post->ID);
358
+ if ($lp_conversions>0){
359
+ $lp_cr = round(($lp_conversions/$lp_impressions), 2);
360
+ } else {
361
+ $lp_cr = "0.0";
362
+ }
363
+ }
364
+ else if ("stats" == $column)
365
+ {
366
+ $lp_impressions = lp_get_page_views($post->ID);
367
+ $lp_impressions = apply_filters('lp_col_impressions',$lp_impressions);
368
+
369
+ lp_show_stats_list();
370
+
371
+
372
+ }
373
+ else if ("impressions" == $column)
374
+ {
375
+ echo lp_show_aggregated_stats("impressions");
376
+
377
+ }
378
+ else if ("actions" == $column)
379
+ {
380
+ echo lp_show_aggregated_stats("actions");
381
+ }
382
+ else if ("cr" == $column)
383
+ {
384
+ echo lp_show_aggregated_stats("cr") . "%";
385
+ }
386
+ else if ("template" == $column) {
387
+ $template_used = get_post_meta($post->ID, 'lp-selected-template', true);
388
+ echo $template_used;
389
+ }
390
+ }
391
+
392
+ // Add category sort to landing page list
393
+ function lp_taxonomy_filter_restrict_manage_posts()
394
+ {
395
+ global $typenow;
396
+
397
+ if ($typenow === "landing-page") {
398
+ $post_types = get_post_types( array( '_builtin' => false ) );
399
+ if ( in_array( $typenow, $post_types ) ) {
400
+ $filters = get_object_taxonomies( $typenow );
401
+
402
+ foreach ( $filters as $tax_slug ) {
403
+ $tax_obj = get_taxonomy( $tax_slug );
404
+ (isset($_GET[$tax_slug])) ? $current = $_GET[$tax_slug] : $current = 0;
405
+ wp_dropdown_categories( array(
406
+ 'show_option_all' => __('Show All '.$tax_obj->label ),
407
+ 'taxonomy' => $tax_slug,
408
+ 'name' => $tax_obj->name,
409
+ 'orderby' => 'name',
410
+ 'selected' => $current,
411
+ 'hierarchical' => $tax_obj->hierarchical,
412
+ 'show_count' => false,
413
+ 'hide_empty' => true
414
+ ) );
415
+ }
416
+ }
417
+ }
418
+ }
419
+
420
+ add_action( 'restrict_manage_posts', 'lp_taxonomy_filter_restrict_manage_posts' );
421
+ function convert_landing_page_category_id_to_taxonomy_term_in_query($query) {
422
+ global $pagenow;
423
+ $qv = &$query->query_vars;
424
+ if( $pagenow=='edit.php' && isset($qv['landing_page_category']) && is_numeric($qv['landing_page_category']) ) {
425
+ $term = get_term_by('id',$qv['landing_page_category'],'landing_page_category');
426
+ $qv['landing_page_category'] = $term->slug;
427
+ }
428
+ }
429
+ add_filter('parse_query','convert_landing_page_category_id_to_taxonomy_term_in_query');
430
+
431
+ // Make these columns sortable
432
+ add_filter( 'manage_edit-landing-page_sortable_columns', 'lp_sortable_columns' );
433
+ function lp_sortable_columns() {
434
+ return array(
435
+ 'title' => 'title',
436
+ 'impressions' => 'impressions',
437
+ 'actions' => 'actions',
438
+ 'cr' => 'cr'
439
+ );
440
+ }
441
+
442
+
443
+ //START Custom styling of post state (eg: pretty highlighting of post_status on landing pages page
444
+ add_filter( 'display_post_states', 'lp_custom_post_states' );
445
+ function lp_custom_post_states( $post_states ) {
446
+ foreach ( $post_states as &$state ){
447
+ $state = '<span class="'.strtolower( $state ).' states">' . str_replace( ' ', '-', $state ) . '</span>';
448
+ }
449
+ return $post_states;
450
+ }
451
+
452
+ //***********ADDS 'CLEAR STATS' BUTTON TO POSTS EDITING AREA******************/
453
+ add_filter('post_row_actions', 'lp_add_clear_tracking',10,2);
454
+ function lp_add_clear_tracking($actions, $post) {
455
+ if ($post->post_type=='landing-page')
456
+ {
457
+ $actions['clear'] = '<a href="#clear-stats" id="lp_clear_'.$post->ID.'" class="clear_stats" title="'
458
+ . esc_attr(__("Clear impression and conversion records", LANDINGPAGES_TEXT_DOMAIN))
459
+ . '" >' . __('Clear All Stats', LANDINGPAGES_TEXT_DOMAIN) . '</a><span class="hover-description">'. __('Hover over the letters to the right for more options' , LANDINGPAGES_TEXT_DOMAIN) .'</span>';
460
+ }
461
+ return $actions;
462
+ }
463
+
464
+ /* perform trash actions for landing pages */
465
+ add_action('wp_trash_post', 'lp_trash_lander');
466
+ function lp_trash_lander($post_id) {
467
+ global $post;
468
+
469
+ if (!isset($post)||isset($_POST['split_test']))
470
+ return;
471
+
472
+ if ($post->post_type=='revision')
473
+ {
474
+ return;
475
+ }
476
+ if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ||(isset($_POST['post_type'])&&$_POST['post_type']=='revision'))
477
+ {
478
+ return;
479
+ }
480
+
481
+ if ($post->post_type=='landing-page')
482
+ {
483
+
484
+ $lp_id = $post->ID;
485
+
486
+ $args=array(
487
+ 'post_type' => 'landing-page-group',
488
+ 'post_satus'=>'publish'
489
+ );
490
+
491
+ $my_query = null;
492
+ $my_query = new WP_Query($args);
493
+
494
+ if( $my_query->have_posts() )
495
+ {
496
+ $i=1;
497
+ while ($my_query->have_posts()) : $my_query->the_post();
498
+ $group_id = get_the_ID();
499
+ $group_data = get_the_content();
500
+ $group_data = json_decode($group_data,true);
501
+
502
+ $lp_ids = array();
503
+ foreach ($group_data as $key=>$value)
504
+ {
505
+ $lp_ids[] = $key;
506
+ }
507
+
508
+ if (in_array($lp_id,$lp_ids))
509
+ {
510
+ unset($group_data[$lp_id]);
511
+
512
+ $this_data = json_encode($group_data);
513
+ //print_r($this_data);
514
+ $new_post = array(
515
+ 'ID' => $group_id,
516
+ 'post_title' => get_the_title(),
517
+ 'post_content' => $this_data,
518
+ 'post_status' => 'publish',
519
+ 'post_date' => date('Y-m-d H:i:s'),
520
+ 'post_author' => 1,
521
+ 'post_type' => 'landing-page-group'
522
+ );
523
+ //print_r($new_post);
524
+ $post_id = wp_update_post($new_post);
525
+ }
526
+ endwhile;
527
+ }
528
+ }
529
+ }
530
+
531
+ }
532
+
533
+ if (!post_type_exists('wp-lead'))
534
+ {
535
+ add_action('init', 'lp_wpleads_register');
536
+ function lp_wpleads_register() {
537
+ //echo $slug;exit;
538
+ $labels = array(
539
+ 'name' => _x('Leads', 'post type general name'),
540
+ 'singular_name' => _x('Lead', 'post type singular name' , LANDINGPAGES_TEXT_DOMAIN),
541
+ 'add_new' => _x('Add New', 'Lead' , LANDINGPAGES_TEXT_DOMAIN),
542
+ 'add_new_item' => __('Add New Lead' , LANDINGPAGES_TEXT_DOMAIN),
543
+ 'edit_item' => __('Edit Lead' , LANDINGPAGES_TEXT_DOMAIN),
544
+ 'new_item' => __('New Leads' , LANDINGPAGES_TEXT_DOMAIN),
545
+ 'view_item' => __('View Leads' , LANDINGPAGES_TEXT_DOMAIN),
546
+ 'search_items' => __('Search Leads' , LANDINGPAGES_TEXT_DOMAIN),
547
+ 'not_found' => __('Nothing found' , LANDINGPAGES_TEXT_DOMAIN),
548
+ 'not_found_in_trash' => __('Nothing found in Trash' , LANDINGPAGES_TEXT_DOMAIN),
549
+ 'parent_item_colon' => ''
550
+ );
551
+
552
+ $args = array(
553
+ 'labels' => $labels,
554
+ 'public' => false,
555
+ 'publicly_queryable' => false,
556
+ 'show_ui' => false,
557
+ 'query_var' => true,
558
+ 'capability_type' => 'post',
559
+ 'hierarchical' => false,
560
+ 'menu_position' => null,
561
+ 'supports' => array('custom-fields','thumbnail')
562
+ );
563
+
564
+ register_post_type( 'wp-lead' , $args );
565
+ //flush_rewrite_rules( false );
566
+
567
+ }
568
+ }
modules/module.track.php CHANGED
@@ -1 +1 @@
1
- <?php
2
  $count_key = 'lp_page_views_count';
3
  $count = get_post_meta($postID, $count_key, true);
4
  if($count==''){
5
  delete_post_meta($postID, $count_key);
6
  add_post_meta($postID, $count_key, '0');
7
  return;
8
  }
9
  return $count;
10
  $count_key = 'lp_page_views_count';
11
  $count = get_post_meta($postID, $count_key, true);
12
  if($count==''){
13
  $count = 0;
14
  delete_post_meta($postID, $count_key);
15
  add_post_meta($postID, $count_key, '0');
16
  }else{
17
  $count++;
18
  update_post_meta($postID, $count_key, $count);
19
  }
20
  $count_key = 'lp_page_conversions_count';
21
  $count = get_post_meta($postID, $count_key, true);
22
  if($count==''){
23
  delete_post_meta($postID, $count_key);
24
  add_post_meta($postID, $count_key, '0');
25
  return "0";
26
  }
27
  return $count;
28
  $count_key = 'lp_page_conversions_count';
29
  $count = get_post_meta($postID, $count_key, true);
30
  if($count==''){
31
  $count = 0;
32
  delete_post_meta($postID, $count_key);
33
  add_post_meta($postID, $count_key, '0');
34
  }else{
35
  $count++;
36
  update_post_meta($postID, $count_key, $count);
37
  }
 
38
  $count_key = 'lp_page_views_count';
39
  $count = get_post_meta($postID, $count_key, true);
40
  if($count==''){
41
  delete_post_meta($postID, $count_key);
42
  add_post_meta($postID, $count_key, '0');
43
  return;
44
  }
45
  return $count;
46
  $count_key = 'lp_page_views_count';
47
  $count = get_post_meta($postID, $count_key, true);
48
  if($count==''){
49
  $count = 0;
50
  delete_post_meta($postID, $count_key);
51
  add_post_meta($postID, $count_key, '0');
52
  }else{
53
  $count++;
54
  update_post_meta($postID, $count_key, $count);
55
  }
56
  $count_key = 'lp_page_conversions_count';
57
  $count = get_post_meta($postID, $count_key, true);
58
  if($count==''){
59
  delete_post_meta($postID, $count_key);
60
  add_post_meta($postID, $count_key, '0');
61
  return "0";
62
  }
63
  return $count;
64
  $count_key = 'lp_page_conversions_count';
65
  $count = get_post_meta($postID, $count_key, true);
66
  if($count==''){
67
  $count = 0;
68
  delete_post_meta($postID, $count_key);
69
  add_post_meta($postID, $count_key, '0');
70
  }else{
71
  $count++;
72
  update_post_meta($postID, $count_key, $count);
73
  }
 
1
  $count_key = 'lp_page_views_count';
2
  $count = get_post_meta($postID, $count_key, true);
3
  if($count==''){
4
  delete_post_meta($postID, $count_key);
5
  add_post_meta($postID, $count_key, '0');
6
  return;
7
  }
8
  return $count;
9
  $count_key = 'lp_page_views_count';
10
  $count = get_post_meta($postID, $count_key, true);
11
  if($count==''){
12
  $count = 0;
13
  delete_post_meta($postID, $count_key);
14
  add_post_meta($postID, $count_key, '0');
15
  }else{
16
  $count++;
17
  update_post_meta($postID, $count_key, $count);
18
  }
19
  $count_key = 'lp_page_conversions_count';
20
  $count = get_post_meta($postID, $count_key, true);
21
  if($count==''){
22
  delete_post_meta($postID, $count_key);
23
  add_post_meta($postID, $count_key, '0');
24
  return "0";
25
  }
26
  return $count;
27
  $count_key = 'lp_page_conversions_count';
28
  $count = get_post_meta($postID, $count_key, true);
29
  if($count==''){
30
  $count = 0;
31
  delete_post_meta($postID, $count_key);
32
  add_post_meta($postID, $count_key, '0');
33
  }else{
34
  $count++;
35
  update_post_meta($postID, $count_key, $count);
36
  }
37
+ <?php
38
  $count_key = 'lp_page_views_count';
39
  $count = get_post_meta($postID, $count_key, true);
40
  if($count==''){
41
  delete_post_meta($postID, $count_key);
42
  add_post_meta($postID, $count_key, '0');
43
  return;
44
  }
45
  return $count;
46
  $count_key = 'lp_page_views_count';
47
  $count = get_post_meta($postID, $count_key, true);
48
  if($count==''){
49
  $count = 0;
50
  delete_post_meta($postID, $count_key);
51
  add_post_meta($postID, $count_key, '0');
52
  }else{
53
  $count++;
54
  update_post_meta($postID, $count_key, $count);
55
  }
56
  $count_key = 'lp_page_conversions_count';
57
  $count = get_post_meta($postID, $count_key, true);
58
  if($count==''){
59
  delete_post_meta($postID, $count_key);
60
  add_post_meta($postID, $count_key, '0');
61
  return "0";
62
  }
63
  return $count;
64
  $count_key = 'lp_page_conversions_count';
65
  $count = get_post_meta($postID, $count_key, true);
66
  if($count==''){
67
  $count = 0;
68
  delete_post_meta($postID, $count_key);
69
  add_post_meta($postID, $count_key, '0');
70
  }else{
71
  $count++;
72
  update_post_meta($postID, $count_key, $count);
73
  }
modules/module.utils.php CHANGED
@@ -116,10 +116,18 @@ if (!function_exists('inbound_meta_debug')) {
116
  }
117
  }
118
 
 
 
 
 
 
 
 
 
 
 
 
119
 
120
- /* YOAST SEO PLUGIN - MAKE METABOX LOW PRIORITY */
121
- add_filter( 'wpseo_metabox_prio', 'lp_wpseo_priority');
122
- function lp_wpseo_priority(){return 'low';}
123
 
124
  // Fix SEO Title Tags to not use the_title
125
  //add_action('wp','landingpage_seo_title_filters');
@@ -267,4 +275,8 @@ function inbound_build_template_options() {
267
  }
268
  }
269
 
270
- ?>
 
 
 
 
116
  }
117
  }
118
 
119
+ // Fix wp_title for known bad behavior themes */
120
+ add_action('wp','landingpage_fix_known_wp_title_isses' , 10);
121
+ function landingpage_fix_known_wp_title_isses() {
122
+
123
+ if ('landing-page' != get_post_type()){
124
+ return;
125
+ }
126
+
127
+ remove_filter( 'wp_title', 'genesis_doctitle_wrap' , 20 );
128
+ remove_filter( 'wp_title', 'genesis_default_title' , 10 );
129
+ }
130
 
 
 
 
131
 
132
  // Fix SEO Title Tags to not use the_title
133
  //add_action('wp','landingpage_seo_title_filters');
275
  }
276
  }
277
 
278
+ if (is_admin())
279
+ {
280
+ add_filter( 'wpseo_metabox_prio', 'lp_wpseo_priority');
281
+ function lp_wpseo_priority(){return 'low';}
282
+ }
readme.txt CHANGED
@@ -7,7 +7,7 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
7
  Tags: landing pages, inbound marketing, conversion pages, split testing, a b test, a b testing, a/b test, a/b testing, coming soon page, email list, landing page, list building, maintenance page, squeeze page, inbound now, landing-pages, splash pages, cpa, click tracking, goal tracking, analytics, free landing page templates
8
  Requires at least: 3.7
9
  Tested up to: 3.8
10
- Stable Tag: 1.4.5
11
 
12
  Create landing pages for your WordPress site. Monitor and improve conversion rates, run A/B split tests, customize your own templates and more.
13
 
@@ -39,7 +39,7 @@ Recommended form plugins (Gravity forms, Ninja Forms or Contact form 7)
39
 
40
  = About the Plugin =
41
 
42
- http://www.youtube.com/watch?v=BzcD6PgvLP4
43
 
44
  = Developers & Designers =
45
 
@@ -68,6 +68,14 @@ The plugin is also fully extendable and has a number of <a href='http://docs.inb
68
  4. Choose from a ton of pre-made templates, use your existing design, or design your own theme!
69
 
70
  == Changelog ==
 
 
 
 
 
 
 
 
71
  = 1.4.5 =
72
  * Added New HTML Lead Email Template with clickable links for faster lead management
73
  * Added Button Shortcodes!
7
  Tags: landing pages, inbound marketing, conversion pages, split testing, a b test, a b testing, a/b test, a/b testing, coming soon page, email list, landing page, list building, maintenance page, squeeze page, inbound now, landing-pages, splash pages, cpa, click tracking, goal tracking, analytics, free landing page templates
8
  Requires at least: 3.7
9
  Tested up to: 3.8
10
+ Stable Tag: 1.4.6
11
 
12
  Create landing pages for your WordPress site. Monitor and improve conversion rates, run A/B split tests, customize your own templates and more.
13
 
39
 
40
  = About the Plugin =
41
 
42
+ http://www.youtube.com/watch?v=flEd0sRTFUo
43
 
44
  = Developers & Designers =
45
 
68
  4. Choose from a ton of pre-made templates, use your existing design, or design your own theme!
69
 
70
  == Changelog ==
71
+ = 1.4.6 =
72
+ * New Feature: Bulk Lead management with leads plugin wordpress.org/plugins/leads/
73
+ * Added tags to lead profiles for improved management/categorization
74
+ * Added new compatibility options to fix third party plugin conflicts!
75
+ * Added new debugging javascript debugging tools for users
76
+ * Fixed Email Sending Error on forms
77
+ * Improved support for master license keys
78
+
79
  = 1.4.5 =
80
  * Added New HTML Lead Email Template with clickable links for faster lead management
81
  * Added Button Shortcodes!
shared/classes/chart.class.php ADDED
@@ -0,0 +1,291 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * NOT currently in use but will be soon
4
+ *
5
+ * Graphs
6
+ *
7
+ * This class handles building pretty report graphs
8
+ *
9
+ * @package EDD
10
+ * @subpackage Admin/Reports
11
+ * @copyright Copyright (c) 2012, Pippin Williamson
12
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
13
+ * @since 1.9
14
+ */
15
+
16
+ // Exit if accessed directly
17
+ if ( ! defined( 'ABSPATH' ) ) exit;
18
+
19
+ /**
20
+ * EDD_Graph Class
21
+ *
22
+ * @since 1.9
23
+ */
24
+ if (!function_exists('Inbound_Graph')) {
25
+ class Inbound_Graph {
26
+
27
+ /*
28
+
29
+ Simple example:
30
+
31
+ data format for each point: array( location on x, location on y )
32
+
33
+ // Example with options set to other than default:
34
+ $data = array(
35
+
36
+ 'Line Label' => array(
37
+ array( 1, 5 ),
38
+ array( 3, 8 ),
39
+ array( 10, 2 )
40
+ ),
41
+
42
+ 'Second Line Label' => array(
43
+ array( 1, 7 ),
44
+ array( 4, 5 ),
45
+ array( 12, 8 )
46
+ )
47
+ );
48
+
49
+ $graph = new Inbound_Graph( $data );
50
+ $graph->set( 'bgcolor' => '#000' );
51
+ $graph->set( 'color' => '#fff' );
52
+ $graph->display();
53
+
54
+ */
55
+
56
+ /**
57
+ * Data to graph
58
+ *
59
+ * @var array
60
+ * @since 1.9
61
+ */
62
+ private $data;
63
+
64
+ /**
65
+ * Unique ID for the graph
66
+ *
67
+ * @var string
68
+ * @since 1.9
69
+ */
70
+ private $id = '';
71
+
72
+ /**
73
+ * Graph options
74
+ *
75
+ * @var array
76
+ * @since 1.9
77
+ */
78
+ private $options = array();
79
+
80
+ /**
81
+ * Get things started
82
+ *
83
+ * @since 1.9
84
+ */
85
+ public function __construct( $_data ) {
86
+
87
+ $this->data = $_data;
88
+
89
+ // Generate unique ID
90
+ $this->id = md5( rand() );
91
+
92
+ // Setup default options;
93
+ $this->options = array(
94
+ 'y_mode' => null,
95
+ 'x_mode' => null,
96
+ 'y_decimals' => 0,
97
+ 'x_decimals' => 0,
98
+ 'y_position' => 'right',
99
+ 'time_format' => '%d/%b',
100
+ 'ticksize_unit' => 'day',
101
+ 'ticksize_num' => 1,
102
+ 'multiple_y_axes' => false,
103
+ 'bgcolor' => '#f9f9f9',
104
+ 'bordercolor' => '#ccc',
105
+ 'color' => '#bbb',
106
+ 'borderwidth' => 2,
107
+ 'bars' => false,
108
+ 'lines' => true,
109
+ 'points' => true
110
+ );
111
+
112
+ }
113
+
114
+ /**
115
+ * Set an option
116
+ *
117
+ * @param $key The option key to set
118
+ * @param $value The value to assign to the key
119
+ * @since 1.9
120
+ */
121
+ public function set( $key, $value ) {
122
+ $this->options[ $key ] = $value;
123
+ }
124
+
125
+ /**
126
+ * Get an option
127
+ *
128
+ * @param $key The option key to get
129
+ * @since 1.9
130
+ */
131
+ public function get( $key ) {
132
+ return isset( $this->options[ $key ] ) ? $this->options[ $key ] : false;
133
+ }
134
+
135
+ /**
136
+ * Get graph data
137
+ *
138
+ * @since 1.9
139
+ */
140
+ public function get_data() {
141
+ return apply_filters( 'edd_get_graph_data', $this->data, $this );
142
+ }
143
+
144
+ /**
145
+ * Load the graphing library script
146
+ *
147
+ * @since 1.9
148
+ */
149
+ public function load_scripts() {
150
+ // Use minified libraries if SCRIPT_DEBUG is turned off
151
+ $suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
152
+ wp_enqueue_script( 'jquery-flot', EDD_PLUGIN_URL . 'assets/js/jquery.flot' . $suffix . '.js' );
153
+ }
154
+
155
+ /**
156
+ * Build the graph and return it as a string
157
+ *
158
+ * @var array
159
+ * @since 1.9
160
+ * @return string
161
+ */
162
+ public function build_graph() {
163
+
164
+ $yaxis_count = 1;
165
+
166
+ $this->load_scripts();
167
+
168
+ ob_start();
169
+
170
+ ?>
171
+ <script type="text/javascript">
172
+ jQuery( document ).ready( function($) {
173
+ $.plot(
174
+ $("#edd-graph-<?php echo $this->id; ?>"),
175
+ [
176
+ <?php foreach( $this->get_data() as $label => $data ) : ?>
177
+ {
178
+ label: "<?php echo esc_attr( $label ); ?>",
179
+ id: "<?php echo sanitize_key( $label ); ?>",
180
+ // data format is: [ point on x, value on y ]
181
+ data: [<?php foreach( $data as $point ) { echo '[' . implode( ',', $point ) . '],'; } ?>],
182
+ points: {
183
+ show: <?php echo $this->options['points'] ? 'true' : 'false'; ?>,
184
+ },
185
+ bars: {
186
+ show: <?php echo $this->options['bars'] ? 'true' : 'false'; ?>,
187
+ barWidth: 12,
188
+ aling: 'center'
189
+ },
190
+ lines: {
191
+ show: <?php echo $this->options['lines'] ? 'true' : 'false'; ?>
192
+ },
193
+ <?php if( $this->options[ 'multiple_y_axes' ] ) : ?>
194
+ yaxis: <?php echo $yaxis_count; ?>
195
+ <?php endif; ?>
196
+ },
197
+ <?php $yaxis_count++; endforeach; ?>
198
+ ],
199
+ {
200
+ // Options
201
+ grid: {
202
+ show: true,
203
+ aboveData: false,
204
+ color: "<?php echo $this->options[ 'color' ]; ?>",
205
+ backgroundColor: "<?php echo $this->options[ 'bgcolor' ]; ?>",
206
+ borderColor: "<?php echo $this->options[ 'bordercolor' ]; ?>",
207
+ borderWidth: <?php echo absint( $this->options[ 'borderwidth' ] ); ?>,
208
+ clickable: false,
209
+ hoverable: true
210
+ },
211
+ xaxis: {
212
+ mode: "<?php echo $this->options['x_mode']; ?>",
213
+ timeFormat: "<?php echo $this->options['x_mode'] == 'time' ? $this->options['time_format'] : ''; ?>",
214
+ tickSize: "<?php echo $this->options['x_mode'] == 'time' ? '' : 1; ?>",
215
+ <?php if( $this->options['x_mode'] != 'time' ) : ?>
216
+ tickDecimals: <?php echo $this->options['x_decimals']; ?>
217
+ <?php endif; ?>
218
+ },
219
+ yaxis: {
220
+ position: 'right',
221
+ min: 0,
222
+ mode: "<?php echo $this->options['y_mode']; ?>",
223
+ timeFormat: "<?php echo $this->options['y_mode'] == 'time' ? $this->options['time_format'] : ''; ?>",
224
+ <?php if( $this->options['y_mode'] != 'time' ) : ?>
225
+ tickDecimals: <?php echo $this->options['y_decimals']; ?>
226
+ <?php endif; ?>
227
+ }
228
+ }
229
+
230
+ );
231
+
232
+ function edd_flot_tooltip(x, y, contents) {
233
+ $('<div id="edd-flot-tooltip">' + contents + '</div>').css( {
234
+ position: 'absolute',
235
+ display: 'none',
236
+ top: y + 5,
237
+ left: x + 5,
238
+ border: '1px solid #fdd',
239
+ padding: '2px',
240
+ 'background-color': '#fee',
241
+ opacity: 0.80
242
+ }).appendTo("body").fadeIn(200);
243
+ }
244
+
245
+ var previousPoint = null;
246
+ $("#edd-graph-<?php echo $this->id; ?>").bind("plothover", function (event, pos, item) {
247
+ $("#x").text(pos.x.toFixed(2));
248
+ $("#y").text(pos.y.toFixed(2));
249
+ if (item) {
250
+ if (previousPoint != item.dataIndex) {
251
+ previousPoint = item.dataIndex;
252
+ $("#edd-flot-tooltip").remove();
253
+ var x = item.datapoint[0].toFixed(2),
254
+ y = item.datapoint[1].toFixed(2);
255
+ if( item.series.id == 'earnings' ) {
256
+ if( edd_vars.currency_pos == 'before' ) {
257
+ edd_flot_tooltip( item.pageX, item.pageY, item.series.label + ' ' + edd_vars.currency_sign + y );
258
+ } else {
259
+ edd_flot_tooltip( item.pageX, item.pageY, item.series.label + ' ' + y + edd_vars.currency_sign );
260
+ }
261
+ } else {
262
+ edd_flot_tooltip( item.pageX, item.pageY, item.series.label + ' ' + y.replace( '.00', '' ) );
263
+ }
264
+ }
265
+ } else {
266
+ $("#edd-flot-tooltip").remove();
267
+ previousPoint = null;
268
+ }
269
+ });
270
+
271
+ });
272
+
273
+ </script>
274
+ <div id="edd-graph-<?php echo $this->id; ?>" style="height: 300px;"></div>
275
+ <?php
276
+ return ob_get_clean();
277
+ }
278
+
279
+ /**
280
+ * Output the final graph
281
+ *
282
+ * @since 1.9
283
+ */
284
+ public function display() {
285
+ do_action( 'edd_before_graph', $this );
286
+ echo $this->build_graph();
287
+ do_action( 'edd_after_graph', $this );
288
+ }
289
+
290
+ }
291
+ }
shared/classes/compatibility.class.php ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Compability Mode Deregisters All Third party scripts not in the whitelist
4
+ * - The class was made to cut down on third party support requests
5
+ *
6
+ * Call the dequeue manually InboundCompatibility::inbound_compatibilities_mode();
7
+ */
8
+
9
+ /* From Global Settings if compat mode toggled on turn off third party scripts */
10
+ add_action('admin_enqueue_scripts', 'inbound_turn_on_compatiblity', 110);
11
+ if (!function_exists('inbound_turn_on_compatiblity')) {
12
+ function inbound_turn_on_compatiblity() {
13
+ $screen = get_current_screen();
14
+
15
+ // Add all Plugin Screens to Array
16
+ $inbound_screens = InboundCompatibility::return_inbound_now_screens(); // grabs our plugin screen ids
17
+
18
+ // If Not Inbound Now Screen Exit function
19
+ if (!in_array($screen->id, $inbound_screens)) {
20
+ return;
21
+ }
22
+
23
+ $lead_compatiblity = get_option( 'wpl-main-inbound_compatibility_mode', $default = false );
24
+ $cta_compatiblity = get_option( 'wp-cta-main-inbound_compatibility_mode', $default = false );
25
+ $lp_compatiblity = get_option( 'lp-main-inbound_compatibility_mode', $default = false );
26
+ if ( $lead_compatiblity || $cta_compatiblity || $lp_compatiblity ) {
27
+ InboundCompatibility::inbound_compatibilities_mode(); // kill third party scripts
28
+ }
29
+ }
30
+ }
31
+
32
+ add_action('admin_notices', 'inbound_compability_admin_notice'); // disable compat notice
33
+ if (!function_exists('inbound_compability_admin_notice')) {
34
+ function inbound_compability_admin_notice(){
35
+ $lead_compatiblity = get_option( 'wpl-main-inbound_compatibility_mode', $default = false );
36
+ $cta_compatiblity = get_option( 'wp-cta-main-inbound_compatibility_mode', $default = false );
37
+ $lp_compatiblity = get_option( 'lp-main-inbound_compatibility_mode', $default = false );
38
+ if ($lead_compatiblity) {
39
+ $link = admin_url( 'edit.php?post_type=wp-lead&page=wpleads_global_settings' );
40
+ } elseif ($cta_compatiblity) {
41
+ $link = admin_url( 'edit.php?post_type=wp-call-to-action&page=wp_cta_global_settings' );
42
+ } elseif ($lp_compatiblity) {
43
+ $link = admin_url( 'edit.php?post_type=landing-page&page=lp_global_settings' );
44
+ }
45
+
46
+ if ( $lead_compatiblity || $cta_compatiblity || $lp_compatiblity ) {
47
+ echo '<div class="updated">
48
+ <p>Inbound Now Compatibility Mode is currently activated. To turn off go to <a href="'.$link.'">global settings</a> and toggle off</p>
49
+ </div>';
50
+ }
51
+ }
52
+ }
53
+
54
+ if (!class_exists('InboundCompatibility')) {
55
+ class InboundCompatibility {
56
+ static $add_inbound_compatibility;
57
+
58
+ /**
59
+ * Dequeue all third party scripts on page
60
+ * @return [type] [description]
61
+ */
62
+ static function inbound_compatibilities_mode() {
63
+
64
+ if (is_admin()){
65
+ $screen = get_current_screen();
66
+ } else {
67
+ $screen = '';
68
+ }
69
+ global $wp_scripts;
70
+
71
+ // Match our plugins and whitelist them
72
+ $registered_scripts = $wp_scripts->registered;
73
+ $inbound_white_list = array();
74
+ foreach ($registered_scripts as $handle) {
75
+ if(preg_match("/\/plugins\/leads\//", $handle->src)) {
76
+ //echo $handle->handle;
77
+ $inbound_white_list[] = $handle->handle;
78
+ }
79
+ if(preg_match("/\/plugins\/cta\//", $handle->src)) {
80
+ //echo $handle->handle;
81
+ $inbound_white_list[]= $handle->handle;
82
+ }
83
+ if(preg_match("/\/plugins\/landing-pages\//", $handle->src)) {
84
+ //echo $handle->handle;
85
+ $inbound_white_list[]= $handle->handle;
86
+ }
87
+ }
88
+ //print_r($inbound_white_list);
89
+
90
+ /* NEED Filter for ADDONs */
91
+
92
+
93
+ $scripts_queued = $wp_scripts->queue; /* All Queued Scripts */ //print_r($wp_scripts->queue);
94
+
95
+ // Wordpress Core Scripts List
96
+ $wp_core_scripts = array("jcrop", "swfobject", "swfupload", "swfupload-degrade", "swfupload-queue", "swfupload-handlers", "jquery", "jquery-form", "jquery-color", "jquery-masonry", "jquery-ui-core", "jquery-ui-widget", "jquery-ui-mouse", "jquery-ui-accordion", "jquery-ui-autocomplete", "jquery-ui-slider", "jquery-ui-progressbar", "jquery-ui-tabs", "jquery-ui-sortable", "jquery-ui-draggable", "jquery-ui-droppable", "jquery-ui-selectable", "jquery-ui-position", "jquery-ui-datepicker", "jquery-ui-tooltip", "jquery-ui-resizable", "jquery-ui-dialog", "jquery-ui-button", "jquery-effects-core", "jquery-effects-blind", "jquery-effects-bounce", "jquery-effects-clip", "jquery-effects-drop", "jquery-effects-explode", "jquery-effects-fade", "jquery-effects-fold", "jquery-effects-highlight", "jquery-effects-pulsate", "jquery-effects-scale", "jquery-effects-shake", "jquery-effects-slide", "jquery-effects-transfer", "wp-mediaelement", "schedule", "suggest", "thickbox", "hoverIntent", "jquery-hotkeys", "sack", "quicktags", "iris", "farbtastic", "colorpicker", "tiny_mce", "autosave", "wp-ajax-response", "wp-lists", "common", "editorremov", "editor-functions", "ajaxcat", "admin-categories", "admin-tags", "admin-custom-fields", "password-strength-meter", "admin-comments", "admin-users", "admin-forms", "xfn", "upload", "postbox", "slug", "post", "page", "link", "comment", "comment-reply", "admin-gallery", "media-upload", "admin-widgets", "word-count", "theme-preview", "json2", "plupload", "plupload-all", "plupload-html4", "plupload-html5", "plupload-flash", "plupload-silverlight", "underscore", "backbone");
97
+
98
+
99
+ foreach ($scripts_queued as $key => $value) {
100
+ //echo $key . $value;
101
+ if (!in_array($value, $inbound_white_list) && !in_array($value, $wp_core_scripts)){
102
+ wp_dequeue_script( $value );
103
+ //echo $key . $value;
104
+ }
105
+ }
106
+ }
107
+
108
+ static function return_inbound_now_screens(){
109
+ $inbound_screens = array(
110
+ 'wp-lead_page_wpleads_global_settings',
111
+ 'wp-lead_page_lead_management',
112
+ 'edit-list',
113
+ 'edit-wp-lead',
114
+ 'wp-lead',
115
+ 'edit-wplead_list_category',
116
+ 'edit-inbound-forms',
117
+ 'inbound-forms',
118
+ 'edit-landing-page',
119
+ 'landing-page',
120
+ 'edit-landing_page_category',
121
+ 'landing-page_page_lp_manage_templates',
122
+ 'landing-page_page_lp_global_settings',
123
+ 'landing-page_page_lp_store',
124
+ 'edit-wp-call-to-action',
125
+ 'edit-wp_call_to_action_category',
126
+ 'wp-call-to-action',
127
+ 'wp-call-to-action_page_wp_cta_manage_templates',
128
+ 'wp-call-to-action_page_wp_cta_global_settings',
129
+ );
130
+ // add filter
131
+ return $inbound_screens;
132
+ }
133
+ }
134
+ }
shared/classes/debug.class.php ADDED
@@ -0,0 +1,379 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* Inbound Now Debug Class
3
+ *
4
+ * This class enabled users to dequeue third party javascript from pages to stop JS errors
5
+ */
6
+
7
+ if (!defined('INBOUND_CLASS_URL'))
8
+ define('INBOUND_CLASS_URL', plugin_dir_url(__FILE__));
9
+
10
+ //update_option( 'inbound_global_dequeue', "" );
11
+ /*
12
+ $global_array = get_option( 'inbound_global_dequeue' );
13
+ print_r($global_array);
14
+ /**/
15
+
16
+ if (!class_exists('InboundDebugScripts')) {
17
+ class InboundDebugScripts {
18
+ static $add_debug;
19
+
20
+ /* Contruct
21
+ * --------------------------------------------------------- */
22
+ static function init() {
23
+ self::$add_debug = true;
24
+ //add_action('wp_loaded', array(__CLASS__, 'inbound_check_for_error'));
25
+ //add_action('wp_footer', array(__CLASS__, 'display_errors'));
26
+ //add_action('init', array(__CLASS__, 'admin_display_errors'));
27
+ add_action('wp_enqueue_scripts', array(__CLASS__, 'inbound_kill_bogus_scripts'), 100);
28
+ add_action('wp_enqueue_scripts', array(__CLASS__, 'inbound_compatibilities'), 101);
29
+ add_action('admin_enqueue_scripts', array(__CLASS__, 'inbound_compatibilities'), 101);
30
+ add_action('admin_enqueue_scripts', array(__CLASS__, 'inbound_kill_bogus_admin_scripts'), 100);
31
+ add_action('wp_ajax_inbound_dequeue_js', array(__CLASS__, 'inbound_dequeue_js'));
32
+ add_action('wp_ajax_nopriv_inbound_dequeue_js', array(__CLASS__, 'inbound_dequeue_js'));
33
+ add_action('wp_ajax_inbound_dequeue_admin_js', array(__CLASS__, 'inbound_dequeue_admin_js'));
34
+ add_action('wp_ajax_nopriv_inbound_dequeue_admin_js', array(__CLASS__, 'inbound_dequeue_admin_js'));
35
+ if (isset($_GET['inbound_js'])){
36
+ add_action('wp_enqueue_scripts', array(__CLASS__, 'run_debug_script'), 102);
37
+ add_action('admin_enqueue_scripts', array(__CLASS__, 'run_debug_script'), 102);
38
+ }
39
+ }
40
+
41
+ // dequeue all js and set first script, then requeue scripts
42
+ static function run_debug_script() {
43
+ global $wp_scripts;
44
+
45
+ if ( !empty( $wp_scripts->queue ) ) {
46
+ $store = $wp_scripts->queue; // store the scripts
47
+ foreach ( $wp_scripts->queue as $handle ) {
48
+ wp_dequeue_script( $handle );
49
+ }
50
+ //wp_enqueue_script( 'jquery' );
51
+ wp_register_script('inbound-debug', WP_CTA_URLPATH . 'shared/classes/js/debug.js', array('jquery'));
52
+ wp_enqueue_script( 'inbound-debug' );
53
+
54
+ foreach ( $store as $handle ) {
55
+ wp_enqueue_script( $handle );
56
+ }
57
+ }
58
+
59
+ }
60
+
61
+ static function inbound_dequeue_js() {
62
+ if ( ! self::$add_debug )
63
+ return;
64
+
65
+ // Post Values
66
+ $post_id = (isset( $_POST['post_id'] )) ? $_POST['post_id'] : "";
67
+ $the_script = (isset( $_POST['the_script'] )) ? $_POST['the_script'] : "";
68
+ $status = (isset( $_POST['status'] )) ? $_POST['status'] : "";
69
+ $admin_screen = (isset( $_POST['admin_screen'] )) ? $_POST['admin_screen'] : "";
70
+
71
+ /* Store Script Data to Post */
72
+ $script_data = get_post_meta( $post_id, 'inbound_dequeue_js', TRUE );
73
+ $script_data = json_decode($script_data,true);
74
+ if(is_array($script_data)) {
75
+
76
+ if($status === 'off') {
77
+ // add or remove from list
78
+ $script_data[$the_script] = $status;
79
+ } else {
80
+ unset($script_data[$the_script]);
81
+ }
82
+
83
+ } else {
84
+ // Create the first item in array
85
+ if($status === 'off') {
86
+ $script_data[$the_script] = $status;
87
+ }
88
+ }
89
+ $script_save = json_encode($script_data);
90
+
91
+ update_post_meta( $post_id, 'inbound_dequeue_js', $script_save );
92
+
93
+ // Set global option inbound_global_dequeue_js
94
+
95
+ $output = array('encode'=> $script_save );
96
+
97
+ echo json_encode($output,JSON_FORCE_OBJECT);
98
+ wp_die();
99
+ }
100
+
101
+ static function inbound_dequeue_admin_js() {
102
+ if ( ! self::$add_debug )
103
+ return;
104
+
105
+ // Post Values
106
+ $post_id = (isset( $_POST['post_id'] )) ? $_POST['post_id'] : "";
107
+ $the_script = (isset( $_POST['the_script'] )) ? $_POST['the_script'] : "";
108
+ $status = (isset( $_POST['status'] )) ? $_POST['status'] : "";
109
+ $admin_screen = (isset( $_POST['admin_screen'] )) ? $_POST['admin_screen'] : "";
110
+
111
+ /* Store Script Data to Post */
112
+ $script_data = get_option( 'inbound_global_dequeue' );
113
+
114
+ if(is_array($script_data)) {
115
+
116
+ if($status === 'off') {
117
+ // add or remove from list
118
+ $script_data[$the_script] = $admin_screen;
119
+ } else {
120
+ unset($script_data[$the_script]);
121
+ }
122
+
123
+ } else {
124
+ // Create the first item in array
125
+ if($status === 'off') {
126
+ $script_data[$the_script] = $admin_screen;
127
+ }
128
+ }
129
+ update_option( 'inbound_global_dequeue', $script_data );
130
+
131
+ // Set global option inbound_global_dequeue_js
132
+
133
+ $output = array('encode'=> $script_data );
134
+
135
+ echo json_encode($output,JSON_FORCE_OBJECT);
136
+ wp_die();
137
+ }
138
+
139
+ static function wp_core_script_whitelist() {
140
+ // Wordpress Core Scripts List
141
+ $wp_core_scripts = array("jcrop", "swfobject", "swfupload", "swfupload-degrade", "swfupload-queue", "swfupload-handlers", "jquery", "jquery-form", "jquery-color", "jquery-masonry", "jquery-ui-core", "jquery-ui-widget", "jquery-ui-mouse", "jquery-ui-accordion", "jquery-ui-autocomplete", "jquery-ui-slider", "jquery-ui-progressbar", "jquery-ui-tabs", "jquery-ui-sortable", "jquery-ui-draggable", "jquery-ui-droppable", "jquery-ui-selectable", "jquery-ui-position", "jquery-ui-datepicker", "jquery-ui-tooltip", "jquery-ui-resizable", "jquery-ui-dialog", "jquery-ui-button", "jquery-effects-core", "jquery-effects-blind", "jquery-effects-bounce", "jquery-effects-clip", "jquery-effects-drop", "jquery-effects-explode", "jquery-effects-fade", "jquery-effects-fold", "jquery-effects-highlight", "jquery-effects-pulsate", "jquery-effects-scale", "jquery-effects-shake", "jquery-effects-slide", "jquery-effects-transfer", "wp-mediaelement", "schedule", "suggest", "thickbox", "hoverIntent", "jquery-hotkeys", "sack", "quicktags", "iris", "farbtastic", "colorpicker", "tiny_mce", "autosave", "wp-ajax-response", "wp-lists", "common", "editorremov", "editor-functions", "ajaxcat", "admin-categories", "admin-tags", "admin-custom-fields", "password-strength-meter", "admin-comments", "admin-users", "admin-forms", "xfn", "upload", "postbox", "slug", "post", "page", "link", "comment", "comment-reply", "admin-gallery", "media-upload", "admin-widgets", "word-count", "theme-preview", "json2", "plupload", "plupload-all", "plupload-html4", "plupload-html5", "plupload-flash", "plupload-silverlight", "underscore", "backbone", 'admin-bar', 'media-editor', 'svg-painter', 'wp-auth-check', 'editor', 'utils', 'customize-controls', 'plugin-install', 'customize-loader', 'dashboard');
142
+
143
+ // add filter;
144
+
145
+ return $wp_core_scripts;
146
+ }
147
+
148
+ static function inbound_now_script_whitelist() {
149
+ global $wp_scripts;
150
+ // Match our plugins and whitelist them
151
+ $registered_scripts = $wp_scripts->registered;
152
+ $inbound_white_list = array();
153
+ foreach ($registered_scripts as $handle) {
154
+ if(preg_match("/\/plugins\/leads\//", $handle->src)) {
155
+ //echo $handle->handle;
156
+ $inbound_white_list[] = $handle->handle;
157
+ }
158
+ if(preg_match("/\/plugins\/cta\//", $handle->src)) {
159
+ //echo $handle->handle;
160
+ $inbound_white_list[]= $handle->handle;
161
+ }
162
+ if(preg_match("/\/plugins\/landing-pages\//", $handle->src)) {
163
+ //echo $handle->handle;
164
+ $inbound_white_list[]= $handle->handle;
165
+ }
166
+ }
167
+ //print_r($inbound_white_list);
168
+ return $inbound_white_list;
169
+ }
170
+ // Destroy all bad frontend scripts
171
+ static function inbound_kill_bogus_scripts() {
172
+ if (!isset($_GET['inbound-dequeue-scripts'])) {
173
+ global $wp_scripts, $wp_query;
174
+ $script_list = $wp_scripts->queue; // All enqueued scripts
175
+ $current_page_id = $wp_query->get_queried_object_id();
176
+ $script_data = get_post_meta( $current_page_id , 'inbound_dequeue_js', TRUE );
177
+ $script_data = json_decode($script_data,true);
178
+
179
+ $inbound_white_list = self::inbound_now_script_whitelist();
180
+ $wp_core_scripts = self::wp_core_script_whitelist();
181
+
182
+ // dequeue frontent scripts
183
+ foreach ($script_list as $key => $value) {
184
+ if (!in_array($value, $inbound_white_list) && !in_array($value, $wp_core_scripts)){
185
+ // Kill bad scripts
186
+ if (isset($script_data[$value]) && in_array($script_data[$value], $script_data)) {
187
+ wp_dequeue_script( $value ); // Kill bad script
188
+ }
189
+ }
190
+ }
191
+
192
+ }
193
+ }
194
+
195
+ // Destroy all bad admin scripts
196
+ static function inbound_kill_bogus_admin_scripts() {
197
+ if (!isset($_GET['inbound-dequeue-scripts'])) {
198
+ // dequeue admin scripts
199
+ $screen = get_current_screen();
200
+
201
+ $array = array('load-qtip' => 'wp-call-to-action');
202
+ //update_option( 'inbound_global_dequeue', $array );
203
+ $global_array = get_option( 'inbound_global_dequeue' );
204
+ //print_r($global_array);
205
+ if (is_array($global_array)) {
206
+ foreach ($global_array as $key => $value) {
207
+ if ( $screen->id === $value) {
208
+ wp_dequeue_script( $key );
209
+ }
210
+ }
211
+ }
212
+ }
213
+ }
214
+
215
+ static function inbound_compatibilities() {
216
+
217
+ if (isset($_GET['inbound-dequeue-scripts']) && current_user_can( 'manage_options' ) ) {
218
+
219
+ global $wp_query;
220
+ $current_page_id = $wp_query->get_queried_object_id();
221
+ $global_array = get_option( 'inbound_global_dequeue' );
222
+ if( is_admin() ) {
223
+ global $post;
224
+ $screen = get_current_screen();
225
+ $current = $screen->id;
226
+ $page_id = (isset($post->ID)) ? $post->ID : '';
227
+ } else {
228
+ $current = '';
229
+ $screen = '';
230
+ $page_id = $current_page_id;
231
+ }
232
+
233
+ //show_admin_bar( false );
234
+ wp_enqueue_script('inbound-dequeue-scripts', INBOUND_CLASS_URL . 'js/inbound-dequeue-scripts.js', array( 'jquery' ));
235
+ wp_localize_script( 'inbound-dequeue-scripts' , 'inbound_debug' , array( 'admin_url' => admin_url( 'admin-ajax.php' ), 'admin_screen' => $current, 'page_id' => $page_id));
236
+
237
+ global $wp_scripts;
238
+
239
+ $scripts_registers = $wp_scripts->registered;
240
+ //echo "<pre>";
241
+ //print_r($scripts_registers);
242
+ //echo $scripts_registers['common']->src;
243
+
244
+
245
+ $script_list = $wp_scripts->queue; // All enqueued scripts
246
+ $inbound_white_list = self::inbound_now_script_whitelist();
247
+ $wp_core_scripts = self::wp_core_script_whitelist();
248
+ // TURN OFF ALL OTHER SCRIPTS FOR DISABLING
249
+ $count = 0;
250
+ foreach ($script_list as $key => $value) {
251
+ // echo $key . $value;
252
+ if (!in_array($value, $inbound_white_list) && !in_array($value, $wp_core_scripts)){
253
+ wp_dequeue_script( $value );
254
+ $count++;
255
+ }
256
+
257
+ }
258
+ // If no scripts third party enqueued scripts leave
259
+
260
+ /* echo "<pre>";
261
+ print_r($wp_scripts->queue);
262
+ echo "</pre>"; */
263
+
264
+ echo '<style type="text/css" media="screen">
265
+ #launch-feedback {
266
+ display:none;
267
+ }
268
+ #group{text-align: left;border-bottom: 1px solid #fff;position:relative;margin:0 auto;padding:6px 10px 10px;background-image:linear-gradient(top,rgba(255,255,255,.1),rgba(0,0,0,.1));background-color:#555;width:300px}#group:after{content:" ";position:absolute;z-index:1;top:0;left:0;right:0;bottom:0;border-radius:5px}.switch{margin: 0px;position:relative;border:0;padding:0;width:245px;font-family:helvetica;font-weight:700;font-size:22px;color:#222;text-shadow:0 1px 0 rgba(255,255,255,.3)}.switch legend{float:left;width: 98px;padding:7px 10% 3px 0;text-align:left;}.switch input{position:absolute;opacity:0}.switch legend:after{content:"";position:absolute;top:0;left:50%;z-index:0;width:50%;height:100%;padding:2px;background-color:#222;border-radius:3px;box-shadow:inset -1px 2px 5px rgba(0,0,0,.8),0 1px 0 rgba(255,255,255,.2)}.switch label{position:relative;z-index:2;float:left;width:25%;margin-top:2px;padding:5px 0 3px;text-align:center;color:#64676b;text-shadow:0 1px 0 #000;cursor:pointer;transition:color 0s ease .1s}.switch input:checked+label{color:#fff}.switch input:focus+label{outline:0}.switch .switch-button{clear:both;position:absolute;top:-1px;left:50%;z-index:1;width:25%;height:100%;margin:2px;background-color:#70c66b;background-image:linear-gradient(top,rgba(255,255,255,.2),rgba(0,0,0,0));border-radius:3px;box-shadow:0 0 0 2px #70c66b,-2px 3px 2px #000;transition:all .3s ease-out}.switch .switch-button:after{content:" ";position:absolute;z-index:1;top:0;left:0;right:0;bottom:0;border-radius:3px;border:1px dashed #fff}#inbound-dequeue-id{display:none}.switch input:last-of-type:checked~.switch-button{left:75%}.switch .switch-button.status-off{background-color:red;box-shadow:0 0 0 3px red,-2px 3px 5px #000}.switch label.turn-on{color:#fff}
269
+ .script-info {padding-left:5px; position: absolute; z-index:999999999;}
270
+ .debug-plugin-name { font-size:13px; color:#fff; text-shadow:none; padding-bottom: 6px;
271
+ display: inline-block; }
272
+ .debug-plugin-name span.debug-head, .debug-script-head {color:#ccc; width: 45px;
273
+ display: inline-block;}
274
+ .js-title { display:block; margin-bottom: 7px; color:#fff;}
275
+ .fa-info-circle:before{ content: "\f05a"; font-family: FontAwesome !important; font-style:normal;}
276
+ #group:last-of-type {
277
+ padding-bottom:80px;
278
+ }
279
+ #main-debug-title {
280
+ font-family: helvetica;
281
+ font-weight: 700;
282
+ font-size: 22px;
283
+ color: #222;
284
+ background: #ccc;
285
+ padding: 10px;
286
+ text-align: center;
287
+ text-shadow: 0 1px 0 rgba(255,255,255,.3);
288
+ }
289
+ #no-js-to-turn-off {width: 286px;}
290
+ #no-js-to-turn-off span {font-size:22px; line-height:25px; padding:10px; display:inline-block;}
291
+ #debug-close-link { color:red; float:right; font-size:10px; text-decoration:none;}
292
+ </style>';
293
+
294
+ $script_data = get_post_meta( $current_page_id , 'inbound_dequeue_js', TRUE );
295
+ $script_data = json_decode($script_data,true);
296
+ $close_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
297
+ $close_link = str_replace(array("&inbound-dequeue-scripts", "?inbound-dequeue-scripts"), "", $close_link);
298
+
299
+ echo '<div id="inbound-fix-page" class="'.$current_page_id.'" data-page-id="'.$page_id.'" data-admin-screen="'.$current.'" style="position:fixed; right:0px; padding-bottom: 80px; background-color: #555; overflow:auto; height: 100%; top: 32px; background:#fff; border: 1px solid; z-index: 999999999999; line-height: 1; width: 317px;">';
300
+ echo "<div id='main-debug-title'>Turn off Javascript<a id='debug-close-link' href='".$close_link."'>Close</a></div>";
301
+ if ($count === 0) {
302
+ echo "<div id='no-js-to-turn-off'><span style=''>No javascript files found to dequeue</span></div></div>";
303
+ return;
304
+ }
305
+ echo "<span id='inbound-dequeue-id'>".$current_page_id."</span>";
306
+
307
+ foreach ($script_list as $key => $value) {
308
+ if (!in_array($value, $inbound_white_list) && !in_array($value, $wp_core_scripts)){
309
+ $checked = "";
310
+ $status_class = "";
311
+ // Kill bad frontend script
312
+ if (isset($script_data[$value]) && in_array($script_data[$value], $script_data)){
313
+ $checked = "checked";
314
+ $status_class = "status-off";
315
+ wp_dequeue_script( $value ); // Kill bad script
316
+ }
317
+ // Kill bad admin script
318
+ if (is_array($global_array)) {
319
+ if (is_admin() && array_key_exists($value, $global_array)) {
320
+
321
+ if ($current === $global_array[$value] ) {
322
+ $checked = "checked";
323
+ $status_class = "status-off";
324
+ wp_dequeue_script( $value ); // Kill bad script
325
+ }
326
+ }
327
+ }
328
+
329
+ $actual_link = $scripts_registers[$value]->src;
330
+ str_replace("?frontend=false", "", $actual_link);
331
+ preg_match('/plugins\/([^\/]+?)\/(?:[^\/]+\/)?(.+)/', $actual_link, $matches);
332
+ preg_match('/themes\/([^\/]+?)\/(?:[^\/]+\/)?(.+)/', $actual_link, $matches_two);
333
+
334
+ $name_of_file = (isset($matches_two[1])) ? "<span class='debug-head'>Theme:</span> " . $matches_two[1] : '';
335
+ if ($name_of_file === "") {
336
+ $name_of_file = (isset($matches[1])) ? "<span class='debug-head'>Plugin:</span> " . $matches[1] : '<span class="debug-head">From:</span> Wordpress Core Script <span style="color:#db3d3d; font-size:12px;">(Don\'t turn off)</span>';
337
+ }
338
+
339
+
340
+ echo '<div id="group">';
341
+ echo '<span class="debug-plugin-name">'.$name_of_file.'</span>';
342
+ echo "<div class='js-title'><span class='debug-script-head'>Script:</span> ". $value ."<span title='".$scripts_registers[$value]->src."' class='script-info'><i class='fa fa-info-circle'></i></span></div>";
343
+ echo '<fieldset class="switch" id="'.$value.'">
344
+ <legend>Status:</legend>
345
+
346
+ <input id="'.$value.'-on" name="'.$value.'-status" type="radio" '.$checked.'>
347
+ <label for="'.$value.'-on" class="turn-on">On</label>
348
+
349
+ <input id="'.$value.'-off" name="'.$value.'-status" type="radio" '.$checked.'>
350
+ <label for="'.$value.'-off" class="turn-off">Off</label>
351
+
352
+ <span class="switch-button '.$status_class.'"></span>
353
+ </fieldset>
354
+
355
+ </div>';
356
+ }
357
+ }
358
+ echo "</div>";
359
+
360
+ // This will control the dequing
361
+ /*
362
+ foreach ($scripts_queued as $key => $value) {
363
+ //echo $key . $value;
364
+ if (!in_array($value, $white_list_scripts)){
365
+ wp_dequeue_script( $value );
366
+ }
367
+
368
+ } */
369
+ }
370
+
371
+ }
372
+ }
373
+ }
374
+ /* Initialize InboundNow Debug
375
+ * --------------------------------------------------------- */
376
+
377
+ InboundDebugScripts::init();
378
+
379
+ ?>
shared/classes/feedback.class.php CHANGED
@@ -26,7 +26,7 @@ if (!class_exists('InboundFeedback')) {
26
  $leads_status = FALSE; $landing_page_status = FALSE; $cta_status = FALSE;
27
  if (function_exists( 'is_plugin_active' ) && is_plugin_active('leads/wordpress-leads.php')) {
28
  $leads_status = TRUE;
29
- $leads_version_number = defined( 'LEADS_CURRENT_VERSION' ) ? 'v' . LEADS_CURRENT_VERSION : '';
30
  }
31
  if (function_exists( 'is_plugin_active' ) && is_plugin_active('landing-pages/landing-pages.php')) {
32
  $landing_page_status = TRUE;
26
  $leads_status = FALSE; $landing_page_status = FALSE; $cta_status = FALSE;
27
  if (function_exists( 'is_plugin_active' ) && is_plugin_active('leads/wordpress-leads.php')) {
28
  $leads_status = TRUE;
29
+ $leads_version_number = defined( 'WPL_CURRENT_VERSION' ) ? 'v' . WPL_CURRENT_VERSION : '';
30
  }
31
  if (function_exists( 'is_plugin_active' ) && is_plugin_active('landing-pages/landing-pages.php')) {
32
  $landing_page_status = TRUE;
shared/classes/form.class.php CHANGED
@@ -399,7 +399,7 @@ class InboundForms {
399
  }
400
 
401
  //print_r($form_meta_data); exit;
402
- //print_r($form_data); exit;
403
 
404
  $form_email = false;
405
  foreach ($form_data as $key => $value) {
@@ -704,7 +704,7 @@ class InboundForms {
704
  $content_post = get_post($my_postid);
705
  $content = $content_post->post_content;
706
  $confirm_subject = get_post_meta( $my_postid, 'inbound_confirmation_subject', TRUE );
707
- //$content = apply_filters('the_content', $content);
708
  $content = str_replace(']]>', ']]&gt;', $content);
709
  $confirm_email_message = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
710
  <html>
399
  }
400
 
401
  //print_r($form_meta_data); exit;
402
+ //print_r($form_data); exit;
403
 
404
  $form_email = false;
405
  foreach ($form_data as $key => $value) {
704
  $content_post = get_post($my_postid);
705
  $content = $content_post->post_content;
706
  $confirm_subject = get_post_meta( $my_postid, 'inbound_confirmation_subject', TRUE );
707
+ $content = apply_filters('the_content', $content);
708
  $content = str_replace(']]>', ']]&gt;', $content);
709
  $confirm_email_message = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
710
  <html>
shared/classes/js/debug.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var errors = [];
2
+ window.onerror = function(msg, url, linenumber) {
3
+ //alert('Error message: '+msg+' URL: '+url+' Line Number: '+linenumber);
4
+ errors.push(msg + ' from ' + url + ' on line ' +linenumber);
5
+ }
6
+ jQuery(document).ready(function($) {
7
+ var url = window.location.href;
8
+ var match = url.match(/\?inbound_js/);
9
+ var param = "?";
10
+ if(match) {
11
+ var param = "?";
12
+ }
13
+ var url = url.replace('?inbound_js', '');
14
+ var url = url.replace('&inbound_js', '') + param + "inbound-dequeue-scripts";
15
+ setTimeout(function() {
16
+ document.write("<strong>Below are the javascript errors on this page</strong> " + "<br>");
17
+ /*if (errors.length === 0 ) {
18
+ document.write("<strong style="color:green;">None Detected</strong> " + "<br>");
19
+ }*/
20
+ document.write("<div id='errors-here'>");
21
+ for (var i=0,len=errors.length; i<len; i++){
22
+ document.write(i + 1 + ". " + errors[i] + "<br>");
23
+ }
24
+ document.write("</div>");
25
+ document.write("<div style=\'margin-top:20px;\'><strong>You need to fix these errors for things to work. There are 3 options:</strong> " + "<br>");
26
+ document.write("<strong>1. <a href=\'" +url+ "\'>Click here and dequeue (turn off) the broken javascript files</a> from this page.</strong> " + "<br>");
27
+ document.write("<strong>2. Contact the original developer of the plugin/theme causing the error.</strong> " + "<br>");
28
+ document.write("<strong>3. Disable the plugin or theme causing the conflict.</strong> " + "<br></div>");
29
+ }, 500);
30
+ setTimeout(function() {
31
+ var theDiv = document.getElementById("errors-here");
32
+ if(theDiv.innerHTML.length == 0){
33
+ theDiv.innerHTML = "<strong style='color:green;''>No JS Errors Detected</strong> " + "<br><br>" + "Sometimes errors are not detectatble by this handy tool, to double check please <a href='http://www.youtube.com/watch?v=x19VOytW9DM'>follow these instructions</a>";
34
+ theDiv.style.display="inline";
35
+ }
36
+ }, 1000);
37
+ });
shared/classes/js/inbound-dequeue-scripts.js ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function($) {
2
+ jQuery("body").on('click', 'label', function () {
3
+
4
+ var status = jQuery(this).attr('class');
5
+ var status = status.replace('turn-', "");
6
+ if (status === 'off') {
7
+ jQuery(this).parent().find('.switch-button').addClass('status-off');
8
+ } else {
9
+ jQuery(this).parent().find('.switch-button').removeClass('status-off');
10
+ }
11
+ var the_script = jQuery(this).parent().attr('id');
12
+ var post_id = $('#inbound-dequeue-id').text();
13
+ var admin_screen = $('#inbound-fix-page').attr('data-admin-screen');
14
+ if (typeof (admin_screen) != "undefined" && admin_screen != null && admin_screen != "") {
15
+ var admin_screen = admin_screen;
16
+ var action = 'inbound_dequeue_admin_js'
17
+ } else {
18
+ var admin_screen = "";
19
+ var action = 'inbound_dequeue_js'
20
+ }
21
+ console.log(the_script);
22
+ console.log(status);
23
+
24
+ jQuery.ajax({
25
+ type: 'POST',
26
+ url: inbound_debug.admin_url,
27
+ context: this,
28
+ data: {
29
+ action: action,
30
+ post_id: post_id,
31
+ status: status,
32
+ the_script: the_script,
33
+ admin_screen: admin_screen
34
+ },
35
+
36
+ success: function (data) {
37
+ console.log("The script " + the_script + " has been turned " + status);
38
+ var self = this;
39
+ var str = data;
40
+ var obj = JSON.parse(str);
41
+ console.log(obj);
42
+ },
43
+
44
+ error: function (MLHttpRequest, textStatus, errorThrown) {
45
+ alert("Ajax not enabled");
46
+ }
47
+ });
48
+ });
49
+ });
shared/classes/menu.class.php CHANGED
@@ -37,7 +37,7 @@ if (!class_exists('InboundMenu')) {
37
  $leads_status = FALSE; $landing_page_status = FALSE; $cta_status = FALSE;
38
  if (function_exists( 'is_plugin_active' ) && is_plugin_active('leads/wordpress-leads.php')) {
39
  $leads_status = TRUE;
40
- $leads_version_number = defined( 'LEADS_CURRENT_VERSION' ) ? 'v' . LEADS_CURRENT_VERSION : '';
41
  }
42
  if (function_exists( 'is_plugin_active' ) && is_plugin_active('landing-pages/landing-pages.php')) {
43
  $landing_page_status = TRUE;
@@ -99,6 +99,7 @@ if (!class_exists('InboundMenu')) {
99
  $inboundsupportsections = $prefix . 'inboundsupportsections'; // third level: support sections
100
  $inboundsupportaccount = $prefix . 'inboundsupportaccount'; // third level: support user account
101
  $inboundsites = $prefix . 'inboundsites'; // sub level: edd sites
 
102
  $inboundsitesaccount = $prefix . 'inboundsitesaccount';
103
  $inboundsitesextensions = $prefix . 'inboundsitesextensions'; // third level: edd extensions
104
  $landingpages_menu = $prefix . 'landingpages';
@@ -219,6 +220,18 @@ if (!class_exists('InboundMenu')) {
219
  'title' => __( 'Leads', 'edd-toolbar' ),
220
  'href' => admin_url( 'edit.php?post_type=inbound-forms' ),
221
  'meta' => array( 'target' => '', 'title' => _x( 'Manage Forms', 'edd-toolbar' ) )
 
 
 
 
 
 
 
 
 
 
 
 
222
  );
223
  $menu_items['leads-view'] = array(
224
  'parent' => $leads_menu,
@@ -226,9 +239,15 @@ if (!class_exists('InboundMenu')) {
226
  'href' => admin_url( 'edit.php?post_type=wp-lead' ),
227
  'meta' => array( 'target' => '', 'title' => __( 'View All Forms', 'edd-toolbar' ) )
228
  );
 
 
 
 
 
 
229
  $menu_items['leads-add'] = array(
230
  'parent' => $leads_menu,
231
- 'title' => __( 'Manually Create New Lead', LANDINGPAGES_TEXT_DOMAIN ),
232
  'href' => admin_url( 'post-new.php?post_type=wp-lead' ),
233
  'meta' => array( 'target' => '', 'title' => __( 'Add new lead', 'edd-toolbar' ) )
234
  );
@@ -396,6 +415,42 @@ if (!class_exists('InboundMenu')) {
396
  'meta' => array( 'title' => $eddtb_edd_name_tooltip . ' ' . __( 'Plugin HQ', 'edd-toolbar' ) )
397
  );
398
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
399
  /** HQ: GitHub */
400
  $inboundsecondary_menu_items['inboundsites-dev'] = array(
401
  'parent' => $inboundsites,
@@ -539,7 +594,7 @@ if (!class_exists('InboundMenu')) {
539
  'meta' => array( 'class' => 'ab-sub-secondary' )
540
  ) );
541
 
542
-
543
  // Load grey secondary items
544
  foreach ( $inboundsecondary_menu_items as $id => $inboundgroup_menu_item ) {
545
 
@@ -565,7 +620,7 @@ if (!class_exists('InboundMenu')) {
565
  $wp_admin_bar->add_menu( $inboundgroup_menu_item );
566
 
567
  } // end foreach EDD Group
568
-
569
 
570
  /**
571
  * Action Hook 'eddtb_custom_group_items'
@@ -591,7 +646,9 @@ if (!class_exists('InboundMenu')) {
591
  } else {
592
  $final_path = preg_replace("/\/shared\/inbound-shortcodes\//", "/", INBOUND_FORMS);
593
  }
 
594
  ?>
 
595
  <script type="text/javascript">
596
  /* <![CDATA[ */
597
  // Load inline scripts var freshthemes_theme_dir = "<?php // echo INBOUND_FORMS; ?>", test = "<?php // _e('Insert Shortcode', INBOUND_LABEL); ?>";
37
  $leads_status = FALSE; $landing_page_status = FALSE; $cta_status = FALSE;
38
  if (function_exists( 'is_plugin_active' ) && is_plugin_active('leads/wordpress-leads.php')) {
39
  $leads_status = TRUE;
40
+ $leads_version_number = defined( 'WPL_CURRENT_VERSION' ) ? 'v' . WPL_CURRENT_VERSION : '';
41
  }
42
  if (function_exists( 'is_plugin_active' ) && is_plugin_active('landing-pages/landing-pages.php')) {
43
  $landing_page_status = TRUE;
99
  $inboundsupportsections = $prefix . 'inboundsupportsections'; // third level: support sections
100
  $inboundsupportaccount = $prefix . 'inboundsupportaccount'; // third level: support user account
101
  $inboundsites = $prefix . 'inboundsites'; // sub level: edd sites
102
+ $inbounddebug = $prefix . 'inbounddebug';
103
  $inboundsitesaccount = $prefix . 'inboundsitesaccount';
104
  $inboundsitesextensions = $prefix . 'inboundsitesextensions'; // third level: edd extensions
105
  $landingpages_menu = $prefix . 'landingpages';
220
  'title' => __( 'Leads', 'edd-toolbar' ),
221
  'href' => admin_url( 'edit.php?post_type=inbound-forms' ),
222
  'meta' => array( 'target' => '', 'title' => _x( 'Manage Forms', 'edd-toolbar' ) )
223
+ );
224
+ /** Leads search form */
225
+ $leads_search_text = "Search All Leads";
226
+ $menu_items['leads-search'] = array(
227
+ 'parent' => $leads_menu,
228
+ 'title' => '<form method="get" action="'.admin_url( 'edit.php?post_type=wp-lead' ).'" class=" " target="_blank">
229
+ <input type="text" placeholder="' . $leads_search_text . '" onblur="this.value=(this.value==\'\') ? \'' . $leads_search_text . '\' : this.value;" onfocus="this.value=(this.value==\'' . $leads_search_text . '\') ? \'\' : this.value;" value="' . $leads_search_text . '" name="s" value="' . esc_attr( 'Search Leads', 'edd-toolbar' ) . '" class="text eddtb-search-input" />
230
+ <input type="hidden" name="post_type" value="wp-lead" />
231
+ <input type="hidden" name="post_status" value="all" />
232
+ ' . $eddtb_go_button,
233
+ 'href' => false,
234
+ 'meta' => array( 'target' => '', 'title' => _x( 'Search Leads', 'Translators: For the tooltip', 'edd-toolbar' ) )
235
  );
236
  $menu_items['leads-view'] = array(
237
  'parent' => $leads_menu,
239
  'href' => admin_url( 'edit.php?post_type=wp-lead' ),
240
  'meta' => array( 'target' => '', 'title' => __( 'View All Forms', 'edd-toolbar' ) )
241
  );
242
+ $menu_items['leads-list'] = array(
243
+ 'parent' => $leads_menu,
244
+ 'title' => __( 'View Lead Lists', LANDINGPAGES_TEXT_DOMAIN ),
245
+ 'href' => admin_url( 'edit.php?post_type=list' ),
246
+ 'meta' => array( 'target' => '', 'title' => __( 'View Lead Lists', 'edd-toolbar' ) )
247
+ );
248
  $menu_items['leads-add'] = array(
249
  'parent' => $leads_menu,
250
+ 'title' => __( 'Create New Lead', LANDINGPAGES_TEXT_DOMAIN ),
251
  'href' => admin_url( 'post-new.php?post_type=wp-lead' ),
252
  'meta' => array( 'target' => '', 'title' => __( 'Add new lead', 'edd-toolbar' ) )
253
  );
415
  'meta' => array( 'title' => $eddtb_edd_name_tooltip . ' ' . __( 'Plugin HQ', 'edd-toolbar' ) )
416
  );
417
 
418
+ /** Easy Digital Downloads HQ menu items */
419
+ $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
420
+
421
+ $param = (preg_match("/\?/", $actual_link)) ? "&" : '?';
422
+ if (preg_match("/inbound-dequeue-scripts/", $actual_link)) {
423
+ $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
424
+ } else {
425
+ $actual_link = $actual_link . $param .'inbound-dequeue-scripts';
426
+ }
427
+ $actual_link_two = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
428
+ $param_two = (preg_match("/\?/", $actual_link_two)) ? "&" : '?';
429
+ if (preg_match("/inbound_js/", $actual_link_two)) {
430
+ $actual_link_two = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
431
+ } else {
432
+ $actual_link_two = $actual_link_two . $param_two .'inbound_js';
433
+ }
434
+ $inboundsecondary_menu_items['inbounddebug'] = array(
435
+ 'parent' => $inboundgroup,
436
+ 'title' => __( '<span style="color:red;">Debug Tools</span>', 'edd-toolbar' ),
437
+ 'href' => "#",
438
+ 'meta' => ""
439
+ );
440
+ $inboundsecondary_menu_items['inbounddebug-checkjs'] = array(
441
+ 'parent' => $inbounddebug,
442
+ 'title' => __( 'Check for Javascript Errors', 'edd-toolbar' ),
443
+ 'href' => $actual_link_two,
444
+ 'meta' => array( 'title' => __( 'Click here to check javascript errors on this page', 'edd-toolbar' ) )
445
+ );
446
+
447
+ $inboundsecondary_menu_items['inbounddebug-turnoffscripts'] = array(
448
+ 'parent' => $inbounddebug,
449
+ 'title' => __( 'Remove Javascript Errors', 'edd-toolbar' ),
450
+ 'href' => $actual_link,
451
+ 'meta' => array( 'title' => __( 'Click here to remove broken javascript to fix issues', 'edd-toolbar' ) )
452
+ );
453
+
454
  /** HQ: GitHub */
455
  $inboundsecondary_menu_items['inboundsites-dev'] = array(
456
  'parent' => $inboundsites,
594
  'meta' => array( 'class' => 'ab-sub-secondary' )
595
  ) );
596
 
597
+ if (is_array($inboundsecondary_menu_items)) {
598
  // Load grey secondary items
599
  foreach ( $inboundsecondary_menu_items as $id => $inboundgroup_menu_item ) {
600
 
620
  $wp_admin_bar->add_menu( $inboundgroup_menu_item );
621
 
622
  } // end foreach EDD Group
623
+ }
624
 
625
  /**
626
  * Action Hook 'eddtb_custom_group_items'
646
  } else {
647
  $final_path = preg_replace("/\/shared\/inbound-shortcodes\//", "/", INBOUND_FORMS);
648
  }
649
+
650
  ?>
651
+
652
  <script type="text/javascript">
653
  /* <![CDATA[ */
654
  // Load inline scripts var freshthemes_theme_dir = "<?php // echo INBOUND_FORMS; ?>", test = "<?php // _e('Insert Shortcode', INBOUND_LABEL); ?>";
shared/docs/shortcodes.md ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ #Inbound Shortcodes
2
+
3
+ List Icons: http://www.inboundnow.com/create-awesome-unordered-lists-with-icons/
shared/inbound-shortcodes/css/frontend-render.css CHANGED
@@ -23,6 +23,9 @@ padding-right: 5px;
23
  .inbound-label.inbound-label-placeholder {
24
  display: none;
25
  }
 
 
 
26
  .inbound-horizontal {
27
  display: inline-block;
28
  }
@@ -73,10 +76,15 @@ width: 99.2%;
73
  margin: 10px 0;
74
  max-width: 98%;
75
  }
 
 
 
 
 
76
  #inbound-form-wrapper input[type=text], #inbound-form-wrapper input[type=url], #inbound-form-wrapper input[type=email], #inbound-form-wrapper input[type=tel], #inbound-form-wrapper input[type=number], #inbound-form-wrapper input[type=password] {
77
  width: 47%;
78
  }
79
-
80
  #inbound-form-wrapper .inbound-horizontal input[type=text], #inbound-form-wrapper .inbound-horizontal input[type=url], #inbound-form-wrapper .inbound-horizontal input[type=email], #inbound-form-wrapper .inbound-horizontal input[type=tel], #inbound-form-wrapper .inbound-horizontal input[type=number], #inbound-form-wrapper .inbound-horizontal input[type=password] {
81
  width: 88%;
82
  }
@@ -717,7 +725,7 @@ ul.tabs-nav li:last-child{
717
 
718
  /* Content Box
719
  * ----------------------------------------------------- */
720
- .content-box{
721
  background: #f2f2f2;
722
  border: 1px solid #EBEBEA;
723
  -webkit-box-shadow: inset 1px 1px 1px rgba(255,255,255,0.5);
@@ -728,31 +736,31 @@ ul.tabs-nav li:last-child{
728
  position: relative;
729
  text-shadow: 1px 1px 1px rgba(255,255,255,0.5);
730
  }
731
- .content-box > p:last-child{
732
  margin-bottom: 0;
733
  }
734
- .content-box.blue{
735
  background: #EEF9FC;
736
  border: 1px solid #dfecf9;
737
  }
738
- .content-box.green{
739
  background: #E9FFD6;
740
  border: 1px solid #D4F2BB;
741
  }
742
- .content-box.red{
743
  background: #FCE3E3;
744
  border: 1px solid #fcd1d1;
745
  }
746
- .content-box.yellow{
747
  background: #fcf7d1;
748
  border: 1px solid #f2ebba;
749
  }
750
- .content-box h1,
751
- .content-box h2,
752
- .content-box h3,
753
- .content-box h4,
754
- .content-box h5,
755
- .content-box h6{
756
  margin-bottom: 10px;
757
  }
758
 
@@ -1054,4 +1062,4 @@ color: #717171;
1054
  -o-box-shadow: inset 0px 2px 3px #aaa, 0px 1px 0 #B5B5B5;
1055
  -khtml-box-shadow: inset 0px 2px 3px #aaa, 0px 1px 0 #B5B5B5;
1056
  box-shadow: inset 0px 2px 3px #AAA, 0px 1px 0 #B5B5B5;
1057
- }
23
  .inbound-label.inbound-label-placeholder {
24
  display: none;
25
  }
26
+ .inbound-label.inbound-label-placeholder.inbound-input-dropdown {
27
+ display: block;
28
+ }
29
  .inbound-horizontal {
30
  display: inline-block;
31
  }
76
  margin: 10px 0;
77
  max-width: 98%;
78
  }
79
+
80
+ .inbound-field input[type=text], .inbound-field input[type=url], .inbound-field input[type=email], .inbound-field input[type=tel], .inbound-field input[type=number], .inbound-field input[type=password] {
81
+ width: 47%;
82
+ }
83
+ /*
84
  #inbound-form-wrapper input[type=text], #inbound-form-wrapper input[type=url], #inbound-form-wrapper input[type=email], #inbound-form-wrapper input[type=tel], #inbound-form-wrapper input[type=number], #inbound-form-wrapper input[type=password] {
85
  width: 47%;
86
  }
87
+ */
88
  #inbound-form-wrapper .inbound-horizontal input[type=text], #inbound-form-wrapper .inbound-horizontal input[type=url], #inbound-form-wrapper .inbound-horizontal input[type=email], #inbound-form-wrapper .inbound-horizontal input[type=tel], #inbound-form-wrapper .inbound-horizontal input[type=number], #inbound-form-wrapper .inbound-horizontal input[type=password] {
89
  width: 88%;
90
  }
725
 
726
  /* Content Box
727
  * ----------------------------------------------------- */
728
+ .inbound-content-box{
729
  background: #f2f2f2;
730
  border: 1px solid #EBEBEA;
731
  -webkit-box-shadow: inset 1px 1px 1px rgba(255,255,255,0.5);
736
  position: relative;
737
  text-shadow: 1px 1px 1px rgba(255,255,255,0.5);
738
  }
739
+ .inbound-content-box > p:last-child{
740
  margin-bottom: 0;
741
  }
742
+ .inbound-content-box.blue{
743
  background: #EEF9FC;
744
  border: 1px solid #dfecf9;
745
  }
746
+ .inbound-content-box.green{
747
  background: #E9FFD6;
748
  border: 1px solid #D4F2BB;
749
  }
750
+ .inbound-content-box.red{
751
  background: #FCE3E3;
752
  border: 1px solid #fcd1d1;
753
  }
754
+ .inbound-content-box.yellow{
755
  background: #fcf7d1;
756
  border: 1px solid #f2ebba;
757
  }
758
+ .inbound-content-box h1,
759
+ .inbound-content-box h2,
760
+ .inbound-content-box h3,
761
+ .inbound-content-box h4,
762
+ .inbound-content-box h5,
763
+ .inbound-content-box h6{
764
  margin-bottom: 10px;
765
  }
766
 
1062
  -o-box-shadow: inset 0px 2px 3px #aaa, 0px 1px 0 #B5B5B5;
1063
  -khtml-box-shadow: inset 0px 2px 3px #aaa, 0px 1px 0 #B5B5B5;
1064
  box-shadow: inset 0px 2px 3px #AAA, 0px 1px 0 #B5B5B5;
1065
+ }
shared/inbound-shortcodes/images/facebook@2x.png ADDED
Binary file
shared/inbound-shortcodes/images/google@2x.png ADDED
Binary file
shared/inbound-shortcodes/images/linkedin@2x.png ADDED
Binary file
shared/inbound-shortcodes/images/pinterest@2x.png ADDED
Binary file
shared/inbound-shortcodes/images/twitter@2x.png ADDED
Binary file
shared/inbound-shortcodes/inbound-shortcodes.php CHANGED
@@ -4,98 +4,110 @@
4
  //=============================================
5
  // Define constants
6
  //=============================================
7
- if (!defined('INBOUND_FORMS')) {
8
  define('INBOUND_FORMS', plugin_dir_url(__FILE__));
9
- }
10
- if (!defined('INBOUND_FORMS_PATH')) {
11
  define('INBOUND_FORMS_PATH', plugin_dir_path(__FILE__));
12
- }
13
- if (!defined('INBOUND_FORMS_BASENAME')) {
14
  define('INBOUND_FORMS_BASENAME', plugin_basename(__FILE__));
15
- }
16
- if (!defined('INBOUND_FORMS_ADMIN')) {
17
  define('INBOUND_FORMS_ADMIN', get_bloginfo('url') . "/wp-admin");
18
- }
19
 
20
- if (!defined('INBOUND_LABEL')) {
21
- define( 'INBOUND_LABEL', str_replace( ' ', '_', strtolower( 'Inbound Now' ) ) );
22
- }
23
 
24
  require_once( 'shortcodes-includes.php' );
25
 
26
  /* InboundNow Shortcodes Class
27
  * --------------------------------------------------------- */
28
  if (!class_exists('InboundShortcodes')) {
 
29
  class InboundShortcodes {
30
  static $add_script;
31
 
32
- /* Contruct
33
- * --------------------------------------------------------- */
34
  static function init() {
 
35
  self::$add_script = true;
36
  add_action('admin_enqueue_scripts', array( __CLASS__, 'loads' ));
37
  add_action('init', array( __CLASS__, 'shortcodes_tinymce' ));
 
38
  add_action( 'wp_enqueue_scripts', array(__CLASS__, 'frontend_loads')); // load styles
39
  add_shortcode('list', array(__CLASS__, 'inbound_shortcode_list'));
40
  add_shortcode('button', array(__CLASS__, 'inbound_shortcode_button'));
41
  add_shortcode('social_share', array(__CLASS__, 'inbound_shortcode_social_links'));
42
  }
 
43
  // Set Consistant File Paths for inbound now plugins
44
  static function set_file_path(){
45
- if (is_plugin_active('leads/wordpress-leads.php')) {
46
- $final_path = WPL_URL . "/";
47
- } else if (is_plugin_active('landing-pages/landing-pages.php')) {
48
- $final_path = LANDINGPAGES_URLPATH;
49
- } else if (is_plugin_active('cta/wordpress-cta.php')) {
50
- $final_path = WP_CTA_URLPATH;
 
 
51
  }
52
  return $final_path;
53
  }
54
- /* Loads
55
- * --------------------------------------------------------- */
 
56
  static function loads($hook) {
57
  global $post;
58
  $final_path = self::set_file_path();
59
- if ( $hook == 'post.php' || $hook == 'post-new.php' || $hook == 'page-new.php' || $hook == 'page.php' ) {
60
-
61
- wp_enqueue_style('inbound-shortcodes', $final_path.'shared/inbound-shortcodes/css/shortcodes.css');
62
- wp_enqueue_script('jquery-ui-sortable' );
63
- wp_enqueue_script('inbound-shortcodes-plugins', $final_path.'shared/inbound-shortcodes/js/shortcodes-plugins.js');
64
- wp_enqueue_script('inbound-shortcodes', $final_path.'shared/inbound-shortcodes/js/shortcodes.js');
65
- $form_id = (isset($_GET['post'])) ? $_GET['post'] : '';
66
- wp_localize_script( 'inbound-shortcodes', 'inbound_shortcodes', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'inbound_shortcode_nonce' => wp_create_nonce('inbound-shortcode-nonce') , 'form_id' => $form_id ) );
67
- wp_enqueue_script('selectjs', $final_path.'shared/inbound-shortcodes/js/select2.min.js');
68
- wp_enqueue_style('selectjs', $final_path.'shared/inbound-shortcodes/css/select2.css');
69
-
70
- // Forms CPT only
71
- if ( ( isset($post) && 'inbound-forms' === $post->post_type ) || ( isset($_GET['post_type']) && $_GET['post_type']==='inbound-forms' ) ) {
72
- wp_enqueue_style('inbound-forms-css', $final_path.'shared/inbound-shortcodes/css/form-cpt.css');
73
- wp_enqueue_script('inbound-forms-cpt-js', $final_path.'shared/inbound-shortcodes/js/form-cpt.js');
74
- wp_localize_script( 'inbound-forms-cpt-js', 'inbound_forms', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'inbound_shortcode_nonce' => wp_create_nonce('inbound-shortcode-nonce'), 'form_cpt' => 'on' ) );
75
- }
76
- // Check for active plugins and localize
77
- $plugins_loaded = array();
78
-
79
- if (is_plugin_active('landing-pages/landing-pages.php')) {
80
- array_push($plugins_loaded, "landing-pages");
81
- }
82
-
83
- if (is_plugin_active('cta/wordpress-cta.php')) {
84
- array_push($plugins_loaded, "cta");
85
- }
86
- if (is_plugin_active('leads/wordpress-leads.php')) {
87
- array_push($plugins_loaded, "leads");
88
- }
89
-
90
- wp_localize_script( 'inbound-shortcodes', 'inbound_load', array( 'image_dir' => $final_path.'shared/inbound-shortcodes/', 'inbound_plugins' => $plugins_loaded, 'pop_title' => 'Insert Shortcode' ));
91
-
92
- if (isset($post)&&$post->post_type=='inbound-forms')
93
- {
94
- require_once( 'shortcodes-fields.php' );
95
- add_action( 'admin_footer', array(__CLASS__, 'inbound_forms_header_area'));
96
- }
97
-
98
- //add_action('admin_head', array( __CLASS__, 'shortcodes_admin_head' ));
 
 
 
 
 
 
99
  }
100
  }
101
 
@@ -215,7 +227,7 @@ class InboundShortcodes {
215
  return $button;
216
  }
217
  static function inbound_shortcode_social_links( $atts, $content = null ) {
218
- $final_path = self::set_file_path();
219
  extract(shortcode_atts(array(
220
  'style' => 'bar',
221
  'align' => '',
@@ -246,8 +258,7 @@ class InboundShortcodes {
246
  $alignment = 'inline-block';
247
  $margin_setting = 'margin-right';
248
  if($heading_align == 'inline' ){
249
- $header_align = "display:inline-block; padding-right: 10px; height: 32px;
250
- vertical-align: top;";
251
  $float = "float: left;";
252
  }
253
 
@@ -267,14 +278,35 @@ class InboundShortcodes {
267
  $text = get_the_title();
268
  }
269
 
270
- $out = '';
271
- $out .= '<style type="text/css">
272
-
273
- a.mt-share-inline-bar-sm img {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  width: 34px;
275
  height: auto;
276
  border: 0px;
277
  }
 
 
 
278
  .inbound-social-share-header {
279
  vertical-align: middle;
280
  }
@@ -296,7 +328,6 @@ class InboundShortcodes {
296
  transition: all 100ms ease-in;
297
  -webkit-transition: all 100ms ease-in;
298
  -webkit-transform: scale3d(1, 1, 1);
299
-
300
  }
301
  a.mt-share-inline-circle-sm img {
302
  width: 34px;
@@ -312,7 +343,6 @@ class InboundShortcodes {
312
  border-bottom-right-radius: 50%;
313
  border-bottom-left-radius: 50%;
314
  '.$margin_setting.': 4px;
315
-
316
  }
317
  a.mt-share-inline-square-sm img {
318
  width: 34px;
@@ -327,9 +357,7 @@ class InboundShortcodes {
327
  border-top-right-radius: 2px;
328
  border-bottom-right-radius: 2px;
329
  border-bottom-left-radius: 2px;
330
- '.$margin_setting.': 4px;
331
-
332
- }
333
  .mt-google:hover {
334
  background-color: rgb(225, 95, 79);
335
  }
@@ -392,47 +420,7 @@ class InboundShortcodes {
392
  background-color: rgb(51, 51, 51);
393
  transition: background-color 300ms ease-in;
394
  -webkit-transition: background-color 300ms ease-in;
395
-
396
- }
397
- </style>';
398
- if ($heading != ""){
399
- $heading = "<span class='inbound-social-share-header' style='$header_align'>$heading</span>";
400
- }
401
- $out .= '<span class="inbound-social-share-bar-container">' . $heading . "<span style='$header_align'>";
402
- if( $facebook ) {
403
- $out .= '<a class="mt-facebook '.$class.'" style="'.$float.'"
404
- href="https://www.facebook.com/sharer/sharer.php?u='.$link.'">
405
- <img src="'.$final_path.'shared/inbound-shortcodes/images/facebook@2x.png">
406
- </a>';
407
- }
408
- if( $twitter ) {
409
- $out .= '
410
- <a class="mt-twitter '.$class.'" style="'.$float.'"
411
- href="http://twitter.com/intent/tweet?text='.$text.'&amp;url='.$link.'" target="_blank">
412
- <img src="'.$final_path.'shared/inbound-shortcodes/images/twitter@2x.png">
413
- </a>';
414
- }
415
- if( $google_plus ) {
416
- $out .= '<a class="mt-google '.$class.'" style="'.$float.'"
417
- href="https://plus.google.com/share?url='.$link.'">
418
- <img src="'.$final_path.'shared/inbound-shortcodes/images/google@2x.png">
419
- </a>';
420
- }
421
- if( $linkedin ) {
422
- $out .= ' <a class="mt-linkedin '.$class.'" style="'.$float.'"
423
- href="http://www.linkedin.com/shareArticle?mini=true&amp;url='.$link.'&amp;summary='.$text.'">
424
- <img src="'.$final_path.'shared/inbound-shortcodes/images/linkedin@2x.png">
425
- </a>';
426
- }
427
- if( $pinterest ) {
428
- $out .= '<a class="mt-pinterest '.$class.'" style="'.$float.'"
429
- href="http://www.pinterest.com/pin/create/button/?url='.$link.'&amp;media=&amp;guid=1234&amp;description='.$text.'">
430
- <img src="'.$final_path.'shared/inbound-shortcodes/images/pinterest@2x.png">
431
- </a>';
432
- }
433
-
434
- $out .= '</span></span>';
435
-
436
  return $out;
437
  }
438
  static function inbound_shortcode_list( $atts, $content = null){
@@ -546,6 +534,7 @@ class InboundShortcodes {
546
  }
547
 
548
  return '<style type="text/css">
 
549
  #inbound-list.class-'.$num.' li {
550
  '.$final_text_color.'
551
  list-style: none;
@@ -567,6 +556,11 @@ class InboundShortcodes {
567
  text-align: center;
568
  }
569
  '.$column_css.'
 
 
 
 
 
570
  </style>
571
  <div id="inbound-list" class="inbound-list class-'.$num.' fa-list-'.$icon.'">
572
  '. do_shortcode($content).'
@@ -694,4 +688,4 @@ class InboundShortcodes {
694
  * --------------------------------------------------------- */
695
  InboundShortcodes::init();
696
 
697
- ?>
4
  //=============================================
5
  // Define constants
6
  //=============================================
7
+ if (!defined('INBOUND_FORMS'))
8
  define('INBOUND_FORMS', plugin_dir_url(__FILE__));
9
+
10
+ if (!defined('INBOUND_FORMS_PATH'))
11
  define('INBOUND_FORMS_PATH', plugin_dir_path(__FILE__));
12
+
13
+ if (!defined('INBOUND_FORMS_BASENAME'))
14
  define('INBOUND_FORMS_BASENAME', plugin_basename(__FILE__));
15
+
16
+ if (!defined('INBOUND_FORMS_ADMIN'))
17
  define('INBOUND_FORMS_ADMIN', get_bloginfo('url') . "/wp-admin");
 
18
 
19
+ if (!defined('INBOUND_LABEL'))
20
+ define( 'INBOUND_LABEL', str_replace( ' ', '_', strtolower( 'Inbound Now' ) ) );
21
+
22
 
23
  require_once( 'shortcodes-includes.php' );
24
 
25
  /* InboundNow Shortcodes Class
26
  * --------------------------------------------------------- */
27
  if (!class_exists('InboundShortcodes')) {
28
+
29
  class InboundShortcodes {
30
  static $add_script;
31
 
32
+ /* Contruct
33
+ * --------------------------------------------------------- */
34
  static function init() {
35
+
36
  self::$add_script = true;
37
  add_action('admin_enqueue_scripts', array( __CLASS__, 'loads' ));
38
  add_action('init', array( __CLASS__, 'shortcodes_tinymce' ));
39
+
40
  add_action( 'wp_enqueue_scripts', array(__CLASS__, 'frontend_loads')); // load styles
41
  add_shortcode('list', array(__CLASS__, 'inbound_shortcode_list'));
42
  add_shortcode('button', array(__CLASS__, 'inbound_shortcode_button'));
43
  add_shortcode('social_share', array(__CLASS__, 'inbound_shortcode_social_links'));
44
  }
45
+
46
  // Set Consistant File Paths for inbound now plugins
47
  static function set_file_path(){
48
+ if (function_exists('is_plugin_active')) {
49
+ if (is_plugin_active('leads/wordpress-leads.php')) {
50
+ $final_path = WPL_URL . "/";
51
+ } else if (is_plugin_active('landing-pages/landing-pages.php')) {
52
+ $final_path = LANDINGPAGES_URLPATH;
53
+ } else if (is_plugin_active('cta/wordpress-cta.php')) {
54
+ $final_path = WP_CTA_URLPATH;
55
+ }
56
  }
57
  return $final_path;
58
  }
59
+
60
+ /* Loads
61
+ * --------------------------------------------------------- */
62
  static function loads($hook) {
63
  global $post;
64
  $final_path = self::set_file_path();
65
+ if ( $hook == 'post.php' || $hook == 'post-new.php' || $hook == 'page-new.php' || $hook == 'page.php' )
66
+ {
67
+
68
+ wp_enqueue_style('inbound-shortcodes', $final_path.'shared/inbound-shortcodes/css/shortcodes.css');
69
+ wp_enqueue_script('jquery-ui-sortable' );
70
+ wp_enqueue_script('inbound-shortcodes-plugins', $final_path.'shared/inbound-shortcodes/js/shortcodes-plugins.js');
71
+
72
+ if (isset($post) && post_type_supports( $post->post_type, 'editor') )
73
+ {
74
+ wp_enqueue_script('inbound-shortcodes', $final_path.'shared/inbound-shortcodes/js/shortcodes.js');
75
+ $form_id = (isset($_GET['post'])) ? $_GET['post'] : '';
76
+ wp_localize_script( 'inbound-shortcodes', 'inbound_shortcodes', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) , 'adminurl' => admin_url(), 'inbound_shortcode_nonce' => wp_create_nonce('inbound-shortcode-nonce') , 'form_id' => $form_id ) );
77
+ wp_enqueue_script('selectjs', $final_path.'shared/inbound-shortcodes/js/select2.min.js');
78
+ wp_enqueue_style('selectjs', $final_path.'shared/inbound-shortcodes/css/select2.css');
79
+ }
80
+
81
+ // Forms CPT only
82
+ if ( ( isset($post) && 'inbound-forms' === $post->post_type ) || ( isset($_GET['post_type']) && $_GET['post_type']==='inbound-forms' ) ) {
83
+ wp_enqueue_style('inbound-forms-css', $final_path.'shared/inbound-shortcodes/css/form-cpt.css');
84
+ wp_enqueue_script('inbound-forms-cpt-js', $final_path.'shared/inbound-shortcodes/js/form-cpt.js');
85
+ wp_localize_script( 'inbound-forms-cpt-js', 'inbound_forms', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'inbound_shortcode_nonce' => wp_create_nonce('inbound-shortcode-nonce'), 'form_cpt' => 'on' ) );
86
+ }
87
+
88
+ // Check for active plugins and localize
89
+ $plugins_loaded = array();
90
+
91
+ if (is_plugin_active('landing-pages/landing-pages.php')) {
92
+ array_push($plugins_loaded, "landing-pages");
93
+ }
94
+
95
+ if (is_plugin_active('cta/wordpress-cta.php')) {
96
+ array_push($plugins_loaded, "cta");
97
+ }
98
+ if (is_plugin_active('leads/wordpress-leads.php')) {
99
+ array_push($plugins_loaded, "leads");
100
+ }
101
+
102
+ wp_localize_script( 'inbound-shortcodes', 'inbound_load', array( 'image_dir' => $final_path.'shared/inbound-shortcodes/', 'inbound_plugins' => $plugins_loaded, 'pop_title' => 'Insert Shortcode' ));
103
+
104
+ if (isset($post)&&$post->post_type=='inbound-forms')
105
+ {
106
+ require_once( 'shortcodes-fields.php' );
107
+ add_action( 'admin_footer', array(__CLASS__, 'inbound_forms_header_area'));
108
+ }
109
+
110
+ //add_action('admin_head', array( __CLASS__, 'shortcodes_admin_head' ));
111
  }
112
  }
113
 
227
  return $button;
228
  }
229
  static function inbound_shortcode_social_links( $atts, $content = null ) {
230
+ $final_path = INBOUND_FORMS;
231
  extract(shortcode_atts(array(
232
  'style' => 'bar',
233
  'align' => '',
258
  $alignment = 'inline-block';
259
  $margin_setting = 'margin-right';
260
  if($heading_align == 'inline' ){
261
+ $header_align = "display:inline-block; padding-right: 10px; height: 32px; vertical-align: top;";
 
262
  $float = "float: left;";
263
  }
264
 
278
  $text = get_the_title();
279
  }
280
 
281
+ $out = "";
282
+ if ($heading != ""){
283
+ $heading = "<span class='inbound-social-share-header' style='$header_align'>$heading</span>";
284
+ }
285
+ $out .= '<span class="inbound-social-share-bar-container">' . $heading;
286
+ if( $facebook ) {
287
+ $out .= '<a class="mt-facebook '.$class.'" style="'.$float.'" href="https://www.facebook.com/sharer/sharer.php?u='.$link.'"><img src="'.$final_path.'images/facebook@2x.png"></a>';
288
+ }
289
+ if( $twitter ) {
290
+ $out .= '<a class="mt-twitter '.$class.'" style="'.$float.'" href="http://twitter.com/intent/tweet?text='.$text.'&amp;url='.$link.'" target="_blank"><img src="'.$final_path.'images/twitter@2x.png"></a>';
291
+ }
292
+ if( $google_plus ) {
293
+ $out .= '<a class="mt-google '.$class.'" style="'.$float.'" href="https://plus.google.com/share?url='.$link.'"><img src="'.$final_path.'images/google@2x.png"></a>';
294
+ }
295
+ if( $linkedin ) {
296
+ $out .= '<a class="mt-linkedin '.$class.'" style="'.$float.'" href="http://www.linkedin.com/shareArticle?mini=true&amp;url='.$link.'&amp;summary='.$text.'"><img src="'.$final_path.'images/linkedin@2x.png"></a>';
297
+ }
298
+ if( $pinterest ) {
299
+ $out .= '<a class="mt-pinterest '.$class.'" style="'.$float.'" href="http://www.pinterest.com/pin/create/button/?url='.$link.'&amp;media=&amp;guid=1234&amp;description='.$text.'"><img src="'.$final_path.'images/pinterest@2x.png"></a>';
300
+ }
301
+ $out .= '</span>';
302
+ $out .= '<style type="text/css">a.mt-share-inline-bar-sm img {
303
  width: 34px;
304
  height: auto;
305
  border: 0px;
306
  }
307
+ .inbound-social-share-bar-container {
308
+ display: inline-block;
309
+ }
310
  .inbound-social-share-header {
311
  vertical-align: middle;
312
  }
328
  transition: all 100ms ease-in;
329
  -webkit-transition: all 100ms ease-in;
330
  -webkit-transform: scale3d(1, 1, 1);
 
331
  }
332
  a.mt-share-inline-circle-sm img {
333
  width: 34px;
343
  border-bottom-right-radius: 50%;
344
  border-bottom-left-radius: 50%;
345
  '.$margin_setting.': 4px;
 
346
  }
347
  a.mt-share-inline-square-sm img {
348
  width: 34px;
357
  border-top-right-radius: 2px;
358
  border-bottom-right-radius: 2px;
359
  border-bottom-left-radius: 2px;
360
+ '.$margin_setting.': 4px;}
 
 
361
  .mt-google:hover {
362
  background-color: rgb(225, 95, 79);
363
  }
420
  background-color: rgb(51, 51, 51);
421
  transition: background-color 300ms ease-in;
422
  -webkit-transition: background-color 300ms ease-in;
423
+ }</style>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
424
  return $out;
425
  }
426
  static function inbound_shortcode_list( $atts, $content = null){
534
  }
535
 
536
  return '<style type="text/css">
537
+
538
  #inbound-list.class-'.$num.' li {
539
  '.$final_text_color.'
540
  list-style: none;
556
  text-align: center;
557
  }
558
  '.$column_css.'
559
+ @media only screen and (max-width: 580px) {
560
+ #inbound-list.class-'.$num.' li {
561
+ width:100%;
562
+ }
563
+ }
564
  </style>
565
  <div id="inbound-list" class="inbound-list class-'.$num.' fa-list-'.$icon.'">
566
  '. do_shortcode($content).'
688
  * --------------------------------------------------------- */
689
  InboundShortcodes::init();
690
 
691
+ ?>
shared/inbound-shortcodes/js/shortcodes.js CHANGED
@@ -622,7 +622,7 @@
622
  var final_form_name = obj.form_name;
623
 
624
  //var post_id_final = new_post.replace('"', '');
625
- var site_base = window.location.origin + '/wp-admin/post.php?post=' + form_id + '&action=edit';
626
  // jQuery('.lp-form').unbind('submit').submit();
627
  //var worked = '<span class="success-message-map">Success! ' + this_meta_id + ' set to ' + meta_to_save + '</span>';
628
  var worked = '<span class="lp-success-message">Form Created & Saved</span><a style="padding-left:10px;" target="_blank" href="' + site_base +'" class="event-view-post">View/Edit Form</a>';
@@ -632,7 +632,7 @@
632
  jQuery(self).text('Form Updated').css('font-size', '25px');
633
  var draft = jQuery("#hidden_post_status").val();
634
  if (draft === 'draft') {
635
- window.location.href = window.location.origin + '/wp-admin/post.php?post=' + form_id + '&action=edit&reload=true'
636
  }
637
  setTimeout(function() {
638
  jQuery(self).text('Save Form').css('font-size', '17px');
@@ -721,6 +721,7 @@
721
  jQuery(this).text("Hide advanced options");
722
 
723
  });
 
724
  jQuery("body").on('click', '.hide-advanced-options', function () {
725
 
726
  jQuery(this).parent().parent().parent().parent().find(".inbound-tab-class-advanced").hide();
622
  var final_form_name = obj.form_name;
623
 
624
  //var post_id_final = new_post.replace('"', '');
625
+ var site_base = inbound_shortcodes.adminurl + '/post.php?post=' + form_id + '&action=edit';
626
  // jQuery('.lp-form').unbind('submit').submit();
627
  //var worked = '<span class="success-message-map">Success! ' + this_meta_id + ' set to ' + meta_to_save + '</span>';
628
  var worked = '<span class="lp-success-message">Form Created & Saved</span><a style="padding-left:10px;" target="_blank" href="' + site_base +'" class="event-view-post">View/Edit Form</a>';
632
  jQuery(self).text('Form Updated').css('font-size', '25px');
633
  var draft = jQuery("#hidden_post_status").val();
634
  if (draft === 'draft') {
635
+ window.location.href = inbound_shortcodes.adminurl + '/post.php?post=' + form_id + '&action=edit&reload=true'
636
  }
637
  setTimeout(function() {
638
  jQuery(self).text('Save Form').css('font-size', '17px');
721
  jQuery(this).text("Hide advanced options");
722
 
723
  });
724
+
725
  jQuery("body").on('click', '.hide-advanced-options', function () {
726
 
727
  jQuery(this).parent().parent().parent().parent().find(".inbound-tab-class-advanced").hide();
shared/inbound-shortcodes/popup.php CHANGED
@@ -66,4 +66,4 @@ $shortcode = new InboundShortcodesFields( $popup );
66
  });
67
  </script>
68
  </body>
69
- </html>
66
  });
67
  </script>
68
  </body>
69
+ </html>
shared/inbound-shortcodes/shortcodes-fields.php CHANGED
@@ -11,10 +11,10 @@
11
 
12
  /* Include wp-load
13
  * ----------------------------------------------------- */
14
- $path_to_file = explode( 'wp-content', __FILE__ );
15
- $path_to_wp = $path_to_file[0];
16
 
17
- require_once( $path_to_wp . '/wp-load.php' );
18
 
19
  /* The Class
20
  * ----------------------------------------------------- */
@@ -45,14 +45,14 @@ class InboundShortcodesFields {
45
  function show() {
46
 
47
  global $shortcodes_config;
48
-
49
  $fields = apply_filters('inboundnow_forms_settings', $shortcodes_config);
50
-
51
  if( isset( $fields[$this->popup]['child'] ) )
52
  $this->has_child = true;
53
 
54
  if( isset( $fields ) && is_array( $fields ) ) {
55
-
56
  $this->options = $fields[$this->popup]['options'];
57
  $this->shortcode = $fields[$this->popup]['shortcode'];
58
  $this->popup_title = $fields[$this->popup]['popup_title'];
@@ -69,7 +69,7 @@ class InboundShortcodesFields {
69
  $count = 0;
70
  foreach( $this->options as $key => $option ) {
71
  $first = $key;
72
-
73
  $key = 'inbound_shortcode_' . $key;
74
  $uniquekey = 'inbound_shortcode_' . $first . "_" . $count;
75
  $name = ( isset($option['name'])) ? $option['name'] : '';
@@ -150,23 +150,23 @@ class InboundShortcodesFields {
150
  break;
151
 
152
  case 'cta' :
153
- $args = array('post_type' => 'wp-call-to-action', 'numberposts' => -1);
154
- $cta_post_type = get_posts($args);
155
- $output = $row_start;
156
- $output .= '<select multiple name="insert_inbound_cta[]"" id="insert_inbound_cta">';
157
- foreach ($cta_post_type as $cta) {
158
- //setup_postdata($cta);
159
- $this_id = $cta->ID;
160
- $post_title = $cta->post_title;
161
  $this_link = get_permalink( $this_id );
162
  $this_link = preg_replace('/\?.*/', '', $this_link);
163
- //$output .= '<input class="checkbox" type="checkbox" value="" name="" id="" />' . $post_title . '<span id="view-cta-in-new-window">'.$this_link.'</span><br>';
164
- $output .= '<option value="'.$this_id.'" rel="" >'.$post_title.'</option>';
165
- }
166
- $output .= '</select></div></div>';
167
- $output .= $row_end;
168
- $this->append_output($output);
169
- break;
170
  }
171
  $count++;
172
  }
@@ -291,3 +291,4 @@ class InboundShortcodesFields {
291
  }
292
 
293
  }
 
11
 
12
  /* Include wp-load
13
  * ----------------------------------------------------- */
14
+ $path_to_file = explode( 'wp-content', __FILE__ );
15
+ $path_to_wp = $path_to_file[0];
16
 
17
+ require_once( $path_to_wp . '/wp-load.php' );
18
 
19
  /* The Class
20
  * ----------------------------------------------------- */
45
  function show() {
46
 
47
  global $shortcodes_config;
48
+ //print_r($shortcodes_config);exit;
49
  $fields = apply_filters('inboundnow_forms_settings', $shortcodes_config);
50
+
51
  if( isset( $fields[$this->popup]['child'] ) )
52
  $this->has_child = true;
53
 
54
  if( isset( $fields ) && is_array( $fields ) ) {
55
+
56
  $this->options = $fields[$this->popup]['options'];
57
  $this->shortcode = $fields[$this->popup]['shortcode'];
58
  $this->popup_title = $fields[$this->popup]['popup_title'];
69
  $count = 0;
70
  foreach( $this->options as $key => $option ) {
71
  $first = $key;
72
+
73
  $key = 'inbound_shortcode_' . $key;
74
  $uniquekey = 'inbound_shortcode_' . $first . "_" . $count;
75
  $name = ( isset($option['name'])) ? $option['name'] : '';
150
  break;
151
 
152
  case 'cta' :
153
+ $args = array('post_type' => 'wp-call-to-action', 'numberposts' => -1);
154
+ $cta_post_type = get_posts($args);
155
+ $output = $row_start;
156
+ $output .= '<select multiple name="insert_inbound_cta[]"" id="insert_inbound_cta">';
157
+ foreach ($cta_post_type as $cta) {
158
+ //setup_postdata($cta);
159
+ $this_id = $cta->ID;
160
+ $post_title = $cta->post_title;
161
  $this_link = get_permalink( $this_id );
162
  $this_link = preg_replace('/\?.*/', '', $this_link);
163
+ //$output .= '<input class="checkbox" type="checkbox" value="" name="" id="" />' . $post_title . '<span id="view-cta-in-new-window">'.$this_link.'</span><br>';
164
+ $output .= '<option value="'.$this_id.'" rel="" >'.$post_title.'</option>';
165
+ }
166
+ $output .= '</select></div></div>';
167
+ $output .= $row_end;
168
+ $this->append_output($output);
169
+ break;
170
  }
171
  $count++;
172
  }
291
  }
292
 
293
  }
294
+
shared/inbound-shortcodes/shortcodes-includes.php CHANGED
@@ -23,38 +23,23 @@ jQuery(".lead").append('"' + clean + '" => "' + toTitleCase(new_name) + '", ');
23
 
24
  /* Include & Variables
25
  * ----------------------------------------------------- */
26
- $fontawesome = array("" => "None", "arrow-circle-o-right" => "Arrow Circle O Right", "arrow-circle-o-left" => "Arrow Circle O Left", "check" => "Check", "check-circle" => "Check Circle", "check-circle-o" => "Check Circle O", "check-square" => "Check Square", "check-square-o" => "Check Square O", "comment" => "Comment", "comment-o" => "Comment O", "comments" => "Comments", "comments-o" => "Comments O", "asterisk" => "Asterisk", "thumbs-o-up" => "Thumbs O Up", "thumbs-up" => "Thumbs Up", "check-square" => "Check Square", "check-square-o" => "Check Square O", "arrow-circle-down" => "Arrow Circle Down", "arrow-circle-left" => "Arrow Circle Left", "arrow-circle-o-down" => "Arrow Circle O Down", "arrow-circle-o-left" => "Arrow Circle O Left", "arrow-circle-o-right" => "Arrow Circle O Right", "arrow-circle-o-up" => "Arrow Circle O Up", "arrow-circle-right" => "Arrow Circle Right", "arrow-circle-up" => "Arrow Circle Up", "arrow-down" => "Arrow Down", "arrow-left" => "Arrow Left", "arrow-right" => "Arrow Right", "arrow-up" => "Arrow Up", "angle-double-down" => "Angle Double Down", "angle-double-left" => "Angle Double Left", "angle-double-right" => "Angle Double Right", "angle-double-up" => "Angle Double Up", "angle-down" => "Angle Down", "angle-left" => "Angle Left", "angle-right" => "Angle Right", "angle-up" => "Angle Up", "caret-down" => "Caret Down", "caret-left" => "Caret Left", "caret-right" => "Caret Right", "caret-square-o-down" => "Caret Square O Down", "caret-square-o-left" => "Caret Square O Left", "caret-square-o-right" => "Caret Square O Right", "caret-square-o-up" => "Caret Square O Up", "caret-up" => "Caret Up", "chevron-circle-down" => "Chevron Circle Down", "chevron-circle-left" => "Chevron Circle Left", "chevron-circle-right" => "Chevron Circle Right", "chevron-circle-up" => "Chevron Circle Up", "chevron-down" => "Chevron Down", "chevron-left" => "Chevron Left", "chevron-right" => "Chevron Right", "chevron-up" => "Chevron Up", "hand-o-down" => "Hand O Down", "hand-o-left" => "Hand O Left", "hand-o-right" => "Hand O Right", "hand-o-up" => "Hand O Up", "long-arrow-down" => "Long Arrow Down", "long-arrow-left" => "Long Arrow Left", "long-arrow-right" => "Long Arrow Right", "long-arrow-up" => "Long Arrow Up", "toggle-down" => "Toggle Down", "toggle-left" => "Toggle Left", "toggle-right" => "Toggle Right", "toggle-up" => "Toggle Up", "arrows-alt" => "Arrows Alt", "backward" => "Backward", "compress" => "Compress", "eject" => "Eject", "expand" => "Expand", "fast-backward" => "Fast Backward", "fast-forward" => "Fast Forward", "forward" => "Forward", "pause" => "Pause", "play" => "Play", "play-circle" => "Play Circle", "play-circle-o" => "Play Circle O", "step-backward" => "Step Backward", "step-forward" => "Step Forward", "rub" => "Rub", "ruble" => "Ruble", "rouble" => "Rouble", "pagelines" => "Pagelines", "stack-exchange" => "Stack Exchange", "caret-square-o-left" => "Caret Square O Left", "toggle-left" => "Toggle Left", "dot-circle-o" => "Dot Circle O", "wheelchair" => "Wheelchair", "vimeo-square" => "Vimeo Square", "try" => "Try", "turkish-lira" => "Turkish Lira", "plus-square-o" => "Plus Square O", "adjust" => "Adjust", "anchor" => "Anchor", "archive" => "Archive", "arrows" => "Arrows", "arrows-h" => "Arrows H", "arrows-v" => "Arrows V", "ban" => "Ban", "bar-chart-o" => "Bar Chart O", "barcode" => "Barcode", "bars" => "Bars", "beer" => "Beer", "bell" => "Bell", "bell-o" => "Bell O", "bolt" => "Bolt", "book" => "Book", "bookmark" => "Bookmark", "bookmark-o" => "Bookmark O", "briefcase" => "Briefcase", "bug" => "Bug", "building-o" => "Building O", "bullhorn" => "Bullhorn", "bullseye" => "Bullseye", "calendar" => "Calendar", "calendar-o" => "Calendar O", "camera" => "Camera", "camera-retro" => "Camera Retro", "caret-square-o-down" => "Caret Square O Down", "caret-square-o-left" => "Caret Square O Left", "caret-square-o-right" => "Caret Square O Right", "caret-square-o-up" => "Caret Square O Up", "certificate" => "Certificate", "circle" => "Circle", "circle-o" => "Circle O", "clock-o" => "Clock O", "cloud" => "Cloud", "cloud-download" => "Cloud Download", "cloud-upload" => "Cloud Upload", "code" => "Code", "code-fork" => "Code Fork", "coffee" => "Coffee", "cog" => "Cog", "cogs" => "Cogs", "compass" => "Compass", "credit-card" => "Credit Card", "crop" => "Crop", "crosshairs" => "Crosshairs", "cutlery" => "Cutlery", "dashboard" => "Dashboard", "desktop" => "Desktop", "dot-circle-o" => "Dot Circle O", "download" => "Download", "edit" => "Edit", "ellipsis-h" => "Ellipsis H", "ellipsis-v" => "Ellipsis V", "envelope" => "Envelope", "envelope-o" => "Envelope O", "eraser" => "Eraser", "exchange" => "Exchange", "exclamation" => "Exclamation", "exclamation-circle" => "Exclamation Circle", "exclamation-triangle" => "Exclamation Triangle", "external-link" => "External Link", "external-link-square" => "External Link Square", "eye" => "Eye", "eye-slash" => "Eye Slash", "female" => "Female", "fighter-jet" => "Fighter Jet", "film" => "Film", "filter" => "Filter", "fire" => "Fire", "fire-extinguisher" => "Fire Extinguisher", "flag" => "Flag", "flag-checkered" => "Flag Checkered", "flag-o" => "Flag O", "flash" => "Flash", "flask" => "Flask", "folder" => "Folder", "folder-o" => "Folder O", "folder-open" => "Folder Open", "folder-open-o" => "Folder Open O", "frown-o" => "Frown O", "gamepad" => "Gamepad", "gavel" => "Gavel", "gear" => "Gear", "gears" => "Gears", "gift" => "Gift", "glass" => "Glass", "globe" => "Globe", "group" => "Group", "hdd-o" => "Hdd O", "headphones" => "Headphones", "heart" => "Heart", "heart-o" => "Heart O", "home" => "Home", "inbox" => "Inbox", "info" => "Info", "info-circle" => "Info Circle", "key" => "Key", "keyboard-o" => "Keyboard O", "laptop" => "Laptop", "leaf" => "Leaf", "legal" => "Legal", "lemon-o" => "Lemon O", "level-down" => "Level Down", "level-up" => "Level Up", "lightbulb-o" => "Lightbulb O", "location-arrow" => "Location Arrow", "lock" => "Lock", "magic" => "Magic", "magnet" => "Magnet", "mail-forward" => "Mail Forward", "mail-reply" => "Mail Reply", "mail-reply-all" => "Mail Reply All", "male" => "Male", "map-marker" => "Map Marker", "meh-o" => "Meh O", "microphone" => "Microphone", "microphone-slash" => "Microphone Slash", "minus" => "Minus", "minus-circle" => "Minus Circle", "minus-square" => "Minus Square", "minus-square-o" => "Minus Square O", "mobile" => "Mobile", "mobile-phone" => "Mobile Phone", "money" => "Money", "moon-o" => "Moon O", "music" => "Music", "pencil" => "Pencil", "pencil-square" => "Pencil Square", "pencil-square-o" => "Pencil Square O", "phone" => "Phone", "phone-square" => "Phone Square", "picture-o" => "Picture O", "plane" => "Plane", "plus" => "Plus", "plus-circle" => "Plus Circle", "plus-square" => "Plus Square", "plus-square-o" => "Plus Square O", "power-off" => "Power Off", "print" => "Print", "puzzle-piece" => "Puzzle Piece", "qrcode" => "Qrcode", "question" => "Question", "question-circle" => "Question Circle", "quote-left" => "Quote Left", "quote-right" => "Quote Right", "random" => "Random", "refresh" => "Refresh", "reply" => "Reply", "reply-all" => "Reply All", "retweet" => "Retweet", "road" => "Road", "rocket" => "Rocket", "rss" => "Rss", "rss-square" => "Rss Square", "search" => "Search", "search-minus" => "Search Minus", "search-plus" => "Search Plus", "share" => "Share", "share-square" => "Share Square", "share-square-o" => "Share Square O", "shield" => "Shield", "shopping-cart" => "Shopping Cart", "sign-in" => "Sign In", "sign-out" => "Sign Out", "signal" => "Signal", "sitemap" => "Sitemap", "smile-o" => "Smile O", "sort" => "Sort", "sort-alpha-asc" => "Sort Alpha Asc", "sort-alpha-desc" => "Sort Alpha Desc", "sort-amount-asc" => "Sort Amount Asc", "sort-amount-desc" => "Sort Amount Desc", "sort-asc" => "Sort Asc", "sort-desc" => "Sort Desc", "sort-down" => "Sort Down", "sort-numeric-asc" => "Sort Numeric Asc", "sort-numeric-desc" => "Sort Numeric Desc", "sort-up" => "Sort Up", "spinner" => "Spinner", "square" => "Square", "square-o" => "Square O", "star" => "Star", "star-half" => "Star Half", "star-half-empty" => "Star Half Empty", "star-half-full" => "Star Half Full", "star-half-o" => "Star Half O", "star-o" => "Star O", "subscript" => "Subscript", "suitcase" => "Suitcase", "sun-o" => "Sun O", "superscript" => "Superscript", "tablet" => "Tablet", "tachometer" => "Tachometer", "tag" => "Tag", "tags" => "Tags", "tasks" => "Tasks", "terminal" => "Terminal", "thumb-tack" => "Thumb Tack", "thumbs-down" => "Thumbs Down", "thumbs-o-down" => "Thumbs O Down", "ticket" => "Ticket", "times" => "Times", "times-circle" => "Times Circle", "times-circle-o" => "Times Circle O", "tint" => "Tint", "toggle-down" => "Toggle Down", "toggle-left" => "Toggle Left", "toggle-right" => "Toggle Right", "toggle-up" => "Toggle Up", "trash-o" => "Trash O", "trophy" => "Trophy", "truck" => "Truck", "umbrella" => "Umbrella", "unlock" => "Unlock", "unlock-alt" => "Unlock Alt", "unsorted" => "Unsorted", "upload" => "Upload", "user" => "User", "users" => "Users", "video-camera" => "Video Camera", "volume-down" => "Volume Down", "volume-off" => "Volume Off", "volume-up" => "Volume Up", "warning" => "Warning", "wheelchair" => "Wheelchair", "wrench" => "Wrench", "circle" => "Circle", "circle-o" => "Circle O", "dot-circle-o" => "Dot Circle O", "minus-square" => "Minus Square", "minus-square-o" => "Minus Square O", "plus-square" => "Plus Square", "plus-square-o" => "Plus Square O", "square" => "Square", "square-o" => "Square O", "bitcoin" => "Bitcoin", "btc" => "Btc", "cny" => "Cny", "dollar" => "Dollar", "eur" => "Eur", "euro" => "Euro", "gbp" => "Gbp", "inr" => "Inr", "jpy" => "Jpy", "krw" => "Krw", "money" => "Money", "rmb" => "Rmb", "rouble" => "Rouble", "rub" => "Rub", "ruble" => "Ruble", "rupee" => "Rupee", "try" => "Try", "turkish-lira" => "Turkish Lira", "usd" => "Usd", "won" => "Won", "yen" => "Yen", "align-center" => "Align Center", "align-justify" => "Align Justify", "align-left" => "Align Left", "align-right" => "Align Right", "bold" => "Bold", "chain" => "Chain", "chain-broken" => "Chain Broken", "clipboard" => "Clipboard", "columns" => "Columns", "copy" => "Copy", "cut" => "Cut", "dedent" => "Dedent", "eraser" => "Eraser", "file" => "File", "file-o" => "File O", "file-text" => "File Text", "file-text-o" => "File Text O", "files-o" => "Files O", "floppy-o" => "Floppy O", "font" => "Font", "indent" => "Indent", "italic" => "Italic", "link" => "Link", "list" => "List", "list-alt" => "List Alt", "list-ol" => "List Ol", "list-ul" => "List Ul", "outdent" => "Outdent", "paperclip" => "Paperclip", "paste" => "Paste", "repeat" => "Repeat", "rotate-left" => "Rotate Left", "rotate-right" => "Rotate Right", "save" => "Save", "scissors" => "Scissors", "strikethrough" => "Strikethrough", "table" => "Table", "text-height" => "Text Height", "text-width" => "Text Width", "th" => "Th", "th-large" => "Th Large", "th-list" => "Th List", "underline" => "Underline", "undo" => "Undo", "unlink" => "Unlink", "arrows" => "Arrows", "arrows-alt" => "Arrows Alt", "arrows-h" => "Arrows H", "arrows-v" => "Arrows V", "stop" => "Stop", "youtube-play" => "Youtube Play", "adn" => "Adn", "android" => "Android", "apple" => "Apple", "bitbucket" => "Bitbucket", "bitbucket-square" => "Bitbucket Square", "bitcoin" => "Bitcoin", "btc" => "Btc", "css3" => "Css3", "dribbble" => "Dribbble", "dropbox" => "Dropbox", "facebook" => "Facebook", "facebook-square" => "Facebook Square", "flickr" => "Flickr", "foursquare" => "Foursquare", "github" => "Github", "github-alt" => "Github Alt", "github-square" => "Github Square", "gittip" => "Gittip", "google-plus" => "Google Plus", "google-plus-square" => "Google Plus Square", "html5" => "Html5", "instagram" => "Instagram", "linkedin" => "Linkedin", "linkedin-square" => "Linkedin Square", "linux" => "Linux", "maxcdn" => "Maxcdn", "pagelines" => "Pagelines", "pinterest" => "Pinterest", "pinterest-square" => "Pinterest Square", "renren" => "Renren", "skype" => "Skype", "stack-exchange" => "Stack Exchange", "stack-overflow" => "Stack Overflow", "trello" => "Trello", "tumblr" => "Tumblr", "tumblr-square" => "Tumblr Square", "twitter" => "Twitter", "twitter-square" => "Twitter Square", "vimeo-square" => "Vimeo Square", "vk" => "Vk", "weibo" => "Weibo", "windows" => "Windows", "xing" => "Xing", "xing-square" => "Xing Square", "youtube" => "Youtube", "youtube-play" => "Youtube Play", "youtube-square" => "Youtube Square", "ambulance" => "Ambulance", "h-square" => "H Square", "hospital-o" => "Hospital O", "medkit" => "Medkit", "plus-square" => "Plus Square", "stethoscope" => "Stethoscope", "user-md" => "User Md", "wheelchair" => "Wheelchair"
27
- );
 
28
  $lp_cats = get_transient( 'landing-page-cats' ); // array of landing page categories
29
  $form_names = get_transient( 'inbound-form-names' ); // array of landing page categories
30
  $lead_mapping_fields = get_transient( 'wp-lead-fields' );
31
-
32
- /* Include global fontawesome */
33
- global $fontawesome, $form_names;
34
-
35
  if (!function_exists('inbound_excerpt_length')) {
36
  function inbound_excerpt_length( $length ) {
37
  $custom = '';
38
  return ( $custom != '' ? $custom : 40 );
39
  }
40
  }
41
- add_filter( 'excerpt_length', 'inbound_excerpt_length' );
42
-
43
- /* Portfolio catgories options */
44
- // $portfolio_cats = array();
45
- // $portfolio_cats_obj = get_terms('portfolio_category', false);
46
- // $portfolio_cats[''] = __('Select a category:', INBOUND_LABEL);
47
- // foreach ($portfolio_cats_obj as $term) {
48
- // $portfolio_cats[$term->term_id] = $term->name;
49
- // }
50
- if (!function_exists('inbound_add_custom_shortcode')) {
51
- function inbound_add_custom_shortcode($form_names) {
52
- require_once ('shortcodes/quick-forms.php'); // Form Builder
53
- }
54
- }
55
-
56
- add_action('inbound_shortcode_addon_include', 'inbound_add_custom_shortcode');
57
 
 
58
  /* Global Inbound Now Shortcodes */
59
  require_once ('shortcodes/forms.php'); // Form Builder
60
  require_once ('shortcodes/column.php'); // Columned Layouts
@@ -63,12 +48,14 @@ jQuery(".lead").append('"' + clean + '" => "' + toTitleCase(new_name) + '", ');
63
  require_once ('shortcodes/button.php');
64
  require_once ('shortcodes/lists.php');
65
  require_once ('shortcodes/social-share.php');
 
 
66
  // Leads only Shortcodes
67
 
68
  // Landing Page Only Shortcodes
69
  require_once ('shortcodes/landing_pages.php'); // Category specific landing pages
70
 
71
- do_action( 'inbound_shortcode_addon_include' ); // Hook into shortcode engine
72
 
73
 
74
  // Call to Action Only Shortcodes
23
 
24
  /* Include & Variables
25
  * ----------------------------------------------------- */
26
+ global $shortcodes_config;
27
+
28
+ $fontawesome = array("" => "None", "arrow-circle-o-right" => "Arrow Circle O Right", "arrow-circle-o-left" => "Arrow Circle O Left", "check" => "Check", "check-circle" => "Check Circle", "check-circle-o" => "Check Circle O", "check-square" => "Check Square", "check-square-o" => "Check Square O", "comment" => "Comment", "comment-o" => "Comment O", "comments" => "Comments", "comments-o" => "Comments O", "asterisk" => "Asterisk", "thumbs-o-up" => "Thumbs O Up", "thumbs-up" => "Thumbs Up", "check-square" => "Check Square", "check-square-o" => "Check Square O", "arrow-circle-down" => "Arrow Circle Down", "arrow-circle-left" => "Arrow Circle Left", "arrow-circle-o-down" => "Arrow Circle O Down", "arrow-circle-o-left" => "Arrow Circle O Left", "arrow-circle-o-right" => "Arrow Circle O Right", "arrow-circle-o-up" => "Arrow Circle O Up", "arrow-circle-right" => "Arrow Circle Right", "arrow-circle-up" => "Arrow Circle Up", "arrow-down" => "Arrow Down", "arrow-left" => "Arrow Left", "arrow-right" => "Arrow Right", "arrow-up" => "Arrow Up", "angle-double-down" => "Angle Double Down", "angle-double-left" => "Angle Double Left", "angle-double-right" => "Angle Double Right", "angle-double-up" => "Angle Double Up", "angle-down" => "Angle Down", "angle-left" => "Angle Left", "angle-right" => "Angle Right", "angle-up" => "Angle Up", "caret-down" => "Caret Down", "caret-left" => "Caret Left", "caret-right" => "Caret Right", "caret-square-o-down" => "Caret Square O Down", "caret-square-o-left" => "Caret Square O Left", "caret-square-o-right" => "Caret Square O Right", "caret-square-o-up" => "Caret Square O Up", "caret-up" => "Caret Up", "chevron-circle-down" => "Chevron Circle Down", "chevron-circle-left" => "Chevron Circle Left", "chevron-circle-right" => "Chevron Circle Right", "chevron-circle-up" => "Chevron Circle Up", "chevron-down" => "Chevron Down", "chevron-left" => "Chevron Left", "chevron-right" => "Chevron Right", "chevron-up" => "Chevron Up", "hand-o-down" => "Hand O Down", "hand-o-left" => "Hand O Left", "hand-o-right" => "Hand O Right", "hand-o-up" => "Hand O Up", "long-arrow-down" => "Long Arrow Down", "long-arrow-left" => "Long Arrow Left", "long-arrow-right" => "Long Arrow Right", "long-arrow-up" => "Long Arrow Up", "toggle-down" => "Toggle Down", "toggle-left" => "Toggle Left", "toggle-right" => "Toggle Right", "toggle-up" => "Toggle Up", "arrows-alt" => "Arrows Alt", "backward" => "Backward", "compress" => "Compress", "eject" => "Eject", "expand" => "Expand", "fast-backward" => "Fast Backward", "fast-forward" => "Fast Forward", "forward" => "Forward", "pause" => "Pause", "play" => "Play", "play-circle" => "Play Circle", "play-circle-o" => "Play Circle O", "step-backward" => "Step Backward", "step-forward" => "Step Forward", "rub" => "Rub", "ruble" => "Ruble", "rouble" => "Rouble", "pagelines" => "Pagelines", "stack-exchange" => "Stack Exchange", "caret-square-o-left" => "Caret Square O Left", "toggle-left" => "Toggle Left", "dot-circle-o" => "Dot Circle O", "wheelchair" => "Wheelchair", "vimeo-square" => "Vimeo Square", "try" => "Try", "turkish-lira" => "Turkish Lira", "plus-square-o" => "Plus Square O", "adjust" => "Adjust", "anchor" => "Anchor", "archive" => "Archive", "arrows" => "Arrows", "arrows-h" => "Arrows H", "arrows-v" => "Arrows V", "ban" => "Ban", "bar-chart-o" => "Bar Chart O", "barcode" => "Barcode", "bars" => "Bars", "beer" => "Beer", "bell" => "Bell", "bell-o" => "Bell O", "bolt" => "Bolt", "book" => "Book", "bookmark" => "Bookmark", "bookmark-o" => "Bookmark O", "briefcase" => "Briefcase", "bug" => "Bug", "building-o" => "Building O", "bullhorn" => "Bullhorn", "bullseye" => "Bullseye", "calendar" => "Calendar", "calendar-o" => "Calendar O", "camera" => "Camera", "camera-retro" => "Camera Retro", "caret-square-o-down" => "Caret Square O Down", "caret-square-o-left" => "Caret Square O Left", "caret-square-o-right" => "Caret Square O Right", "caret-square-o-up" => "Caret Square O Up", "certificate" => "Certificate", "circle" => "Circle", "circle-o" => "Circle O", "clock-o" => "Clock O", "cloud" => "Cloud", "cloud-download" => "Cloud Download", "cloud-upload" => "Cloud Upload", "code" => "Code", "code-fork" => "Code Fork", "coffee" => "Coffee", "cog" => "Cog", "cogs" => "Cogs", "compass" => "Compass", "credit-card" => "Credit Card", "crop" => "Crop", "crosshairs" => "Crosshairs", "cutlery" => "Cutlery", "dashboard" => "Dashboard", "desktop" => "Desktop", "dot-circle-o" => "Dot Circle O", "download" => "Download", "edit" => "Edit", "ellipsis-h" => "Ellipsis H", "ellipsis-v" => "Ellipsis V", "envelope" => "Envelope", "envelope-o" => "Envelope O", "eraser" => "Eraser", "exchange" => "Exchange", "exclamation" => "Exclamation", "exclamation-circle" => "Exclamation Circle", "exclamation-triangle" => "Exclamation Triangle", "external-link" => "External Link", "external-link-square" => "External Link Square", "eye" => "Eye", "eye-slash" => "Eye Slash", "female" => "Female", "fighter-jet" => "Fighter Jet", "film" => "Film", "filter" => "Filter", "fire" => "Fire", "fire-extinguisher" => "Fire Extinguisher", "flag" => "Flag", "flag-checkered" => "Flag Checkered", "flag-o" => "Flag O", "flash" => "Flash", "flask" => "Flask", "folder" => "Folder", "folder-o" => "Folder O", "folder-open" => "Folder Open", "folder-open-o" => "Folder Open O", "frown-o" => "Frown O", "gamepad" => "Gamepad", "gavel" => "Gavel", "gear" => "Gear", "gears" => "Gears", "gift" => "Gift", "glass" => "Glass", "globe" => "Globe", "group" => "Group", "hdd-o" => "Hdd O", "headphones" => "Headphones", "heart" => "Heart", "heart-o" => "Heart O", "home" => "Home", "inbox" => "Inbox", "info" => "Info", "info-circle" => "Info Circle", "key" => "Key", "keyboard-o" => "Keyboard O", "laptop" => "Laptop", "leaf" => "Leaf", "legal" => "Legal", "lemon-o" => "Lemon O", "level-down" => "Level Down", "level-up" => "Level Up", "lightbulb-o" => "Lightbulb O", "location-arrow" => "Location Arrow", "lock" => "Lock", "magic" => "Magic", "magnet" => "Magnet", "mail-forward" => "Mail Forward", "mail-reply" => "Mail Reply", "mail-reply-all" => "Mail Reply All", "male" => "Male", "map-marker" => "Map Marker", "meh-o" => "Meh O", "microphone" => "Microphone", "microphone-slash" => "Microphone Slash", "minus" => "Minus", "minus-circle" => "Minus Circle", "minus-square" => "Minus Square", "minus-square-o" => "Minus Square O", "mobile" => "Mobile", "mobile-phone" => "Mobile Phone", "money" => "Money", "moon-o" => "Moon O", "music" => "Music", "pencil" => "Pencil", "pencil-square" => "Pencil Square", "pencil-square-o" => "Pencil Square O", "phone" => "Phone", "phone-square" => "Phone Square", "picture-o" => "Picture O", "plane" => "Plane", "plus" => "Plus", "plus-circle" => "Plus Circle", "plus-square" => "Plus Square", "plus-square-o" => "Plus Square O", "power-off" => "Power Off", "print" => "Print", "puzzle-piece" => "Puzzle Piece", "qrcode" => "Qrcode", "question" => "Question", "question-circle" => "Question Circle", "quote-left" => "Quote Left", "quote-right" => "Quote Right", "random" => "Random", "refresh" => "Refresh", "reply" => "Reply", "reply-all" => "Reply All", "retweet" => "Retweet", "road" => "Road", "rocket" => "Rocket", "rss" => "Rss", "rss-square" => "Rss Square", "search" => "Search", "search-minus" => "Search Minus", "search-plus" => "Search Plus", "share" => "Share", "share-square" => "Share Square", "share-square-o" => "Share Square O", "shield" => "Shield", "shopping-cart" => "Shopping Cart", "sign-in" => "Sign In", "sign-out" => "Sign Out", "signal" => "Signal", "sitemap" => "Sitemap", "smile-o" => "Smile O", "sort" => "Sort", "sort-alpha-asc" => "Sort Alpha Asc", "sort-alpha-desc" => "Sort Alpha Desc", "sort-amount-asc" => "Sort Amount Asc", "sort-amount-desc" => "Sort Amount Desc", "sort-asc" => "Sort Asc", "sort-desc" => "Sort Desc", "sort-down" => "Sort Down", "sort-numeric-asc" => "Sort Numeric Asc", "sort-numeric-desc" => "Sort Numeric Desc", "sort-up" => "Sort Up", "spinner" => "Spinner", "square" => "Square", "square-o" => "Square O", "star" => "Star", "star-half" => "Star Half", "star-half-empty" => "Star Half Empty", "star-half-full" => "Star Half Full", "star-half-o" => "Star Half O", "star-o" => "Star O", "subscript" => "Subscript", "suitcase" => "Suitcase", "sun-o" => "Sun O", "superscript" => "Superscript", "tablet" => "Tablet", "tachometer" => "Tachometer", "tag" => "Tag", "tags" => "Tags", "tasks" => "Tasks", "terminal" => "Terminal", "thumb-tack" => "Thumb Tack", "thumbs-down" => "Thumbs Down", "thumbs-o-down" => "Thumbs O Down", "ticket" => "Ticket", "times" => "Times", "times-circle" => "Times Circle", "times-circle-o" => "Times Circle O", "tint" => "Tint", "toggle-down" => "Toggle Down", "toggle-left" => "Toggle Left", "toggle-right" => "Toggle Right", "toggle-up" => "Toggle Up", "trash-o" => "Trash O", "trophy" => "Trophy", "truck" => "Truck", "umbrella" => "Umbrella", "unlock" => "Unlock", "unlock-alt" => "Unlock Alt", "unsorted" => "Unsorted", "upload" => "Upload", "user" => "User", "users" => "Users", "video-camera" => "Video Camera", "volume-down" => "Volume Down", "volume-off" => "Volume Off", "volume-up" => "Volume Up", "warning" => "Warning", "wheelchair" => "Wheelchair", "wrench" => "Wrench", "circle" => "Circle", "circle-o" => "Circle O", "dot-circle-o" => "Dot Circle O", "minus-square" => "Minus Square", "minus-square-o" => "Minus Square O", "plus-square" => "Plus Square", "plus-square-o" => "Plus Square O", "square" => "Square", "square-o" => "Square O", "bitcoin" => "Bitcoin", "btc" => "Btc", "cny" => "Cny", "dollar" => "Dollar", "eur" => "Eur", "euro" => "Euro", "gbp" => "Gbp", "inr" => "Inr", "jpy" => "Jpy", "krw" => "Krw", "money" => "Money", "rmb" => "Rmb", "rouble" => "Rouble", "rub" => "Rub", "ruble" => "Ruble", "rupee" => "Rupee", "try" => "Try", "turkish-lira" => "Turkish Lira", "usd" => "Usd", "won" => "Won", "yen" => "Yen", "align-center" => "Align Center", "align-justify" => "Align Justify", "align-left" => "Align Left", "align-right" => "Align Right", "bold" => "Bold", "chain" => "Chain", "chain-broken" => "Chain Broken", "clipboard" => "Clipboard", "columns" => "Columns", "copy" => "Copy", "cut" => "Cut", "dedent" => "Dedent", "eraser" => "Eraser", "file" => "File", "file-o" => "File O", "file-text" => "File Text", "file-text-o" => "File Text O", "files-o" => "Files O", "floppy-o" => "Floppy O", "font" => "Font", "indent" => "Indent", "italic" => "Italic", "link" => "Link", "list" => "List", "list-alt" => "List Alt", "list-ol" => "List Ol", "list-ul" => "List Ul", "outdent" => "Outdent", "paperclip" => "Paperclip", "paste" => "Paste", "repeat" => "Repeat", "rotate-left" => "Rotate Left", "rotate-right" => "Rotate Right", "save" => "Save", "scissors" => "Scissors", "strikethrough" => "Strikethrough", "table" => "Table", "text-height" => "Text Height", "text-width" => "Text Width", "th" => "Th", "th-large" => "Th Large", "th-list" => "Th List", "underline" => "Underline", "undo" => "Undo", "unlink" => "Unlink", "arrows" => "Arrows", "arrows-alt" => "Arrows Alt", "arrows-h" => "Arrows H", "arrows-v" => "Arrows V", "stop" => "Stop", "youtube-play" => "Youtube Play", "adn" => "Adn", "android" => "Android", "apple" => "Apple", "bitbucket" => "Bitbucket", "bitbucket-square" => "Bitbucket Square", "bitcoin" => "Bitcoin", "btc" => "Btc", "css3" => "Css3", "dribbble" => "Dribbble", "dropbox" => "Dropbox", "facebook" => "Facebook", "facebook-square" => "Facebook Square", "flickr" => "Flickr", "foursquare" => "Foursquare", "github" => "Github", "github-alt" => "Github Alt", "github-square" => "Github Square", "gittip" => "Gittip", "google-plus" => "Google Plus", "google-plus-square" => "Google Plus Square", "html5" => "Html5", "instagram" => "Instagram", "linkedin" => "Linkedin", "linkedin-square" => "Linkedin Square", "linux" => "Linux", "maxcdn" => "Maxcdn", "pagelines" => "Pagelines", "pinterest" => "Pinterest", "pinterest-square" => "Pinterest Square", "renren" => "Renren", "skype" => "Skype", "stack-exchange" => "Stack Exchange", "stack-overflow" => "Stack Overflow", "trello" => "Trello", "tumblr" => "Tumblr", "tumblr-square" => "Tumblr Square", "twitter" => "Twitter", "twitter-square" => "Twitter Square", "vimeo-square" => "Vimeo Square", "vk" => "Vk", "weibo" => "Weibo", "windows" => "Windows", "xing" => "Xing", "xing-square" => "Xing Square", "youtube" => "Youtube", "youtube-play" => "Youtube Play", "youtube-square" => "Youtube Square", "ambulance" => "Ambulance", "h-square" => "H Square", "hospital-o" => "Hospital O", "medkit" => "Medkit", "plus-square" => "Plus Square", "stethoscope" => "Stethoscope", "user-md" => "User Md", "wheelchair" => "Wheelchair");
29
  $lp_cats = get_transient( 'landing-page-cats' ); // array of landing page categories
30
  $form_names = get_transient( 'inbound-form-names' ); // array of landing page categories
31
  $lead_mapping_fields = get_transient( 'wp-lead-fields' );
32
+
33
+
34
+ add_filter( 'excerpt_length', 'inbound_excerpt_length' );
 
35
  if (!function_exists('inbound_excerpt_length')) {
36
  function inbound_excerpt_length( $length ) {
37
  $custom = '';
38
  return ( $custom != '' ? $custom : 40 );
39
  }
40
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
42
+
43
  /* Global Inbound Now Shortcodes */
44
  require_once ('shortcodes/forms.php'); // Form Builder
45
  require_once ('shortcodes/column.php'); // Columned Layouts
48
  require_once ('shortcodes/button.php');
49
  require_once ('shortcodes/lists.php');
50
  require_once ('shortcodes/social-share.php');
51
+ require_once ('shortcodes/quick-forms.php');
52
+
53
  // Leads only Shortcodes
54
 
55
  // Landing Page Only Shortcodes
56
  require_once ('shortcodes/landing_pages.php'); // Category specific landing pages
57
 
58
+ do_action( 'inbound_shortcode_addon_include' , $form_names ); // Hook into shortcode engine
59
 
60
 
61
  // Call to Action Only Shortcodes
shared/inbound-shortcodes/shortcodes/forms.php CHANGED
@@ -408,6 +408,8 @@ function inbound_forms_compatibilities()
408
  }
409
  }
410
 
 
 
411
  if (!function_exists('inbound_forms_redirect')) {
412
  function inbound_forms_redirect($value){
413
  global $pagenow;
@@ -418,7 +420,6 @@ function inbound_forms_redirect($value){
418
  }
419
  }
420
  }
421
- add_action('admin_init', 'inbound_forms_redirect');
422
 
423
  add_action('admin_head', 'inbound_get_form_names',16);
424
  if (!function_exists('inbound_get_form_names')) {
408
  }
409
  }
410
 
411
+
412
+ add_action('admin_init', 'inbound_forms_redirect');
413
  if (!function_exists('inbound_forms_redirect')) {
414
  function inbound_forms_redirect($value){
415
  global $pagenow;
420
  }
421
  }
422
  }
 
423
 
424
  add_action('admin_head', 'inbound_get_form_names',16);
425
  if (!function_exists('inbound_get_form_names')) {
shared/inbound-shortcodes/shortcodes/quick-forms.php CHANGED
@@ -3,7 +3,7 @@
3
  * Inbound Forms Shortcode Options
4
  * Forms code found in /shared/classes/form.class.php
5
  */
6
- global $shortcodes_config, $form_names;
7
  $shortcodes_config['quick-forms'] = array(
8
  'no_preview' => false,
9
  'options' => array(
3
  * Inbound Forms Shortcode Options
4
  * Forms code found in /shared/classes/form.class.php
5
  */
6
+
7
  $shortcodes_config['quick-forms'] = array(
8
  'no_preview' => false,
9
  'options' => array(
shared/inboundnow/inboundnow.extend.php ADDED
@@ -0,0 +1,348 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * License handler for InboundNow Packaged Extensions
4
+ *
5
+ * This class should simplify the process of adding license information
6
+ * to inboundnow multi-purposed extensions.
7
+ *
8
+ * @author Hudson Atwell
9
+ * @version 1.1
10
+ */
11
+
12
+
13
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
14
+
15
+
16
+ if ( ! defined( 'INBOUNDNOW_STORE_URL' ) )
17
+ define('INBOUNDNOW_STORE_URL','http://www.inboundnow.com/');
18
+
19
+ if ( ! class_exists( 'INBOUNDNOW_EXTEND' ) )
20
+ {
21
+
22
+ class INBOUNDNOW_EXTEND {
23
+
24
+ private $plugin_basename;
25
+ private $plugin_slug;
26
+ private $plugin_label;
27
+ private $plugin_version;
28
+ private $remote_download_slug;
29
+ private $master_license_key;
30
+ private $remote_api_url;
31
+
32
+ function __construct( $plugin_file , $plugin_label , $plugin_slug , $plugin_version , $remote_download_slug )
33
+ {
34
+ $this->plugin_basename = plugin_basename( $plugin_file );
35
+ $this->plugin_slug = $plugin_slug;
36
+ $this->plugin_label = $plugin_label;
37
+ $this->plugin_version = $plugin_version;
38
+ $this->remote_download_slug = $remote_download_slug;
39
+ $this->master_license_key = get_option('inboundnow_master_license_key' , '');
40
+ $this->remote_api_url = INBOUNDNOW_STORE_URL;
41
+
42
+ $this->hooks();
43
+ }
44
+
45
+
46
+ private function hooks() {
47
+
48
+ /* Add licenses key to global settings array */
49
+ add_filter( 'lp_define_global_settings', array( $this, 'lp_settings' ), 2 );
50
+ add_filter( 'wp_cta_define_global_settings', array( $this, 'wp_cta_settings' ), 2 );
51
+ add_filter( 'wpleads_define_global_settings', array( $this, 'wpleads_settings' ), 2 );
52
+
53
+ /* save license key data / activate license keys */
54
+ if (is_admin())
55
+ $this->save_license_field();
56
+
57
+ /* render license key settings in license keys tab */
58
+ add_action('lp_render_global_settings', array( $this, 'display_license_field' ) );
59
+ add_action('wpleads_render_global_settings', array( $this, 'display_license_field' ) );
60
+ add_action('wp_cta_render_global_settings', array( $this, 'display_license_field' ) );
61
+
62
+ /* add automatic updates to plugin */
63
+ //update_option('_site_transient_update_plugins',''); //uncomment to force upload update check
64
+ add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'pre_set_site_transient_update_plugins_filter' ) );
65
+ add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3);
66
+
67
+ }
68
+
69
+ public function lp_settings( $lp_global_settings ) {
70
+ $lp_global_settings['lp-license-keys']['settings'][$this->plugin_slug] = array(
71
+ 'id' => $this->plugin_slug,
72
+ 'slug' => $this->plugin_slug,
73
+ 'remote_download_slug' => $this->remote_download_slug,
74
+ 'label' => sprintf( __( '%1$s', 'lp' ), $this->plugin_label ),
75
+ 'description' => 'Head to http://www.inboundnow.com/ to retrieve your license key for '.$this->plugin_label,
76
+ 'type' => 'inboundnow-license-key',
77
+ 'default' => $this->master_license_key
78
+ );
79
+
80
+ return $lp_global_settings;
81
+ }
82
+
83
+ public function wp_cta_settings( $wp_cta_global_settings ) {
84
+
85
+ $wp_cta_global_settings['wp-cta-license-keys']['settings'][$this->plugin_slug] = array(
86
+ 'id' => $this->plugin_slug,
87
+ 'slug' => $this->plugin_slug,
88
+ 'remote_download_slug' => $this->remote_download_slug,
89
+ 'label' => sprintf( __( '%1$s', 'lp' ), $this->plugin_label ),
90
+ 'description' => 'Head to http://www.inboundnow.com/ to retrieve your license key for '.$this->plugin_label,
91
+ 'type' => 'inboundnow-license-key',
92
+ 'default' => ''
93
+ );
94
+
95
+ return $wp_cta_global_settings;
96
+ }
97
+
98
+
99
+ public function wpleads_settings( $wpleads_global_settings ) {
100
+ $wpleads_global_settings['wpleads-license-keys']['label'] = 'License Keys';
101
+ $wpleads_global_settings['wpleads-license-keys']['settings'][$this->plugin_slug] = array(
102
+ 'id' => $this->plugin_slug,
103
+ 'slug' => $this->plugin_slug,
104
+ 'remote_download_slug' => $this->remote_download_slug,
105
+ 'label' => sprintf( __( '%1$s', 'lp' ), $this->plugin_label ),
106
+ 'description' => 'Head to http://www.inboundnow.com/ to retrieve your license key for '.$this->plugin_label,
107
+ 'type' => 'inboundnow-license-key',
108
+ 'default' => $this->master_license_key
109
+ );
110
+
111
+ //print_r($lp_global_settings);exit;
112
+ return $wpleads_global_settings;
113
+ }
114
+
115
+
116
+
117
+ function display_license_field($field)
118
+ {
119
+ if ( $field['type']=='inboundnow-license-key' && ($field['slug']==$this->plugin_slug) )
120
+ {
121
+
122
+ $field['id'] = "inboundnow-license-keys-".$field['slug'];
123
+ $field['value'] = get_option('inboundnow_master_license_key' , '');
124
+
125
+ echo '<input type="hidden" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$field['value'].'" size="30" />';
126
+
127
+
128
+ switch ($_GET['post_type']){
129
+
130
+ case "landing-page":
131
+ $prefix = "lp_";
132
+ break;
133
+ case "wp-lead":
134
+ $prefix = "wpleads_";
135
+ break;
136
+ case "wp-call-to-action":
137
+ $prefix = "wp_cta_";
138
+ break;
139
+
140
+ }
141
+ //echo here;exit;
142
+ $license_status = $this->check_license_status($field);
143
+
144
+ echo '<input type="hidden" name="inboundnow_license_status-'.$field['slug'].'" id="'.$field['id'].'" value="'.$license_status.'" size="30" />';
145
+
146
+
147
+ if ($license_status=='valid')
148
+ {
149
+ echo '<div class="'.$prefix.'license_status_valid">Enabled</div>';
150
+ }
151
+ else
152
+ {
153
+ echo '<div class="'.$prefix.'license_status_invalid">Disabled</div>';
154
+ }
155
+
156
+ echo '<div class="'.$prefix.'tooltip tool_text" title="'.$field['description'].'"></div>';
157
+ }
158
+ }
159
+
160
+
161
+
162
+ public function check_license_status($field)
163
+ {
164
+
165
+ $date = date("Y-m-d");
166
+ $cache_date = get_option($field['id']."-expire");
167
+ $license_status = get_option('inboundnow_license_status_'.$this->plugin_slug);
168
+
169
+ /*
170
+ echo "date: $date <br>";
171
+ echo "cache date: $cache_date <br>";
172
+ echo "license status: $license_status <br>";
173
+ echo "license key: ".$field['value'];
174
+ echo "<br>";
175
+ */
176
+
177
+ if (isset($cache_date)&&($date<$cache_date)&&$license_status=='valid')
178
+ {
179
+ return "valid";
180
+ }
181
+
182
+ $api_params = array(
183
+ 'edd_action' => 'check_license',
184
+ 'license' => $field['value'],
185
+ 'item_name' => urlencode( $this->remote_download_slug ) ,
186
+ 'cache_bust'=> substr(md5(rand()),0,7)
187
+ );
188
+
189
+ //print_r($api_params);
190
+ //echo '<br>';
191
+
192
+ // Call the custom API.
193
+ $response = wp_remote_get( add_query_arg( $api_params, $this->remote_api_url ), array( 'timeout' => 15, 'sslverify' => false ) );
194
+ //print_r($response['body']);exit;
195
+
196
+ if ( is_wp_error( $response ) )
197
+ return false;
198
+
199
+ $license_data = json_decode( wp_remote_retrieve_body( $response ) );
200
+ //print_r($license_data);exit;
201
+
202
+ if( $license_data->license == 'valid' ) {
203
+ $newDate = date('Y-m-d', strtotime($license_data->expires));
204
+ update_option($field['id']."-expire", $newDate);
205
+ return 'valid';
206
+ // this license is still valid
207
+ } else {
208
+ return 'invalid';
209
+ }
210
+ }
211
+
212
+
213
+
214
+ /* SAVE & ACTIVATE LICENSE & CHECK STATUS OF KEYS */
215
+
216
+
217
+ public function save_license_field()
218
+ {
219
+
220
+ if (!isset($_POST['inboundnow_master_license_key']))
221
+ return;
222
+
223
+ $field_id = "inboundnow-license-keys-".$this->plugin_slug;
224
+
225
+ $license_status = get_option('inboundnow_license_status_'.$this->plugin_slug );
226
+
227
+ $master_license_key = $_POST['inboundnow_master_license_key'];
228
+
229
+ /*
230
+ echo "license status:".$license_status;
231
+ echo "<br>";
232
+ echo "new_key:".$master_license_key;
233
+ echo "<br>";
234
+ echo "old_key:".$this->master_license_key;
235
+ echo "<br>";
236
+ echo "plugin_slug:".$this->plugin_slug;
237
+ echo "<hr>";
238
+ */
239
+
240
+ if ($license_status=='valid' && $master_license_key == $this->master_license_key )
241
+ return;
242
+
243
+ if ( $master_license_key )
244
+ {
245
+ update_option($field_id ,$master_license_key);
246
+
247
+ // data to send in our API request
248
+ $api_params = array(
249
+ 'edd_action'=> 'activate_license',
250
+ 'license' => $master_license_key,
251
+ 'item_name' => $this->remote_download_slug ,
252
+ 'cache_bust'=> substr(md5(rand()),0,7)
253
+ );
254
+ //print_r($api_params);
255
+
256
+
257
+ // Call the custom API.
258
+ $response = wp_remote_get( add_query_arg( $api_params, $this->remote_api_url ), array( 'timeout' => 30, 'sslverify' => false ) );
259
+ //echo $response['body'];
260
+ //echo "<hr>";
261
+
262
+ // decode the license data
263
+ $license_data = json_decode( wp_remote_retrieve_body( $response ) );
264
+
265
+ // $license_data->license will be either "active" or "inactive"
266
+ $license_status = update_option('inboundnow_license_status_'.$this->plugin_slug, $license_data->license);
267
+
268
+ }
269
+ elseif ( empty($master_license_key) )
270
+ {
271
+ update_option($field_id , '' );
272
+ update_option('inboundnow_license_status_'.$this->plugin_slug, 'inactive');
273
+ }
274
+ }
275
+ /**
276
+ * Check for Updates at the defined API endpoint and modify the update array.
277
+ *
278
+ * This function dives into the update api just when Wordpress creates its update array,
279
+ * then adds a custom API call and injects the custom plugin data retrieved from the API.
280
+ * It is reassembled from parts of the native Wordpress plugin update code.
281
+ * See wp-includes/update.php line 121 for the original wp_update_plugins() function.
282
+ *
283
+ * @uses api_request()
284
+ *
285
+ * @param array $_transient_data Update array build by Wordpress.
286
+ * @return array Modified update array with custom plugin data.
287
+ */
288
+
289
+ public function pre_set_site_transient_update_plugins_filter( $_transient_data )
290
+ {
291
+
292
+ if( empty( $_transient_data ) ) return $_transient_data;
293
+
294
+ $to_send = array( 'slug' => $this->plugin_slug );
295
+
296
+ $api_response = $this->api_request( );
297
+
298
+
299
+ if( false !== $api_response && is_object( $api_response ) )
300
+ {
301
+ if( version_compare( $this->plugin_version, $api_response->new_version, '<' ) )
302
+ $_transient_data->response[$this->plugin_basename] = $api_response;
303
+ }
304
+
305
+ return $_transient_data;
306
+ }
307
+
308
+
309
+ /** Updates information on the "View version x.x details" page with custom data. */
310
+ public function plugins_api_filter( $_data, $_action = '', $_args = null ) {
311
+
312
+ if ( ( $_action != 'plugin_information' ) || !isset( $_args->slug ) || ( $_args->slug != $this->plugin_slug ) ) return $_data;
313
+
314
+ $api_response = $this->api_request();
315
+
316
+ if ( false !== $api_response ) $_data = $api_response;
317
+
318
+ return $_data;
319
+ }
320
+
321
+ /*** Calls the API and, if successfull, returns the object delivered by the API. */
322
+ public function api_request( ) {
323
+
324
+ $api_params = array(
325
+ 'edd_action' => 'get_version',
326
+ 'license' => $this->master_license_key,
327
+ 'name' => $this->remote_download_slug,
328
+ 'slug' => $this->plugin_slug
329
+ );
330
+
331
+ //print_r($api_params);
332
+ // echo "<hr>";
333
+
334
+ $request = wp_remote_post( $this->remote_api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
335
+
336
+
337
+ if ( !is_wp_error( $request ) ):
338
+ $request = json_decode( wp_remote_retrieve_body( $request ) );
339
+ if( $request )
340
+ $request->sections = maybe_unserialize( $request->sections );
341
+ return $request;
342
+ else:
343
+ return false;
344
+ endif;
345
+ }
346
+
347
+ }
348
+ } // end class_exists check
shared/inboundnow/inboundnow.extension-licensing.php CHANGED
@@ -22,7 +22,8 @@ if ( ! class_exists( 'INBOUNDNOW_EXTENSION_LICENSE' ) ) :
22
  class INBOUNDNOW_EXTENSION_LICENSE {
23
  private $item_slug;
24
  private $item_shortname;
25
- private $version;
 
26
 
27
  /**
28
  * Class constructor
@@ -38,6 +39,7 @@ if ( ! class_exists( 'INBOUNDNOW_EXTENSION_LICENSE' ) ) :
38
 
39
  $this->item_label = $_item_label;
40
  $this->item_slug = $_item_slug;
 
41
 
42
  // Setup hooks
43
  $this->hooks();
@@ -52,9 +54,26 @@ if ( ! class_exists( 'INBOUNDNOW_EXTENSION_LICENSE' ) ) :
52
 
53
  private function hooks() {
54
  // Register settings
55
- add_filter( 'lp_define_global_settings', array( $this, 'lp_settings' ), 1 );
56
- add_filter( 'wp_cta_define_global_settings', array( $this, 'wp_cta_settings' ), 1 );
57
- add_filter( 'wpleads_define_global_settings', array( $this, 'wpleads_settings' ), 1 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
  }
60
 
@@ -125,156 +144,150 @@ if ( ! class_exists( 'INBOUNDNOW_EXTENSION_LICENSE' ) ) :
125
  }
126
 
127
 
128
- }
129
-
130
-
131
- /**
132
- * HOOKS : display license field in global settings area
133
- */
134
-
135
- add_action('lp_render_global_settings','inboundnow_display_license_field');
136
- add_action('wpleads_render_global_settings','inboundnow_display_license_field');
137
- add_action('wp_cta_render_global_settings','inboundnow_display_license_field');
138
- function inboundnow_display_license_field($field)
139
- {
140
- if ($field['type']=='inboundnow-license-key')
141
  {
142
- $field['id'] = "inboundnow-license-keys-".$field['slug'];
143
- $field['value'] = get_option($field['id']);
144
-
145
- switch ($_GET['post_type']){
146
-
147
- case "landing-page":
148
- $prefix = "lp_";
149
- break;
150
- case "wp-lead":
151
- $prefix = "wpleads_";
152
- break;
153
- case "wp-call-to-action":
154
- $prefix = "wp_cta_";
155
- break;
156
-
157
- }
158
- //echo here;exit;
159
- $license_status = inboundnow_check_license_status($field);
160
- //echo $license_status;exit;
161
- echo '<input type="hidden" name="inboundnow_license_status-'.$field['slug'].'" id="'.$field['id'].'" value="'.$license_status.'" size="30" />
162
- <input type="text" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$field['value'].'" size="30" />
163
- <div class="'.$prefix.'tooltip tool_text" title="'.$field['description'].'"></div>';
164
-
165
- if ($license_status=='valid')
166
  {
167
- echo '<div class="'.$prefix.'license_status_valid">Valid</div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  }
169
- else
170
- {
171
- echo '<div class="'.$prefix.'license_status_invalid">Invalid</div>';
172
- }
173
  }
174
- }
175
 
176
 
177
- /**
178
- * HOOKS : display license field in global settings area
179
- */
180
-
181
- add_action('lp_save_global_settings','inboundnow_save_license_field');
182
- add_action('wpleads_save_global_settings','inboundnow_save_license_field');
183
- add_action('wp_cta_save_global_settings','inboundnow_save_license_field');
184
- function inboundnow_save_license_field($field)
185
- {
186
- if ($field['type']=='inboundnow-license-key')
187
  {
188
- //echo $field['id'].":".$_POST['main-landing-page-auto-format-forms']."<br>";
189
- $field['id'] = "inboundnow-license-keys-".$field['slug'];
190
- $field['old_value'] = get_option($field['id'] );
191
-
192
- (isset($_POST[$field['id'] ]))? $field['new_value'] = $_POST[$field['id'] ] : $field['new_value'] = null;
193
-
194
- if ((isset($field['new_value']) && $field['new_value'] !== $field['old_value'] ) || !isset($field['old_value']) )
195
  {
196
- //echo $field['id'];exit;
197
- $bool = update_option($field['id'],$field['new_value']);
198
-
199
-
200
- // data to send in our API request
201
- $api_params = array(
202
- 'edd_action'=> 'activate_license',
203
- 'license' => $field['new_value'],
204
- 'item_name' => $field['slug'] ,
205
- 'cache_bust'=> substr(md5(rand()),0,7)
206
- );
207
- //print_r($api_params);
208
 
209
- // Call the custom API.
210
- $response = wp_remote_get( add_query_arg( $api_params, INBOUNDNOW_STORE_URL ), array( 'timeout' => 30, 'sslverify' => false ) );
211
- //var_dump($response);
212
 
213
- // make sure the response came back okay
214
- if ( is_wp_error( $response ) )
215
- $_SESSION['license_error_'. $field['slug']] = $response['body'];
 
 
216
 
217
- // decode the license data
218
- $license_data = json_decode( wp_remote_retrieve_body( $response ) );
219
-
 
 
 
 
 
 
 
 
 
 
 
 
 
220
 
221
- // $license_data->license will be either "active" or "inactive"
222
- $license_status = update_option('inboundnow-license_status-'.$field['slug'], $license_data->license);
223
-
224
- }
225
- elseif ('' == $field['new_value'] )
226
- {
227
- $bool = update_option($field['id'], '' );
 
 
 
 
 
 
 
 
 
 
 
 
228
  }
229
  }
230
- }
231
 
232
 
233
- /**
234
- * FUNCTIONS : checks the status of the license key
235
- */
236
 
237
- function inboundnow_check_license_status($field)
238
- {
239
- //print_r($field);exit;
240
- $date = date("Y-m-d");
241
- $cache_date = get_option($field['id']."-expire");
242
- $license_status = get_option($field['id']);
243
-
244
- if (isset($cache_date)&&($date<$cache_date)&&$license_status=='valid')
245
  {
246
- return "valid";
247
- }
 
 
248
 
249
- $license_key = get_option($field['id']);
250
-
251
- $api_params = array(
252
- 'edd_action' => 'check_license',
253
- 'license' => $license_key,
254
- 'item_name' => urlencode( $field['slug'] ) ,
255
- 'cache_bust'=> substr(md5(rand()),0,7)
256
- );
257
- //print_r($api_params);
258
-
259
- // Call the custom API.
260
- $response = wp_remote_get( add_query_arg( $api_params, INBOUNDNOW_STORE_URL ), array( 'timeout' => 15, 'sslverify' => false ) );
261
- //print_r($response);
 
 
 
 
 
262
 
263
- if ( is_wp_error( $response ) )
264
- return false;
265
 
266
- $license_data = json_decode( wp_remote_retrieve_body( $response ) );
267
- //echo $license_data;exit;
268
-
269
- if( $license_data->license == 'valid' ) {
270
- $newDate = date('Y-m-d', strtotime("+15 days"));
271
- update_option($field['id']."-expire", $newDate);
272
- return 'valid';
273
- // this license is still valid
274
- } else {
275
- return 'invalid';
 
276
  }
277
  }
278
 
279
-
280
  endif; // end class_exists check
22
  class INBOUNDNOW_EXTENSION_LICENSE {
23
  private $item_slug;
24
  private $item_shortname;
25
+ private $version;
26
+ private $master_license_key;
27
 
28
  /**
29
  * Class constructor
39
 
40
  $this->item_label = $_item_label;
41
  $this->item_slug = $_item_slug;
42
+ $this->master_license_key = get_option('inboundnow_master_license_key' , '');
43
 
44
  // Setup hooks
45
  $this->hooks();
54
 
55
  private function hooks() {
56
  // Register settings
57
+ add_filter( 'lp_define_global_settings', array( $this, 'lp_settings' ), 2 );
58
+ add_filter( 'wp_cta_define_global_settings', array( $this, 'wp_cta_settings' ), 2 );
59
+ add_filter( 'wpleads_define_global_settings', array( $this, 'wpleads_settings' ), 2 );
60
+
61
+ /**
62
+ * HOOKS : display license field in global settings area
63
+ */
64
+
65
+ add_action('lp_render_global_settings', array( $this, 'display_license_field'));
66
+ add_action('wpleads_render_global_settings', array( $this, 'display_license_field'));
67
+ add_action('wp_cta_render_global_settings', array( $this, 'display_license_field'));
68
+
69
+
70
+ /**
71
+ * HOOKS : display license field in global settings area
72
+ */
73
+
74
+ add_action('lp_save_global_settings', array( $this, 'save_license_field'));
75
+ add_action('wpleads_save_global_settings', array( $this, 'save_license_field'));
76
+ add_action('wp_cta_save_global_settings', array( $this, 'save_license_field'));
77
 
78
  }
79
 
144
  }
145
 
146
 
147
+
148
+ public function display_license_field($field)
 
 
 
 
 
 
 
 
 
 
 
149
  {
150
+ if ( $field['type']=='inboundnow-license-key' && ($field['slug']==$this->item_slug) )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151
  {
152
+
153
+ $field['id'] = "inboundnow-license-keys-".$field['slug'];
154
+
155
+ $field['value'] = get_option($field['id']);
156
+
157
+ switch ($_GET['post_type']){
158
+
159
+ case "landing-page":
160
+ $prefix = "lp_";
161
+ break;
162
+ case "wp-lead":
163
+ $prefix = "wpleads_";
164
+ break;
165
+ case "wp-call-to-action":
166
+ $prefix = "wp_cta_";
167
+ break;
168
+
169
+ }
170
+ //echo here;exit;
171
+ $license_status = $this->check_license_status($field);
172
+ //echo $license_status;exit;
173
+ echo '<input type="hidden" name="inboundnow_license_status-'.$field['slug'].'" id="'.$field['id'].'" value="'.$license_status.'" size="30" />
174
+ <input type="text" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$field['value'].'" size="30" />
175
+ <div class="'.$prefix.'tooltip tool_text" title="'.$field['description'].'"></div>';
176
+
177
+ if ($license_status=='valid')
178
+ {
179
+ echo '<div class="'.$prefix.'license_status_valid">Valid</div>';
180
+ }
181
+ else
182
+ {
183
+ echo '<div class="'.$prefix.'license_status_invalid">Invalid</div>';
184
+ }
185
  }
 
 
 
 
186
  }
 
187
 
188
 
189
+
190
+ function save_license_field($field)
 
 
 
 
 
 
 
 
191
  {
192
+ if ($field['type']=='inboundnow-license-key')
 
 
 
 
 
 
193
  {
194
+ //echo $field['id'].":".$_POST['main-landing-page-auto-format-forms']."<br>";
195
+ $field['id'] = "inboundnow-license-keys-".$field['slug'];
196
+ $field['old_value'] = get_option($field['id'] );
 
 
 
 
 
 
 
 
 
197
 
198
+ (isset($_POST[$field['id'] ]))? $field['new_value'] = $_POST[$field['id'] ] : $field['new_value'] = null;
 
 
199
 
200
+ if ((isset($field['new_value']) && $field['new_value'] !== $field['old_value'] ) || !isset($field['old_value']) )
201
+ {
202
+ //echo $field['id'];exit;
203
+ $bool = update_option($field['id'],$field['new_value']);
204
+
205
 
206
+ // data to send in our API request
207
+ $api_params = array(
208
+ 'edd_action'=> 'activate_license',
209
+ 'license' => $field['new_value'],
210
+ 'item_name' => $field['slug'] ,
211
+ 'cache_bust'=> substr(md5(rand()),0,7)
212
+ );
213
+ //print_r($api_params);
214
+
215
+ // Call the custom API.
216
+ $response = wp_remote_get( add_query_arg( $api_params, INBOUNDNOW_STORE_URL ), array( 'timeout' => 30, 'sslverify' => false ) );
217
+ //var_dump($response);
218
+
219
+ // make sure the response came back okay
220
+ if ( is_wp_error( $response ) )
221
+ $_SESSION['license_error_'. $field['slug']] = $response['body'];
222
 
223
+ // decode the license data
224
+ $license_data = json_decode( wp_remote_retrieve_body( $response ) );
225
+
226
+
227
+ // $license_data->license will be either "active" or "inactive"
228
+ $license_status = update_option('inboundnow-license_status-'.$field['slug'], $license_data->license);
229
+
230
+ }
231
+ elseif ('' == $field['new_value'] )
232
+ {
233
+ if ($this->master_license_key)
234
+ {
235
+ $bool = update_option($field['id'], $this->master_license_key );
236
+ }
237
+ else
238
+ {
239
+ update_option($field['id'], '' );
240
+ }
241
+ }
242
  }
243
  }
 
244
 
245
 
246
+ /**
247
+ * FUNCTIONS : checks the status of the license key
248
+ */
249
 
250
+ function check_license_status($field)
 
 
 
 
 
 
 
251
  {
252
+ //print_r($field);exit;
253
+ $date = date("Y-m-d");
254
+ $cache_date = get_option($field['id']."-expire");
255
+ $license_status = get_option($field['id']);
256
 
257
+ if (isset($cache_date)&&($date<$cache_date)&&$license_status=='valid')
258
+ {
259
+ return "valid";
260
+ }
261
+
262
+ $license_key = get_option($field['id']);
263
+
264
+ $api_params = array(
265
+ 'edd_action' => 'check_license',
266
+ 'license' => $license_key,
267
+ 'item_name' => urlencode( $field['slug'] ) ,
268
+ 'cache_bust'=> substr(md5(rand()),0,7)
269
+ );
270
+ //print_r($api_params);
271
+
272
+ // Call the custom API.
273
+ $response = wp_remote_get( add_query_arg( $api_params, INBOUNDNOW_STORE_URL ), array( 'timeout' => 15, 'sslverify' => false ) );
274
+ //print_r($response);
275
 
276
+ if ( is_wp_error( $response ) )
277
+ return false;
278
 
279
+ $license_data = json_decode( wp_remote_retrieve_body( $response ) );
280
+ //echo $license_data;exit;
281
+
282
+ if( $license_data->license == 'valid' ) {
283
+ $newDate = date('Y-m-d', strtotime("+15 days"));
284
+ update_option($field['id']."-expire", $newDate);
285
+ return 'valid';
286
+ // this license is still valid
287
+ } else {
288
+ return 'invalid';
289
+ }
290
  }
291
  }
292
 
 
293
  endif; // end class_exists check
shared/inboundnow/inboundnow.extension-updating.php CHANGED
@@ -16,6 +16,7 @@ if ( ! class_exists( 'INBOUNDNOW_EXTENSION_UPDATER' ) ) :
16
  private $api_data = array();
17
  private $name = '';
18
  private $slug = '';
 
19
 
20
  /**
21
  * Class constructor.
@@ -24,17 +25,18 @@ if ( ! class_exists( 'INBOUNDNOW_EXTENSION_UPDATER' ) ) :
24
  * @uses hook()
25
  *
26
  * @param string $_api_url The URL pointing to the custom API endpoint.
27
- * @param string $_plugin_file Path to the plugin file.
28
  * @param array $_api_data Optional data to send with API calls.
29
  * @return void
30
  */
31
- function __construct( $_api_url, $_plugin_file, $_api_data = null ) {
32
  $this->api_url = trailingslashit( $_api_url );
33
  $this->api_data = urlencode_deep( $_api_data );
34
- $this->name = plugin_basename( $_plugin_file );
35
- $this->slug = basename( $_plugin_file, '.php');
36
- $this->version = $_api_data['version'];
37
-
 
38
  // Set up hooks.
39
  $this->hook();
40
  }
@@ -50,7 +52,7 @@ if ( ! class_exists( 'INBOUNDNOW_EXTENSION_UPDATER' ) ) :
50
  //update_option('_site_transient_update_plugins',''); //uncomment to force upload update check
51
  add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'pre_set_site_transient_update_plugins_filter' ) );
52
  add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3);
53
- //echo 1; exit;
54
  }
55
 
56
  /**
@@ -76,12 +78,12 @@ if ( ! class_exists( 'INBOUNDNOW_EXTENSION_UPDATER' ) ) :
76
 
77
  $api_response = $this->api_request( 'plugin_latest_version', $to_send );
78
 
79
- /*** Debug assistance ***
80
  echo $this->name;
81
  echo "\r\n<br>\r\n";
82
  echo $this->version;
83
  print_r($api_response);
84
- echo "\r\n<hr>\r\n";
85
  */
86
 
87
  if( false !== $api_response && is_object( $api_response ) ) {
@@ -137,19 +139,30 @@ if ( ! class_exists( 'INBOUNDNOW_EXTENSION_UPDATER' ) ) :
137
  global $wp_version;
138
 
139
  $data = array_merge( $this->api_data, $_data );
140
- if( $data['slug'] != $this->slug )
141
- return;
 
142
 
 
 
 
143
  $api_params = array(
144
  'edd_action' => 'get_version',
145
  'license' => $data['license'],
146
  'name' => $data['item_name'],
147
- 'slug' => $this->slug,
148
  //'author' => $data['author'],
149
  'nature' => 'extension',
150
  );
151
  $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
152
-
 
 
 
 
 
 
 
153
  if ( !is_wp_error( $request ) ):
154
  $request = json_decode( wp_remote_retrieve_body( $request ) );
155
  if( $request )
16
  private $api_data = array();
17
  private $name = '';
18
  private $slug = '';
19
+ private $global_license;
20
 
21
  /**
22
  * Class constructor.
25
  * @uses hook()
26
  *
27
  * @param string $_api_url The URL pointing to the custom API endpoint.
28
+ * @param string $_remote_key permalink slug of remote download
29
  * @param array $_api_data Optional data to send with API calls.
30
  * @return void
31
  */
32
+ function __construct( $_api_url, $_remote_key, $_api_data = null ) {
33
  $this->api_url = trailingslashit( $_api_url );
34
  $this->api_data = urlencode_deep( $_api_data );
35
+ $this->name = $_api_data['item_name'];
36
+ $this->slug = $_remote_key;
37
+ $this->version = $_api_data['version'];
38
+ $this->global_license = get_option('inboundnow_master_license_key' , '');
39
+
40
  // Set up hooks.
41
  $this->hook();
42
  }
52
  //update_option('_site_transient_update_plugins',''); //uncomment to force upload update check
53
  add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'pre_set_site_transient_update_plugins_filter' ) );
54
  add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3);
55
+ //print_r($this);exit;
56
  }
57
 
58
  /**
78
 
79
  $api_response = $this->api_request( 'plugin_latest_version', $to_send );
80
 
81
+ /*
82
  echo $this->name;
83
  echo "\r\n<br>\r\n";
84
  echo $this->version;
85
  print_r($api_response);
86
+ echo "\r\n<hr>\r\n";exit;
87
  */
88
 
89
  if( false !== $api_response && is_object( $api_response ) ) {
139
  global $wp_version;
140
 
141
  $data = array_merge( $this->api_data, $_data );
142
+
143
+ //if( $data['slug'] != $this->slug )
144
+ //return;
145
 
146
+ if (isset($this->global_license))
147
+ $data['license'] = $this->global_license;
148
+
149
  $api_params = array(
150
  'edd_action' => 'get_version',
151
  'license' => $data['license'],
152
  'name' => $data['item_name'],
153
+ 'slug' => $data['slug'],
154
  //'author' => $data['author'],
155
  'nature' => 'extension',
156
  );
157
  $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
158
+
159
+ if (strstr( $data['item_name'], 'aweber'))
160
+ {
161
+ //echo $request['body'];exit;
162
+ //print_r( json_decode($request['body'] , true) ) ;
163
+ //echo '<hr>';
164
+ }
165
+
166
  if ( !is_wp_error( $request ) ):
167
  $request = json_decode( wp_remote_retrieve_body( $request ) );
168
  if( $request )
shared/inboundnow/inboundnow.global-settings.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if (!function_exists('inboundnow_add_master_license'))
4
+ {
5
+ /* Add Master License Key Setting*/
6
+ add_filter('lp_define_global_settings', 'inboundnow_add_master_license', 1, 1);
7
+ add_filter('wpleads_define_global_settings', 'inboundnow_add_master_license', 1, 1);
8
+ add_filter('wpcta_define_global_settings', 'inboundnow_add_master_license', 1, 1);
9
+ function inboundnow_add_master_license($lp_global_settings)
10
+ {
11
+ if (array_key_exists('lp-license-keys',$lp_global_settings))
12
+ {
13
+ $lp_global_settings['lp-license-keys']['settings'][] = array(
14
+ 'id' => 'extensions-license-keys-master-key-header',
15
+ 'description' => __( "Head to http://www.inboundnow.com/ to retrieve your extension-ready license key." , LANDINGPAGES_TEXT_DOMAIN),
16
+ 'type' => 'header',
17
+ 'default' => '<h3 class="lp_global_settings_header">'. __( 'InboundNow Master Key' , LANDINGPAGES_TEXT_DOMAIN) .'</h3>'
18
+ );
19
+
20
+ $lp_global_settings['lp-license-keys']['settings'][] = array(
21
+ 'id' => 'inboundnow_master_license_key',
22
+ 'option_name' => 'inboundnow_master_license_key',
23
+ 'label' => __('InboundNow Master License Key' , LANDINGPAGES_TEXT_DOMAIN),
24
+ 'description' => __( "Head to http://www.inboundnow.com/ to retrieve your extension-ready license key." , LANDINGPAGES_TEXT_DOMAIN),
25
+ 'type' => 'text',
26
+ 'default' => ''
27
+ );
28
+ }
29
+
30
+ return $lp_global_settings;
31
+ }
32
+ }
shared/languages/landing-pages.po ADDED
@@ -0,0 +1,2437 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Landing Pages\n"
4
+ "POT-Creation-Date: 2013-11-25 15:59-0600\n"
5
+ "PO-Revision-Date: 2013-11-25 16:00-0600\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: InboundNow <support@inboundnow.com>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Generator: Poedit 1.5.7\n"
12
+ "X-Poedit-KeywordsList: __;_e\n"
13
+ "X-Poedit-Basepath: ../../\n"
14
+ "X-Poedit-SearchPath-0: .\n"
15
+ "X-Poedit-SearchPath-1: modules\n"
16
+
17
+ #: libraries/class-tgm-plugin-activation.php:164
18
+ #: modules/module.install.php:164
19
+ msgid "Install Required Plugins"
20
+ msgstr ""
21
+
22
+ #: libraries/class-tgm-plugin-activation.php:165
23
+ #: modules/module.install.php:165
24
+ msgid "Install Plugins"
25
+ msgstr ""
26
+
27
+ #: libraries/class-tgm-plugin-activation.php:166
28
+ #: modules/module.install.php:166
29
+ #, php-format
30
+ msgid "Installing Plugin: %s"
31
+ msgstr ""
32
+
33
+ #: libraries/class-tgm-plugin-activation.php:167
34
+ msgid "Something went wrong."
35
+ msgstr ""
36
+
37
+ #: libraries/class-tgm-plugin-activation.php:178
38
+ #: libraries/class-tgm-plugin-activation.php:490
39
+ #: modules/module.install.php:178
40
+ msgid "Return to Required Plugins Installer"
41
+ msgstr ""
42
+
43
+ #: libraries/class-tgm-plugin-activation.php:179
44
+ #: libraries/class-tgm-plugin-activation.php:1846
45
+ #: modules/module.install.php:179
46
+ msgid "Plugin activated successfully."
47
+ msgstr ""
48
+
49
+ #: libraries/class-tgm-plugin-activation.php:180
50
+ #, php-format
51
+ msgid "All plugins installed and activated successfully. %1$s"
52
+ msgstr ""
53
+
54
+ #: libraries/class-tgm-plugin-activation.php:517
55
+ #: libraries/class-tgm-plugin-activation.php:2058
56
+ msgid "Return to the Dashboard"
57
+ msgstr ""
58
+
59
+ #: libraries/class-tgm-plugin-activation.php:545
60
+ #, php-format
61
+ msgid "The following plugin was activated successfully: %s."
62
+ msgstr ""
63
+
64
+ #: libraries/class-tgm-plugin-activation.php:704
65
+ msgid "Dismiss this notice"
66
+ msgstr ""
67
+
68
+ #: libraries/class-tgm-plugin-activation.php:1091
69
+ msgid "External Link"
70
+ msgstr ""
71
+
72
+ #: libraries/class-tgm-plugin-activation.php:1096
73
+ msgid "Private Repository"
74
+ msgstr ""
75
+
76
+ #: libraries/class-tgm-plugin-activation.php:1099
77
+ msgid "Pre-Packaged"
78
+ msgstr ""
79
+
80
+ #: libraries/class-tgm-plugin-activation.php:1103
81
+ msgid "WordPress Repository"
82
+ msgstr ""
83
+
84
+ #: libraries/class-tgm-plugin-activation.php:1106
85
+ msgid "Required"
86
+ msgstr ""
87
+
88
+ #: libraries/class-tgm-plugin-activation.php:1106
89
+ msgid "Recommended"
90
+ msgstr ""
91
+
92
+ #: libraries/class-tgm-plugin-activation.php:1109
93
+ msgid "Not Installed"
94
+ msgstr ""
95
+
96
+ #: libraries/class-tgm-plugin-activation.php:1111
97
+ msgid "Installed But Not Activated"
98
+ msgstr ""
99
+
100
+ #: libraries/class-tgm-plugin-activation.php:1281
101
+ #, php-format
102
+ msgid ""
103
+ "No plugins to install or activate. <a href=\"%1$s\" title=\"Return to the "
104
+ "Dashboard\">Return to the Dashboard</a>"
105
+ msgstr ""
106
+
107
+ #: libraries/class-tgm-plugin-activation.php:1297
108
+ msgid "Plugin"
109
+ msgstr ""
110
+
111
+ #: libraries/class-tgm-plugin-activation.php:1298
112
+ msgid "Source"
113
+ msgstr ""
114
+
115
+ #: libraries/class-tgm-plugin-activation.php:1299
116
+ msgid "Type"
117
+ msgstr ""
118
+
119
+ #: libraries/class-tgm-plugin-activation.php:1300
120
+ msgid "Status"
121
+ msgstr ""
122
+
123
+ #: libraries/class-tgm-plugin-activation.php:1318
124
+ msgid "Install"
125
+ msgstr ""
126
+
127
+ #: libraries/class-tgm-plugin-activation.php:1319
128
+ msgid "Activate"
129
+ msgstr ""
130
+
131
+ #: libraries/class-tgm-plugin-activation.php:1829
132
+ msgid "Install package not available."
133
+ msgstr ""
134
+
135
+ #: libraries/class-tgm-plugin-activation.php:1830
136
+ #, php-format
137
+ msgid "Downloading install package from <span class=\"code\">%s</span>&#8230;"
138
+ msgstr ""
139
+
140
+ #: libraries/class-tgm-plugin-activation.php:1831
141
+ msgid "Unpacking the package&#8230;"
142
+ msgstr ""
143
+
144
+ #: libraries/class-tgm-plugin-activation.php:1832
145
+ msgid "Installing the plugin&#8230;"
146
+ msgstr ""
147
+
148
+ #: libraries/class-tgm-plugin-activation.php:1833
149
+ msgid "Plugin install failed."
150
+ msgstr ""
151
+
152
+ #: libraries/class-tgm-plugin-activation.php:1834
153
+ msgid "Plugin installed successfully."
154
+ msgstr ""
155
+
156
+ #: libraries/class-tgm-plugin-activation.php:1845
157
+ msgid "Plugin activation failed."
158
+ msgstr ""
159
+
160
+ #: libraries/class-tgm-plugin-activation.php:1955
161
+ msgid ""
162
+ "The installation and activation process is starting. This process may take a "
163
+ "while on some hosts, so please be patient."
164
+ msgstr ""
165
+
166
+ #: libraries/class-tgm-plugin-activation.php:1956
167
+ #, php-format
168
+ msgid "%1$s installed and activated successfully."
169
+ msgstr ""
170
+
171
+ #: libraries/class-tgm-plugin-activation.php:1956
172
+ #: libraries/class-tgm-plugin-activation.php:1965
173
+ msgid "Show Details"
174
+ msgstr ""
175
+
176
+ #: libraries/class-tgm-plugin-activation.php:1956
177
+ #: libraries/class-tgm-plugin-activation.php:1965
178
+ msgid "Hide Details"
179
+ msgstr ""
180
+
181
+ #: libraries/class-tgm-plugin-activation.php:1957
182
+ msgid "All installations and activations have been completed."
183
+ msgstr ""
184
+
185
+ #: libraries/class-tgm-plugin-activation.php:1958
186
+ #, php-format
187
+ msgid "Installing and Activating Plugin %1$s (%2$d/%3$d)"
188
+ msgstr ""
189
+
190
+ #: libraries/class-tgm-plugin-activation.php:1962
191
+ msgid ""
192
+ "The installation process is starting. This process may take a while on some "
193
+ "hosts, so please be patient."
194
+ msgstr ""
195
+
196
+ #: libraries/class-tgm-plugin-activation.php:1963
197
+ #, php-format
198
+ msgid "An error occurred while installing %1$s: <strong>%2$s</strong>."
199
+ msgstr ""
200
+
201
+ #: libraries/class-tgm-plugin-activation.php:1964
202
+ #, php-format
203
+ msgid "The installation of %1$s failed."
204
+ msgstr ""
205
+
206
+ #: libraries/class-tgm-plugin-activation.php:1965
207
+ #, php-format
208
+ msgid "%1$s installed successfully."
209
+ msgstr ""
210
+
211
+ #: libraries/class-tgm-plugin-activation.php:1966
212
+ msgid "All installations have been completed."
213
+ msgstr ""
214
+
215
+ #: libraries/class-tgm-plugin-activation.php:1967
216
+ #, php-format
217
+ msgid "Installing Plugin %1$s (%2$d/%3$d)"
218
+ msgstr ""
219
+
220
+ #: modules/module.ab-testing.metaboxes.php:8
221
+ msgid "A/B Testing"
222
+ msgstr ""
223
+
224
+ #: modules/module.ab-testing.metaboxes.php:103
225
+ msgid "Variation"
226
+ msgstr ""
227
+
228
+ #: modules/module.ab-testing.metaboxes.php:108
229
+ msgid "Paused"
230
+ msgstr ""
231
+
232
+ #: modules/module.ab-testing.metaboxes.php:115
233
+ msgid "Delete this variations stats"
234
+ msgstr ""
235
+
236
+ #: modules/module.ab-testing.metaboxes.php:115
237
+ msgid "Clear Stats"
238
+ msgstr ""
239
+
240
+ #: modules/module.ab-testing.metaboxes.php:121
241
+ msgid "Views"
242
+ msgstr ""
243
+
244
+ #: modules/module.ab-testing.metaboxes.php:125
245
+ msgid "Conversions"
246
+ msgstr ""
247
+
248
+ #: modules/module.ab-testing.metaboxes.php:129
249
+ msgid "Conversion Rate"
250
+ msgstr ""
251
+
252
+ #: modules/module.ab-testing.metaboxes.php:132
253
+ msgid "Pause this variation"
254
+ msgstr ""
255
+
256
+ #: modules/module.ab-testing.metaboxes.php:132
257
+ msgid "Pause"
258
+ msgstr ""
259
+
260
+ #: modules/module.ab-testing.metaboxes.php:133
261
+ msgid "Turn this variation on"
262
+ msgstr ""
263
+
264
+ #: modules/module.ab-testing.metaboxes.php:133
265
+ msgid "Play"
266
+ msgstr ""
267
+
268
+ #: modules/module.ab-testing.metaboxes.php:134
269
+ msgid "Edit this variation"
270
+ msgstr ""
271
+
272
+ #: modules/module.ab-testing.metaboxes.php:134
273
+ msgid "Edit"
274
+ msgstr ""
275
+
276
+ #: modules/module.ab-testing.metaboxes.php:135
277
+ msgid "Preview this variation"
278
+ msgstr ""
279
+
280
+ #: modules/module.ab-testing.metaboxes.php:135
281
+ #: modules/module.metaboxes.php:351
282
+ msgid "Preview"
283
+ msgstr ""
284
+
285
+ #: modules/module.ab-testing.metaboxes.php:136
286
+ msgid "Clone this variation"
287
+ msgstr ""
288
+
289
+ #: modules/module.ab-testing.metaboxes.php:136 modules/module.clone.php:1
290
+ msgid "Clone"
291
+ msgstr ""
292
+
293
+ #: modules/module.ab-testing.metaboxes.php:137
294
+ msgid "Delete this variation"
295
+ msgstr ""
296
+
297
+ #: modules/module.ab-testing.metaboxes.php:137
298
+ #: modules/module.templates.php:227
299
+ msgid "Delete"
300
+ msgstr ""
301
+
302
+ #: modules/module.ab-testing.metaboxes.php:196
303
+ msgid "A"
304
+ msgstr ""
305
+
306
+ #: modules/module.ab-testing.metaboxes.php:224
307
+ msgid "Add New Variation"
308
+ msgstr ""
309
+
310
+ #: modules/module.ab-testing.metaboxes.php:235
311
+ msgid "Launch Visual Editor"
312
+ msgstr ""
313
+
314
+ #: modules/module.activate.php:14 modules/module.activate.php:20
315
+ msgid "<p>The <strong>WordPress Landing Pages</strong> plugin requires"
316
+ msgstr ""
317
+
318
+ #: modules/module.activate.php:14 modules/module.activate.php:20
319
+ #: modules/module.activate.php:26 modules/module.activate.php:31
320
+ msgid "Plugin Activation Error"
321
+ msgstr ""
322
+
323
+ #: modules/module.activate.php:25 modules/module.install.php:137
324
+ msgid "WordPress Calls to Action"
325
+ msgstr ""
326
+
327
+ #: modules/module.activate.php:26 modules/module.activate.php:31
328
+ msgid "<p>The <strong>WordPress Landing Pages</strong> plugin requires "
329
+ msgstr ""
330
+
331
+ #: modules/module.admin-menus.php:12
332
+ msgid "Forms"
333
+ msgstr ""
334
+
335
+ #: modules/module.admin-menus.php:12
336
+ msgid "Create Forms"
337
+ msgstr ""
338
+
339
+ #: modules/module.admin-menus.php:14
340
+ msgid "Templates"
341
+ msgstr ""
342
+
343
+ #: modules/module.admin-menus.php:14 modules/module.templates.php:243
344
+ msgid "Manage Templates"
345
+ msgstr ""
346
+
347
+ #: modules/module.admin-menus.php:16
348
+ msgid "Get Addons"
349
+ msgstr ""
350
+
351
+ #: modules/module.admin-menus.php:18
352
+ msgid "Global Settings"
353
+ msgstr ""
354
+
355
+ #: modules/module.clone.php:1
356
+ msgid "Clone this item"
357
+ msgstr ""
358
+
359
+ #: modules/module.customizer.php:1
360
+ msgid "No A/B Tests running for this page"
361
+ msgstr ""
362
+
363
+ #: modules/module.customizer.php:1
364
+ msgid "Variations"
365
+ msgstr ""
366
+
367
+ #: modules/module.extension-licensing.php:70
368
+ #: shared/inboundnow/inboundnow.extension-licensing.php:73
369
+ #: shared/inboundnow/inboundnow.extension-licensing.php:94
370
+ #: shared/inboundnow/inboundnow.extension-licensing.php:116
371
+ #, php-format
372
+ msgid "%1$s"
373
+ msgstr ""
374
+
375
+ #: modules/module.global-settings.php:29
376
+ msgid "<h4>Landing Pages Core Settings</h4>"
377
+ msgstr ""
378
+
379
+ #: modules/module.global-settings.php:34
380
+ msgid "Default Landing Page Permalink Prefix"
381
+ msgstr ""
382
+
383
+ #: modules/module.global-settings.php:35
384
+ msgid ""
385
+ "Enter in the <span style='color:red;'>prefix</span> for landing page URLs "
386
+ "(aka permalinks).<br><br>This is the URL Slug that will be in the landing "
387
+ "page URL.<br><br> Example: http://www.yoursite.com/<span style='color:"
388
+ "red;'>PREFIX</span>/landing-page . Enter in a single word like 'go'"
389
+ msgstr ""
390
+
391
+ #: modules/module.global-settings.php:42
392
+ msgid "Enable Form Prepopulation"
393
+ msgstr ""
394
+
395
+ #: modules/module.global-settings.php:43
396
+ msgid ""
397
+ "With this setting enabled landing pages plugin will remember form input data "
398
+ "that the user submits to a form and attempt to pre-populate all other forms "
399
+ "with the same user's data when applicable."
400
+ msgstr ""
401
+
402
+ #: modules/module.global-settings.php:50
403
+ msgid "Disable Admin Impression/Conversion Tracking"
404
+ msgstr ""
405
+
406
+ #: modules/module.global-settings.php:51
407
+ msgid ""
408
+ "With this setting enabled landing pages plugin will not record visits and "
409
+ "conversions for administrative users that are logged in."
410
+ msgstr ""
411
+
412
+ #: modules/module.global-settings.php:58
413
+ msgid "Sticky Variations"
414
+ msgstr ""
415
+
416
+ #: modules/module.global-settings.php:59
417
+ msgid ""
418
+ "With this setting enabled the landing pages plugin will prevent landing page "
419
+ "version a/b rotation for a specific visitor that has viewed the page."
420
+ "<br><br>This pause on the a/b rotation will automatically expire after 30 "
421
+ "days."
422
+ msgstr ""
423
+
424
+ #: modules/module.global-settings.php:66
425
+ msgid "Enable Form Standardization"
426
+ msgstr ""
427
+
428
+ #: modules/module.global-settings.php:67
429
+ msgid ""
430
+ "With this setting enabled landing pages plugin will clean and standardize "
431
+ "all input ids and classnames. Uncheck this setting to disable "
432
+ "standardization."
433
+ msgstr ""
434
+
435
+ #: modules/module.global-settings.php:74
436
+ msgid "Form Standardization Element Whitelist"
437
+ msgstr ""
438
+
439
+ #: modules/module.global-settings.php:75
440
+ msgid ""
441
+ "Form standardization strips the conversion area content of html elements. "
442
+ "Add the elements you do not want to be stripped to this list."
443
+ msgstr ""
444
+
445
+ #: modules/module.global-settings.php:85
446
+ msgid "License Keys"
447
+ msgstr ""
448
+
449
+ #: modules/module.global-settings.php:88
450
+ msgid "Extensions"
451
+ msgstr ""
452
+
453
+ #: modules/module.global-settings.php:100
454
+ msgid "Debug"
455
+ msgstr ""
456
+
457
+ #: modules/module.global-settings.php:123
458
+ msgid ""
459
+ "Head to http://www.inboundnow.com/ to retrieve your license key for this "
460
+ "template."
461
+ msgstr ""
462
+
463
+ #: modules/module.global-settings.php:125
464
+ msgid "Extension License Keys"
465
+ msgstr ""
466
+
467
+ #: modules/module.global-settings.php:217
468
+ msgid ""
469
+ "Oh no! Your .htaccess is not writable and A/B testing won't work unless you "
470
+ "make your .htaccess file writable."
471
+ msgstr ""
472
+
473
+ #: modules/module.global-settings.php:292
474
+ msgid "Installation Status"
475
+ msgstr ""
476
+
477
+ #: modules/module.global-settings.php:296
478
+ msgid "PHP Version"
479
+ msgstr ""
480
+
481
+ #: modules/module.global-settings.php:310
482
+ msgid "Gravity Forms requires PHP 5 or above."
483
+ msgstr ""
484
+
485
+ #: modules/module.global-settings.php:317
486
+ msgid "MySQL Version"
487
+ msgstr ""
488
+
489
+ #: modules/module.global-settings.php:331
490
+ msgid "Gravity Forms requires MySQL 5 or above."
491
+ msgstr ""
492
+
493
+ #: modules/module.global-settings.php:338
494
+ msgid "WordPress Version"
495
+ msgstr ""
496
+
497
+ #: modules/module.global-settings.php:352
498
+ msgid "landing pages requires version X or higher"
499
+ msgstr ""
500
+
501
+ #: modules/module.global-settings.php:359
502
+ msgid "Landing Page Version"
503
+ msgstr ""
504
+
505
+ #: modules/module.global-settings.php:361
506
+ msgid "Version"
507
+ msgstr ""
508
+
509
+ #: modules/module.global-settings.php:375
510
+ msgid "The contents of your .htaccess file"
511
+ msgstr ""
512
+
513
+ #: modules/module.global-settings.php:411
514
+ msgid "System Information"
515
+ msgstr ""
516
+
517
+ #: modules/module.global-settings.php:414
518
+ msgid "Download System Info File for Support Requests"
519
+ msgstr ""
520
+
521
+ #: modules/module.global-settings.php:415
522
+ msgid ""
523
+ "To copy the system info, click below then press Ctrl + C (PC) or Cmd + C "
524
+ "(Mac)."
525
+ msgstr ""
526
+
527
+ #: modules/module.global-settings.php:465
528
+ msgid "Your server supports fsockopen."
529
+ msgstr ""
530
+
531
+ #: modules/module.global-settings.php:465
532
+ msgid "Your server does not support fsockopen."
533
+ msgstr ""
534
+
535
+ #: modules/module.global-settings.php:466
536
+ msgid "Your server supports cURL."
537
+ msgstr ""
538
+
539
+ #: modules/module.global-settings.php:466
540
+ msgid "Your server does not support cURL."
541
+ msgstr ""
542
+
543
+ #: modules/module.global-settings.php:467
544
+ msgid "Your server has the SOAP Client enabled."
545
+ msgstr ""
546
+
547
+ #: modules/module.global-settings.php:467
548
+ msgid "Your server does not have the SOAP Client enabled."
549
+ msgstr ""
550
+
551
+ #: modules/module.global-settings.php:468
552
+ msgid "Your server has SUHOSIN installed."
553
+ msgstr ""
554
+
555
+ #: modules/module.global-settings.php:468
556
+ msgid "Your server does not have SUHOSIN installed."
557
+ msgstr ""
558
+
559
+ #: modules/module.install.php:20
560
+ msgid "A/B Testing Landing Page Example"
561
+ msgstr ""
562
+
563
+ #: modules/module.install.php:21
564
+ msgid ""
565
+ "<p>This is the first paragraph of your landing page where you want to draw "
566
+ "the viewer in and quickly explain your value proposition.</p><p><strong>Use "
567
+ "Bullet Points to:</strong><ul><li>Explain why they should fill out the form</"
568
+ "li><li>What they will learn if they download</li><li>A problem this form "
569
+ "will solve for them</li></ul></p><p>Short ending paragraph reiterating the "
570
+ "value behind the form</p>"
571
+ msgstr ""
572
+
573
+ #: modules/module.install.php:30
574
+ msgid "Main Catchy Headline (A)"
575
+ msgstr ""
576
+
577
+ #: modules/module.install.php:32
578
+ msgid "Form a"
579
+ msgstr ""
580
+
581
+ #: modules/module.install.php:32 modules/module.install.php:37
582
+ msgid "First Name"
583
+ msgstr ""
584
+
585
+ #: modules/module.install.php:32 modules/module.install.php:37
586
+ msgid "Last Name"
587
+ msgstr ""
588
+
589
+ #: modules/module.install.php:32 modules/module.install.php:37
590
+ msgid "Email"
591
+ msgstr ""
592
+
593
+ #: modules/module.install.php:32 modules/module.install.php:37
594
+ msgid "Submit"
595
+ msgstr ""
596
+
597
+ #: modules/module.install.php:35
598
+ msgid "Main Catchy Headline Two (B)"
599
+ msgstr ""
600
+
601
+ #: modules/module.install.php:37
602
+ msgid "Form B"
603
+ msgstr ""
604
+
605
+ #: modules/module.install.php:132
606
+ msgid "WordPress Leads"
607
+ msgstr ""
608
+
609
+ #: modules/module.install.php:132
610
+ msgid ""
611
+ "This <b>free</b> landing page addon will give you the ability to track and "
612
+ "manage incoming web leads. Gather advanced Lead Intelligence and close more "
613
+ "deals."
614
+ msgstr ""
615
+
616
+ #: modules/module.install.php:132
617
+ msgid "Learn more about WordPress Leads"
618
+ msgstr ""
619
+
620
+ #: modules/module.install.php:137
621
+ msgid ""
622
+ "This <b>free</b> landing page addon will drive more traffic into your "
623
+ "Landing Pages with Targeted Calls to Action in your sites sidebars & "
624
+ "content. Create popups to capture visitor attention and convert more leads."
625
+ msgstr ""
626
+
627
+ #: modules/module.install.php:137
628
+ msgid "Learn more about WordPress Calls to Action"
629
+ msgstr ""
630
+
631
+ #: modules/module.install.php:167
632
+ msgid "Something went wrong with the plugin API."
633
+ msgstr ""
634
+
635
+ #: modules/module.install.php:180
636
+ #, php-format
637
+ msgid "All plugins installed and activated successfully. %s"
638
+ msgstr ""
639
+
640
+ #: modules/module.lead-splash.php:24
641
+ msgid "Lead Details "
642
+ msgstr ""
643
+
644
+ #: modules/module.lead-splash.php:26
645
+ msgid "View/Edit Lead"
646
+ msgstr ""
647
+
648
+ #: modules/module.lead-splash.php:29
649
+ msgid "Name"
650
+ msgstr ""
651
+
652
+ #: modules/module.lead-splash.php:33
653
+ msgid "Email Address"
654
+ msgstr ""
655
+
656
+ #: modules/module.lead-splash.php:36
657
+ msgid "IP Address"
658
+ msgstr ""
659
+
660
+ #: modules/module.lead-splash.php:39
661
+ msgid "City"
662
+ msgstr ""
663
+
664
+ #: modules/module.lead-splash.php:42
665
+ msgid "State"
666
+ msgstr ""
667
+
668
+ #: modules/module.metaboxes.php:18
669
+ msgid "Template Preview"
670
+ msgstr ""
671
+
672
+ #: modules/module.metaboxes.php:44
673
+ msgid "Preveiw this theme"
674
+ msgstr ""
675
+
676
+ #: modules/module.metaboxes.php:59
677
+ msgid "Landing Page Form or Conversion Button"
678
+ msgstr ""
679
+
680
+ #: modules/module.metaboxes.php:118
681
+ msgid ""
682
+ "To help track conversions Landing Pages Plugin will automatically add a "
683
+ "tracking class to forms. If you would like to track a link add this class to "
684
+ "it"
685
+ msgstr ""
686
+
687
+ #: modules/module.metaboxes.php:160
688
+ msgid "Notes"
689
+ msgstr ""
690
+
691
+ #: modules/module.metaboxes.php:160
692
+ msgid ""
693
+ "Add Notes to your variation. Example: This version is testing a green submit "
694
+ "button "
695
+ msgstr ""
696
+
697
+ #: modules/module.metaboxes.php:161
698
+ msgid "Primary Headline Goes here. This will be visible on the page"
699
+ msgstr ""
700
+
701
+ #: modules/module.metaboxes.php:161
702
+ msgid "This headline will appear in the landing page template."
703
+ msgstr ""
704
+
705
+ #: modules/module.metaboxes.php:207
706
+ msgid "Enter Landing Page Description"
707
+ msgstr ""
708
+
709
+ #: modules/module.metaboxes.php:221
710
+ msgid "Landing Page Templates"
711
+ msgstr ""
712
+
713
+ #: modules/module.metaboxes.php:243
714
+ msgid "Choose Another Template"
715
+ msgstr ""
716
+
717
+ #: modules/module.metaboxes.php:278
718
+ msgid "Select Your Landing Page Template!"
719
+ msgstr ""
720
+
721
+ #: modules/module.metaboxes.php:279
722
+ msgid "Cancel Template Change"
723
+ msgstr ""
724
+
725
+ #: modules/module.metaboxes.php:282
726
+ msgid "All"
727
+ msgstr ""
728
+
729
+ #: modules/module.metaboxes.php:350
730
+ msgid "Select"
731
+ msgstr ""
732
+
733
+ #: modules/module.metaboxes.php:360
734
+ msgid "This is Currently Selected"
735
+ msgstr ""
736
+
737
+ #: modules/module.metaboxes.php:368
738
+ msgid "Custom CSS"
739
+ msgstr ""
740
+
741
+ #: modules/module.metaboxes.php:374
742
+ msgid ""
743
+ "<em>Custom CSS may be required to remove sidebars, increase the widget of "
744
+ "the post content container to 100%, and sometimes to manually remove comment "
745
+ "boxes.</em>"
746
+ msgstr ""
747
+
748
+ #: modules/module.metaboxes.php:401
749
+ msgid "Custom JS"
750
+ msgstr ""
751
+
752
+ #: modules/module.metaboxes.php:433
753
+ msgid "Lead Captures"
754
+ msgstr ""
755
+
756
+ #: modules/module.metaboxes.php:594
757
+ msgid "View Lead"
758
+ msgstr ""
759
+
760
+ #: modules/module.metaboxes.php:599
761
+ msgid "First timer!"
762
+ msgstr ""
763
+
764
+ #: modules/module.metaboxes.php:619
765
+ msgid "No conversions recorded yet..."
766
+ msgstr ""
767
+
768
+ #: modules/module.metaboxes.php:636
769
+ msgid "Conversion logs:"
770
+ msgstr ""
771
+
772
+ #: modules/module.post-type.php:1
773
+ msgid "Add New Landing Page"
774
+ msgstr ""
775
+
776
+ #: modules/module.post-type.php:1
777
+ msgid "Edit Landing Page"
778
+ msgstr ""
779
+
780
+ #: modules/module.post-type.php:1
781
+ msgid "New Landing Page"
782
+ msgstr ""
783
+
784
+ #: modules/module.post-type.php:1
785
+ msgid "View Landing Page"
786
+ msgstr ""
787
+
788
+ #: modules/module.post-type.php:1
789
+ msgid "Search Landing Page"
790
+ msgstr ""
791
+
792
+ #: modules/module.post-type.php:1
793
+ #: shared/inbound-shortcodes/shortcodes/forms.php:252
794
+ msgid "Nothing found"
795
+ msgstr ""
796
+
797
+ #: modules/module.post-type.php:1
798
+ #: shared/inbound-shortcodes/shortcodes/forms.php:253
799
+ msgid "Nothing found in Trash"
800
+ msgstr ""
801
+
802
+ #: modules/module.sidebar.php:12
803
+ msgid "Landing Pages Sidebar"
804
+ msgstr ""
805
+
806
+ #: modules/module.sidebar.php:13
807
+ msgid ""
808
+ "Landing Pages Sidebar Area: For default and native theme templates only."
809
+ msgstr ""
810
+
811
+ #: modules/module.store.php:1 modules/module.templates-upload.php:42
812
+ #: modules/module.templates-upload.php:53
813
+ msgid "Search Templates"
814
+ msgstr ""
815
+
816
+ #: modules/module.templates-upload.php:14
817
+ msgid "Install Templates"
818
+ msgstr ""
819
+
820
+ #: modules/module.templates-upload.php:17
821
+ #: modules/module.templates-upload.php:45
822
+ msgid "Search"
823
+ msgstr ""
824
+
825
+ #: modules/module.templates-upload.php:18
826
+ #: modules/module.templates-upload.php:46
827
+ msgid "Upload"
828
+ msgstr ""
829
+
830
+ #: modules/module.templates-upload.php:22
831
+ msgid "Install Landing Pages template by uploading them here in .zip format"
832
+ msgstr ""
833
+
834
+ #: modules/module.templates-upload.php:24
835
+ msgid ""
836
+ "Warning: Do not upload landing page extensions here or you will break the "
837
+ "plugin! <br>Extensions are uploaded in the WordPress plugins section."
838
+ msgstr ""
839
+
840
+ #: modules/module.templates-upload.php:28
841
+ msgid "Template zip file"
842
+ msgstr ""
843
+
844
+ #: modules/module.templates-upload.php:50
845
+ msgid "Search the Inboundnow marketplace for free and premium templates."
846
+ msgstr ""
847
+
848
+ #: modules/module.templates-upload.php:116
849
+ msgid ""
850
+ "WARNING! This zip file does not seem to be a template file! If you are "
851
+ "trying to install a Landing Page extension please use the Plugin's upload "
852
+ "section! Please press the back button and try again!"
853
+ msgstr ""
854
+
855
+ #: modules/module.templates-upload.php:123
856
+ msgid "There was a problem. Please try again!"
857
+ msgstr ""
858
+
859
+ #: modules/module.templates-upload.php:128
860
+ msgid "Template uploaded successfully!"
861
+ msgstr ""
862
+
863
+ #: modules/module.templates.php:110
864
+ msgid "Template"
865
+ msgstr ""
866
+
867
+ #: modules/module.templates.php:111
868
+ msgid "Description"
869
+ msgstr ""
870
+
871
+ #: modules/module.templates.php:112
872
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:37
873
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:99
874
+ msgid "Category"
875
+ msgstr ""
876
+
877
+ #: modules/module.templates.php:113
878
+ msgid "Current Version"
879
+ msgstr ""
880
+
881
+ #: modules/module.templates.php:219
882
+ msgid ""
883
+ "No premium templates installed. Templates included in the Landing Pages core "
884
+ "plugin will not be listed here."
885
+ msgstr ""
886
+
887
+ #: modules/module.templates.php:226
888
+ msgid "Upgrade"
889
+ msgstr ""
890
+
891
+ #: modules/module.welcome.php:52 modules/module.welcome.php:53
892
+ msgid "Welcome to WordPress Landing Pages"
893
+ msgstr ""
894
+
895
+ #: modules/module.welcome.php:60 modules/module.welcome.php:61
896
+ msgid "About the Inbound Now Marketing Platform"
897
+ msgstr ""
898
+
899
+ #: modules/module.welcome.php:68 modules/module.welcome.php:69
900
+ msgid "Developers and Designers"
901
+ msgstr ""
902
+
903
+ #: modules/module.welcome.php:304 modules/module.welcome.php:566
904
+ #, php-format
905
+ msgid "Welcome to WordPress Landing Pages %s"
906
+ msgstr ""
907
+
908
+ #: modules/module.welcome.php:305
909
+ #, php-format
910
+ msgid ""
911
+ "Thank you for updating to the latest version! WordPress Landing Pages %s is "
912
+ "help you convert more leads!"
913
+ msgstr ""
914
+
915
+ #: modules/module.welcome.php:306 modules/module.welcome.php:568
916
+ #, php-format
917
+ msgid "Version %s"
918
+ msgstr ""
919
+
920
+ #: modules/module.welcome.php:312
921
+ msgid "Create Your First Landing Page"
922
+ msgstr ""
923
+
924
+ #: modules/module.welcome.php:316
925
+ msgid "How to Create Forms"
926
+ msgstr ""
927
+
928
+ #: modules/module.welcome.php:339
929
+ msgid "Go to WordPress Landing Pages Settings"
930
+ msgstr ""
931
+
932
+ #: modules/module.welcome.php:342
933
+ msgid "Manage Your Landing Page Templates"
934
+ msgstr ""
935
+
936
+ #: modules/module.welcome.php:345
937
+ msgid "Create New Landing Page"
938
+ msgstr ""
939
+
940
+ #: modules/module.welcome.php:348
941
+ msgid "Create Landing Page Forms"
942
+ msgstr ""
943
+
944
+ #: modules/module.welcome.php:439
945
+ msgid "Turbo Charge Your Marketing"
946
+ msgstr ""
947
+
948
+ #: modules/module.welcome.php:440
949
+ msgid ""
950
+ "WordPress Landing Pages is only one piece of Inbound Now's Marketing Platform"
951
+ msgstr ""
952
+
953
+ #: modules/module.welcome.php:445
954
+ msgid ""
955
+ "To have an effective marketing strategy for your site you need to "
956
+ "incorporate a comprehensive conversion strategy to capture visitors "
957
+ "attention, get them clicking, and convert them on a web form or landing page."
958
+ msgstr ""
959
+
960
+ #: modules/module.welcome.php:450
961
+ msgid "Capture visitor attention with"
962
+ msgstr ""
963
+
964
+ #: modules/module.welcome.php:458
965
+ msgid ""
966
+ "<b>Convert more website traffic</b> with visually\n"
967
+ "\t\t appealing calls to action"
968
+ msgstr ""
969
+
970
+ #: modules/module.welcome.php:465
971
+ msgid ""
972
+ "A/B test your marketing tactics and <b>improve your\n"
973
+ "\t\t sites conversion rates"
974
+ msgstr ""
975
+
976
+ #: modules/module.welcome.php:480
977
+ msgid "Convert website visitors with"
978
+ msgstr ""
979
+
980
+ #: modules/module.welcome.php:488
981
+ msgid ""
982
+ "<b>Generate more web leads</b> with pages specifically designed for "
983
+ "conversion"
984
+ msgstr ""
985
+
986
+ #: modules/module.welcome.php:494
987
+ msgid ""
988
+ "A/B Test Landing Page effectiveness for <b>continual optimization & "
989
+ "improvement</b>"
990
+ msgstr ""
991
+
992
+ #: modules/module.welcome.php:508
993
+ msgid "Followup &amp; Close the deal with"
994
+ msgstr ""
995
+
996
+ #: modules/module.welcome.php:516
997
+ msgid ""
998
+ "Gather & leverage lead intelligence on\n"
999
+ "\t\t visitors to <b>close more deals</b>"
1000
+ msgstr ""
1001
+
1002
+ #: modules/module.welcome.php:523
1003
+ msgid ""
1004
+ "Track page views, site conversions,\n"
1005
+ "\t\t demographics, geolocation, social media data and more."
1006
+ msgstr ""
1007
+
1008
+ #: modules/module.welcome.php:526
1009
+ msgid ""
1010
+ "Know everything a lead has seen and done on your site before you contact them"
1011
+ msgstr ""
1012
+
1013
+ #: modules/module.welcome.php:567
1014
+ msgid "Learn How to Build Custom Templates & Add Value to Your Clients"
1015
+ msgstr ""
1016
+
1017
+ #: modules/module.welcome.php:573
1018
+ msgid ""
1019
+ "WordPress Landing Pages was built as a platform to allow anyone to create "
1020
+ "and use their own landing page designs."
1021
+ msgstr ""
1022
+
1023
+ #: modules/module.welcome.php:575
1024
+ msgid ""
1025
+ "Infuse your designs with powerful A/B testing functionality and give clients "
1026
+ "the ability to edit options on the backend with ease."
1027
+ msgstr ""
1028
+
1029
+ #: modules/module.widgets.php:17
1030
+ msgid ""
1031
+ "Use this widget on your landing page sidebar. This sidebar replaces the "
1032
+ "normal sidebar while using your default theme as a template, or other "
1033
+ "inactive themes as landing page templates."
1034
+ msgstr ""
1035
+
1036
+ #: modules/module.widgets.php:23
1037
+ msgid "Landing Pages: Conversion Area Widget"
1038
+ msgstr ""
1039
+
1040
+ #: modules/module.widgets.php:88
1041
+ msgid ""
1042
+ "This box will render the landing page conversion area on the 'default' "
1043
+ "template."
1044
+ msgstr ""
1045
+
1046
+ #: shared/inbound-shortcodes/inbound-shortcodes.php:247
1047
+ #: shared/inbound-shortcodes/inbound-shortcodes.php:269
1048
+ #: shared/inbound-shortcodes/popup.php:26
1049
+ #: shared/inbound-shortcodes/popup.php:49
1050
+ msgid "Insert Shortcode"
1051
+ msgstr ""
1052
+
1053
+ #: shared/inbound-shortcodes/inbound-shortcodes.php:256
1054
+ msgid "Form Preview"
1055
+ msgstr ""
1056
+
1057
+ #: shared/inbound-shortcodes/inbound-shortcodes.php:259
1058
+ #: shared/inbound-shortcodes/popup.php:38
1059
+ msgid "Shortcode has no preview"
1060
+ msgstr ""
1061
+
1062
+ #: shared/inbound-shortcodes/popup.php:35
1063
+ msgid "Shortcode Preview"
1064
+ msgstr ""
1065
+
1066
+ #: shared/inbound-shortcodes/shortcodes/alert.php:12
1067
+ msgid "Color Style"
1068
+ msgstr ""
1069
+
1070
+ #: shared/inbound-shortcodes/shortcodes/alert.php:13
1071
+ #: shared/inbound-shortcodes/shortcodes/divider.php:13
1072
+ #: shared/inbound-shortcodes/shortcodes/divider.php:55
1073
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:19
1074
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:106
1075
+ msgid "Select the style."
1076
+ msgstr ""
1077
+
1078
+ #: shared/inbound-shortcodes/shortcodes/alert.php:16
1079
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:16
1080
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:46
1081
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:22
1082
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:109
1083
+ msgid "Default"
1084
+ msgstr ""
1085
+
1086
+ #: shared/inbound-shortcodes/shortcodes/alert.php:17
1087
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:17
1088
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:47
1089
+ msgid "Blue"
1090
+ msgstr ""
1091
+
1092
+ #: shared/inbound-shortcodes/shortcodes/alert.php:18
1093
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:18
1094
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:48
1095
+ msgid "Green"
1096
+ msgstr ""
1097
+
1098
+ #: shared/inbound-shortcodes/shortcodes/alert.php:19
1099
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:19
1100
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:49
1101
+ msgid "Red"
1102
+ msgstr ""
1103
+
1104
+ #: shared/inbound-shortcodes/shortcodes/alert.php:20
1105
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:20
1106
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:50
1107
+ msgid "Yellow"
1108
+ msgstr ""
1109
+
1110
+ #: shared/inbound-shortcodes/shortcodes/alert.php:25
1111
+ msgid "Message"
1112
+ msgstr ""
1113
+
1114
+ #: shared/inbound-shortcodes/shortcodes/alert.php:26
1115
+ msgid "Your message here."
1116
+ msgstr ""
1117
+
1118
+ #: shared/inbound-shortcodes/shortcodes/alert.php:32
1119
+ msgid "Insert Alert Message Shortcode"
1120
+ msgstr ""
1121
+
1122
+ #: shared/inbound-shortcodes/shortcodes/button.php:13
1123
+ msgid "Button Style"
1124
+ msgstr ""
1125
+
1126
+ #: shared/inbound-shortcodes/shortcodes/button.php:14
1127
+ msgid "Select the button style."
1128
+ msgstr ""
1129
+
1130
+ #: shared/inbound-shortcodes/shortcodes/button.php:24
1131
+ msgid "Label"
1132
+ msgstr ""
1133
+
1134
+ #: shared/inbound-shortcodes/shortcodes/button.php:25
1135
+ #: shared/inbound-shortcodes/shortcodes/callout.php:45
1136
+ #: shared/inbound-shortcodes/shortcodes/callout.php:111
1137
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:52
1138
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:132
1139
+ msgid "Enter the button text label."
1140
+ msgstr ""
1141
+
1142
+ #: shared/inbound-shortcodes/shortcodes/button.php:30
1143
+ msgid "Button Size"
1144
+ msgstr ""
1145
+
1146
+ #: shared/inbound-shortcodes/shortcodes/button.php:31
1147
+ msgid "Select the button size."
1148
+ msgstr ""
1149
+
1150
+ #: shared/inbound-shortcodes/shortcodes/button.php:41
1151
+ #: shared/inbound-shortcodes/shortcodes/forms.php:114
1152
+ msgid "Custom Width"
1153
+ msgstr ""
1154
+
1155
+ #: shared/inbound-shortcodes/shortcodes/button.php:42
1156
+ msgid "Enter in pixel width or % width. Example: 200 <u>or</u> 100%"
1157
+ msgstr ""
1158
+
1159
+ #: shared/inbound-shortcodes/shortcodes/button.php:48
1160
+ #: shared/inbound-shortcodes/shortcodes/callout.php:24
1161
+ #: shared/inbound-shortcodes/shortcodes/callout.php:88
1162
+ msgid "Button Color"
1163
+ msgstr ""
1164
+
1165
+ #: shared/inbound-shortcodes/shortcodes/button.php:49
1166
+ #: shared/inbound-shortcodes/shortcodes/callout.php:25
1167
+ #: shared/inbound-shortcodes/shortcodes/callout.php:89
1168
+ msgid "Select the button color."
1169
+ msgstr ""
1170
+
1171
+ #: shared/inbound-shortcodes/shortcodes/button.php:68
1172
+ #: shared/inbound-shortcodes/shortcodes/icon.php:11
1173
+ #: shared/inbound-shortcodes/shortcodes/list-icon.php:14
1174
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:27
1175
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:72
1176
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:57
1177
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:135
1178
+ msgid "Icon"
1179
+ msgstr ""
1180
+
1181
+ #: shared/inbound-shortcodes/shortcodes/button.php:69
1182
+ #: shared/inbound-shortcodes/shortcodes/callout.php:51
1183
+ #: shared/inbound-shortcodes/shortcodes/callout.php:118
1184
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:28
1185
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:73
1186
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:58
1187
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:136
1188
+ msgid "Select an icon."
1189
+ msgstr ""
1190
+
1191
+ #: shared/inbound-shortcodes/shortcodes/button.php:75
1192
+ msgid "Link Destination"
1193
+ msgstr ""
1194
+
1195
+ #: shared/inbound-shortcodes/shortcodes/button.php:76
1196
+ msgid "Enter the destination URL."
1197
+ msgstr ""
1198
+
1199
+ #: shared/inbound-shortcodes/shortcodes/button.php:81
1200
+ msgid "Open Link in New Tab?"
1201
+ msgstr ""
1202
+
1203
+ #: shared/inbound-shortcodes/shortcodes/button.php:82
1204
+ msgid "Check to open the link in the new tab."
1205
+ msgstr ""
1206
+
1207
+ #: shared/inbound-shortcodes/shortcodes/button.php:89
1208
+ msgid "Insert Button Shortcode"
1209
+ msgstr ""
1210
+
1211
+ #: shared/inbound-shortcodes/shortcodes/call-to-action.php:11
1212
+ msgid "Insert cta"
1213
+ msgstr ""
1214
+
1215
+ #: shared/inbound-shortcodes/shortcodes/call-to-action.php:12
1216
+ msgid "Choose CTA"
1217
+ msgstr ""
1218
+
1219
+ #: shared/inbound-shortcodes/shortcodes/call-to-action.php:20
1220
+ msgid "Insert Call to Action"
1221
+ msgstr ""
1222
+
1223
+ #: shared/inbound-shortcodes/shortcodes/callout.php:12
1224
+ #: shared/inbound-shortcodes/shortcodes/callout.php:74
1225
+ #: shared/inbound-shortcodes/shortcodes/intro.php:12
1226
+ #: shared/inbound-shortcodes/shortcodes/intro.php:46
1227
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:64
1228
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:45
1229
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:152
1230
+ msgid "Title"
1231
+ msgstr ""
1232
+
1233
+ #: shared/inbound-shortcodes/shortcodes/callout.php:13
1234
+ #: shared/inbound-shortcodes/shortcodes/callout.php:75
1235
+ #: shared/inbound-shortcodes/shortcodes/intro.php:13
1236
+ #: shared/inbound-shortcodes/shortcodes/intro.php:47
1237
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:15
1238
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:49
1239
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:13
1240
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:69
1241
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:98
1242
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:153
1243
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:13
1244
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:67
1245
+ msgid "Enter the heading text."
1246
+ msgstr ""
1247
+
1248
+ #: shared/inbound-shortcodes/shortcodes/callout.php:18
1249
+ #: shared/inbound-shortcodes/shortcodes/callout.php:81
1250
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:51
1251
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:159
1252
+ msgid "Sub Title"
1253
+ msgstr ""
1254
+
1255
+ #: shared/inbound-shortcodes/shortcodes/callout.php:19
1256
+ #: shared/inbound-shortcodes/shortcodes/callout.php:82
1257
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:52
1258
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:160
1259
+ msgid "Enter the sub title."
1260
+ msgstr ""
1261
+
1262
+ #: shared/inbound-shortcodes/shortcodes/callout.php:44
1263
+ #: shared/inbound-shortcodes/shortcodes/callout.php:110
1264
+ msgid "Button Text Label"
1265
+ msgstr ""
1266
+
1267
+ #: shared/inbound-shortcodes/shortcodes/callout.php:50
1268
+ #: shared/inbound-shortcodes/shortcodes/callout.php:117
1269
+ msgid "Button Icon"
1270
+ msgstr ""
1271
+
1272
+ #: shared/inbound-shortcodes/shortcodes/callout.php:57
1273
+ #: shared/inbound-shortcodes/shortcodes/callout.php:126
1274
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:71
1275
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:166
1276
+ msgid "Link"
1277
+ msgstr ""
1278
+
1279
+ #: shared/inbound-shortcodes/shortcodes/callout.php:58
1280
+ #: shared/inbound-shortcodes/shortcodes/callout.php:127
1281
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:58
1282
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:140
1283
+ msgid "Enter the button link destination URL."
1284
+ msgstr ""
1285
+
1286
+ #: shared/inbound-shortcodes/shortcodes/callout.php:64
1287
+ msgid "Insert Call Out Shortcode"
1288
+ msgstr ""
1289
+
1290
+ #: shared/inbound-shortcodes/shortcodes/callout.php:70
1291
+ msgid "Call Out"
1292
+ msgstr ""
1293
+
1294
+ #: shared/inbound-shortcodes/shortcodes/column.php:12
1295
+ msgid "Gutter Width"
1296
+ msgstr ""
1297
+
1298
+ #: shared/inbound-shortcodes/shortcodes/column.php:13
1299
+ msgid "A space between the columns."
1300
+ msgstr ""
1301
+
1302
+ #: shared/inbound-shortcodes/shortcodes/column.php:22
1303
+ msgid "Column Set"
1304
+ msgstr ""
1305
+
1306
+ #: shared/inbound-shortcodes/shortcodes/column.php:23
1307
+ msgid "Select the set."
1308
+ msgstr ""
1309
+
1310
+ #: shared/inbound-shortcodes/shortcodes/column.php:42
1311
+ msgid "Insert Column Shortcode"
1312
+ msgstr ""
1313
+
1314
+ #: shared/inbound-shortcodes/shortcodes/column.php:48
1315
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:20
1316
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:56
1317
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:18
1318
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:76
1319
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:12
1320
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:83
1321
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:29
1322
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:118
1323
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:18
1324
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:74
1325
+ msgid "Column"
1326
+ msgstr ""
1327
+
1328
+ #: shared/inbound-shortcodes/shortcodes/column.php:52
1329
+ msgid "Column Content"
1330
+ msgstr ""
1331
+
1332
+ #: shared/inbound-shortcodes/shortcodes/column.php:53
1333
+ msgid "Enter the column content"
1334
+ msgstr ""
1335
+
1336
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:12
1337
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:42
1338
+ msgid "Box Color"
1339
+ msgstr ""
1340
+
1341
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:13
1342
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:43
1343
+ msgid "Select the color."
1344
+ msgstr ""
1345
+
1346
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:25
1347
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:57
1348
+ #: shared/inbound-shortcodes/shortcodes/intro.php:29
1349
+ #: shared/inbound-shortcodes/shortcodes/intro.php:66
1350
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:81
1351
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:173
1352
+ msgid "Content"
1353
+ msgstr ""
1354
+
1355
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:26
1356
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:78
1357
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:174
1358
+ msgid "Enter the content."
1359
+ msgstr ""
1360
+
1361
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:32
1362
+ msgid "Insert Content Box Shortcode"
1363
+ msgstr ""
1364
+
1365
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:38
1366
+ msgid "Content Box"
1367
+ msgstr ""
1368
+
1369
+ #: shared/inbound-shortcodes/shortcodes/content-box.php:58
1370
+ #: shared/inbound-shortcodes/shortcodes/intro.php:30
1371
+ #: shared/inbound-shortcodes/shortcodes/intro.php:67
1372
+ msgid "Enter the content"
1373
+ msgstr ""
1374
+
1375
+ #: shared/inbound-shortcodes/shortcodes/divider.php:12
1376
+ #: shared/inbound-shortcodes/shortcodes/divider.php:54
1377
+ msgid "Border Style"
1378
+ msgstr ""
1379
+
1380
+ #: shared/inbound-shortcodes/shortcodes/divider.php:16
1381
+ #: shared/inbound-shortcodes/shortcodes/divider.php:57
1382
+ msgid "No Border"
1383
+ msgstr ""
1384
+
1385
+ #: shared/inbound-shortcodes/shortcodes/divider.php:17
1386
+ #: shared/inbound-shortcodes/shortcodes/divider.php:58
1387
+ msgid "Dashed"
1388
+ msgstr ""
1389
+
1390
+ #: shared/inbound-shortcodes/shortcodes/divider.php:18
1391
+ #: shared/inbound-shortcodes/shortcodes/divider.php:59
1392
+ msgid "Dotted"
1393
+ msgstr ""
1394
+
1395
+ #: shared/inbound-shortcodes/shortcodes/divider.php:19
1396
+ #: shared/inbound-shortcodes/shortcodes/divider.php:60
1397
+ msgid "Double"
1398
+ msgstr ""
1399
+
1400
+ #: shared/inbound-shortcodes/shortcodes/divider.php:20
1401
+ #: shared/inbound-shortcodes/shortcodes/divider.php:61
1402
+ msgid "Solid"
1403
+ msgstr ""
1404
+
1405
+ #: shared/inbound-shortcodes/shortcodes/divider.php:25
1406
+ #: shared/inbound-shortcodes/shortcodes/divider.php:68
1407
+ msgid "Border Color"
1408
+ msgstr ""
1409
+
1410
+ #: shared/inbound-shortcodes/shortcodes/divider.php:26
1411
+ #: shared/inbound-shortcodes/shortcodes/divider.php:69
1412
+ msgid "Enter a hex color code."
1413
+ msgstr ""
1414
+
1415
+ #: shared/inbound-shortcodes/shortcodes/divider.php:31
1416
+ msgid "Top Margin"
1417
+ msgstr ""
1418
+
1419
+ #: shared/inbound-shortcodes/shortcodes/divider.php:32
1420
+ #: shared/inbound-shortcodes/shortcodes/divider.php:77
1421
+ msgid "Enter the top margin value."
1422
+ msgstr ""
1423
+
1424
+ #: shared/inbound-shortcodes/shortcodes/divider.php:37
1425
+ #: shared/inbound-shortcodes/shortcodes/lists.php:25
1426
+ msgid "Bottom Margin"
1427
+ msgstr ""
1428
+
1429
+ #: shared/inbound-shortcodes/shortcodes/divider.php:38
1430
+ #: shared/inbound-shortcodes/shortcodes/divider.php:85
1431
+ msgid "Enter the bottom margin value."
1432
+ msgstr ""
1433
+
1434
+ #: shared/inbound-shortcodes/shortcodes/divider.php:44
1435
+ msgid "Insert Divider Shortcode"
1436
+ msgstr ""
1437
+
1438
+ #: shared/inbound-shortcodes/shortcodes/divider.php:50
1439
+ msgid "Divider"
1440
+ msgstr ""
1441
+
1442
+ #: shared/inbound-shortcodes/shortcodes/divider.php:76
1443
+ msgid "Margin Top"
1444
+ msgstr ""
1445
+
1446
+ #: shared/inbound-shortcodes/shortcodes/divider.php:84
1447
+ msgid "Margin Bottom"
1448
+ msgstr ""
1449
+
1450
+ #: shared/inbound-shortcodes/shortcodes/forms.php:18
1451
+ msgid "Choose Starting Template"
1452
+ msgstr ""
1453
+
1454
+ #: shared/inbound-shortcodes/shortcodes/forms.php:19
1455
+ msgid "Start Building Your Form from premade templates"
1456
+ msgstr ""
1457
+
1458
+ #: shared/inbound-shortcodes/shortcodes/forms.php:26
1459
+ #: shared/inbound-shortcodes/shortcodes/quick-forms.php:26
1460
+ msgid "Form Name<span class=\"small-required-text\">*</span>"
1461
+ msgstr ""
1462
+
1463
+ #: shared/inbound-shortcodes/shortcodes/forms.php:27
1464
+ #: shared/inbound-shortcodes/shortcodes/quick-forms.php:27
1465
+ msgid "This is not shown to visitors"
1466
+ msgstr ""
1467
+
1468
+ #: shared/inbound-shortcodes/shortcodes/forms.php:44
1469
+ msgid "Redirect URL<span class=\"small-required-text\">*</span>"
1470
+ msgstr ""
1471
+
1472
+ #: shared/inbound-shortcodes/shortcodes/forms.php:45
1473
+ msgid "Where do you want to send people after they fill out the form?"
1474
+ msgstr ""
1475
+
1476
+ #: shared/inbound-shortcodes/shortcodes/forms.php:61
1477
+ msgid "Notify on Form Completions<span class=\"small-required-text\">*</span>"
1478
+ msgstr ""
1479
+
1480
+ #: shared/inbound-shortcodes/shortcodes/forms.php:62
1481
+ msgid "Who should get admin notifications on this form?"
1482
+ msgstr ""
1483
+
1484
+ #: shared/inbound-shortcodes/shortcodes/forms.php:69
1485
+ #: shared/inbound-shortcodes/shortcodes/forms.php:76
1486
+ #: shared/inbound-shortcodes/shortcodes/quick-forms.php:19
1487
+ msgid "Name Name Name"
1488
+ msgstr ""
1489
+
1490
+ #: shared/inbound-shortcodes/shortcodes/forms.php:70
1491
+ msgid ""
1492
+ "<span class=\"switch-to-form-insert button\">Cancel Form Creation & Insert "
1493
+ "Existing Form</span>"
1494
+ msgstr ""
1495
+
1496
+ #: shared/inbound-shortcodes/shortcodes/forms.php:77
1497
+ msgid "Layout Options"
1498
+ msgstr ""
1499
+
1500
+ #: shared/inbound-shortcodes/shortcodes/forms.php:83
1501
+ msgid "Form Layout"
1502
+ msgstr ""
1503
+
1504
+ #: shared/inbound-shortcodes/shortcodes/forms.php:84
1505
+ msgid "Choose Your Form Layout"
1506
+ msgstr ""
1507
+
1508
+ #: shared/inbound-shortcodes/shortcodes/forms.php:94
1509
+ msgid "Label Alignment"
1510
+ msgstr ""
1511
+
1512
+ #: shared/inbound-shortcodes/shortcodes/forms.php:95
1513
+ msgid "Choose Label Layout"
1514
+ msgstr ""
1515
+
1516
+ #: shared/inbound-shortcodes/shortcodes/forms.php:107
1517
+ msgid "Submit Button Text"
1518
+ msgstr ""
1519
+
1520
+ #: shared/inbound-shortcodes/shortcodes/forms.php:108
1521
+ msgid ""
1522
+ "Enter the text you want to show on the submit button. (or a link to a custom "
1523
+ "submit button image)"
1524
+ msgstr ""
1525
+
1526
+ #: shared/inbound-shortcodes/shortcodes/forms.php:115
1527
+ msgid "Enter in pixel width or % width. Example: 400 <u>or</u> 100%"
1528
+ msgstr ""
1529
+
1530
+ #: shared/inbound-shortcodes/shortcodes/forms.php:124
1531
+ msgid "Field Label"
1532
+ msgstr ""
1533
+
1534
+ #: shared/inbound-shortcodes/shortcodes/forms.php:131
1535
+ msgid "Field Type"
1536
+ msgstr ""
1537
+
1538
+ #: shared/inbound-shortcodes/shortcodes/forms.php:132
1539
+ msgid "Select an form field type"
1540
+ msgstr ""
1541
+
1542
+ #: shared/inbound-shortcodes/shortcodes/forms.php:153
1543
+ msgid "Dropdown choices"
1544
+ msgstr ""
1545
+
1546
+ #: shared/inbound-shortcodes/shortcodes/forms.php:154
1547
+ msgid "Enter Your Dropdown Options. Separate by commas."
1548
+ msgstr ""
1549
+
1550
+ #: shared/inbound-shortcodes/shortcodes/forms.php:161
1551
+ msgid "Radio Choices"
1552
+ msgstr ""
1553
+
1554
+ #: shared/inbound-shortcodes/shortcodes/forms.php:162
1555
+ msgid "Enter Your Radio Options. Separate by commas."
1556
+ msgstr ""
1557
+
1558
+ #: shared/inbound-shortcodes/shortcodes/forms.php:169
1559
+ msgid "Checkbox choices"
1560
+ msgstr ""
1561
+
1562
+ #: shared/inbound-shortcodes/shortcodes/forms.php:170
1563
+ msgid "Enter Your Checkbox Options. Separate by commas."
1564
+ msgstr ""
1565
+
1566
+ #: shared/inbound-shortcodes/shortcodes/forms.php:177
1567
+ msgid "HTML Block"
1568
+ msgstr ""
1569
+
1570
+ #: shared/inbound-shortcodes/shortcodes/forms.php:178
1571
+ msgid "This is a raw HTML block in the form. Insert text/HTML"
1572
+ msgstr ""
1573
+
1574
+ #: shared/inbound-shortcodes/shortcodes/forms.php:184
1575
+ #: shared/inbound-shortcodes/shortcodes/forms.php:206
1576
+ msgid "Field Description <span class=\"small-optional-text\">(optional)</span>"
1577
+ msgstr ""
1578
+
1579
+ #: shared/inbound-shortcodes/shortcodes/forms.php:185
1580
+ msgid "<span class=\"show-advanced-fields\">Show advanced fields</span>"
1581
+ msgstr ""
1582
+
1583
+ #: shared/inbound-shortcodes/shortcodes/forms.php:191
1584
+ msgid "Required Field? <span class=\"small-optional-text\">(optional)</span>"
1585
+ msgstr ""
1586
+
1587
+ #: shared/inbound-shortcodes/shortcodes/forms.php:192
1588
+ msgid "Check to make field required"
1589
+ msgstr ""
1590
+
1591
+ #: shared/inbound-shortcodes/shortcodes/forms.php:199
1592
+ msgid "Field Placeholder <span class=\"small-optional-text\">(optional)</span>"
1593
+ msgstr ""
1594
+
1595
+ #: shared/inbound-shortcodes/shortcodes/forms.php:200
1596
+ msgid "Put field placeholder text here. Only works for normal text inputs"
1597
+ msgstr ""
1598
+
1599
+ #: shared/inbound-shortcodes/shortcodes/forms.php:207
1600
+ msgid "Put field description here."
1601
+ msgstr ""
1602
+
1603
+ #: shared/inbound-shortcodes/shortcodes/forms.php:214
1604
+ msgid "Dynamic Field Filling"
1605
+ msgstr ""
1606
+
1607
+ #: shared/inbound-shortcodes/shortcodes/forms.php:215
1608
+ msgid "Enter Your Dynamic URL parameter"
1609
+ msgstr ""
1610
+
1611
+ #: shared/inbound-shortcodes/shortcodes/forms.php:223
1612
+ msgid "Map Field To"
1613
+ msgstr ""
1614
+
1615
+ #: shared/inbound-shortcodes/shortcodes/forms.php:224
1616
+ msgid "Map this field to Leads Value"
1617
+ msgstr ""
1618
+
1619
+ #: shared/inbound-shortcodes/shortcodes/forms.php:232
1620
+ msgid "Add Another Field"
1621
+ msgstr ""
1622
+
1623
+ #: shared/inbound-shortcodes/shortcodes/forms.php:235
1624
+ msgid "Insert Inbound Form Shortcode"
1625
+ msgstr ""
1626
+
1627
+ #: shared/inbound-shortcodes/shortcodes/forms.php:247
1628
+ msgid "Create New Form"
1629
+ msgstr ""
1630
+
1631
+ #: shared/inbound-shortcodes/shortcodes/forms.php:248
1632
+ msgid "Edit Form"
1633
+ msgstr ""
1634
+
1635
+ #: shared/inbound-shortcodes/shortcodes/forms.php:249
1636
+ msgid "New Form"
1637
+ msgstr ""
1638
+
1639
+ #: shared/inbound-shortcodes/shortcodes/forms.php:250
1640
+ msgid "View Lists"
1641
+ msgstr ""
1642
+
1643
+ #: shared/inbound-shortcodes/shortcodes/forms.php:251
1644
+ msgid "Search Lists"
1645
+ msgstr ""
1646
+
1647
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:12
1648
+ msgid "Map Type"
1649
+ msgstr ""
1650
+
1651
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:13
1652
+ msgid "Select a map type"
1653
+ msgstr ""
1654
+
1655
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:19
1656
+ msgid "Map Width"
1657
+ msgstr ""
1658
+
1659
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:25
1660
+ msgid "Map Height"
1661
+ msgstr ""
1662
+
1663
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:31
1664
+ msgid "Address"
1665
+ msgstr ""
1666
+
1667
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:32
1668
+ msgid ""
1669
+ "Enter your address here. ex: \"New York\" or \"New York, USA\" If you want a "
1670
+ "accurate position please fill the Latitude and Longitude fields"
1671
+ msgstr ""
1672
+
1673
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:37
1674
+ msgid "Latitude"
1675
+ msgstr ""
1676
+
1677
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:38
1678
+ msgid "Latitude is specified in degrees within the range [-90, 90]"
1679
+ msgstr ""
1680
+
1681
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:43
1682
+ msgid "Longitude"
1683
+ msgstr ""
1684
+
1685
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:44
1686
+ msgid "Longitude is specified in degrees within the range [-180, 180]"
1687
+ msgstr ""
1688
+
1689
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:49
1690
+ msgid "Zoom"
1691
+ msgstr ""
1692
+
1693
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:50
1694
+ msgid "Set the zoom level, numeric value from 1 to 19"
1695
+ msgstr ""
1696
+
1697
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:55
1698
+ msgid "Pan Control"
1699
+ msgstr ""
1700
+
1701
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:56
1702
+ msgid "Enable pan control?"
1703
+ msgstr ""
1704
+
1705
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:62
1706
+ msgid "Zoom Control"
1707
+ msgstr ""
1708
+
1709
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:63
1710
+ msgid "Enable zoom control?"
1711
+ msgstr ""
1712
+
1713
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:69
1714
+ msgid "Map Type Control"
1715
+ msgstr ""
1716
+
1717
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:70
1718
+ msgid "Enable map type control?"
1719
+ msgstr ""
1720
+
1721
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:76
1722
+ msgid "Popup Content"
1723
+ msgstr ""
1724
+
1725
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:77
1726
+ msgid "A descriptive text for the Google Map marker popup, ex: \"My Office\""
1727
+ msgstr ""
1728
+
1729
+ #: shared/inbound-shortcodes/shortcodes/gmap.php:83
1730
+ msgid "Insert Google Map Shortcode"
1731
+ msgstr ""
1732
+
1733
+ #: shared/inbound-shortcodes/shortcodes/icon.php:12
1734
+ #: shared/inbound-shortcodes/shortcodes/list-icon.php:15
1735
+ msgid "Select the icon."
1736
+ msgstr ""
1737
+
1738
+ #: shared/inbound-shortcodes/shortcodes/icon.php:18
1739
+ msgid "Size"
1740
+ msgstr ""
1741
+
1742
+ #: shared/inbound-shortcodes/shortcodes/icon.php:19
1743
+ msgid "Select the icon size."
1744
+ msgstr ""
1745
+
1746
+ #: shared/inbound-shortcodes/shortcodes/icon.php:22
1747
+ msgid "Normal Size"
1748
+ msgstr ""
1749
+
1750
+ #: shared/inbound-shortcodes/shortcodes/icon.php:23
1751
+ msgid "Large Size"
1752
+ msgstr ""
1753
+
1754
+ #: shared/inbound-shortcodes/shortcodes/icon.php:24
1755
+ msgid "2x Size"
1756
+ msgstr ""
1757
+
1758
+ #: shared/inbound-shortcodes/shortcodes/icon.php:25
1759
+ msgid "3x Size"
1760
+ msgstr ""
1761
+
1762
+ #: shared/inbound-shortcodes/shortcodes/icon.php:26
1763
+ msgid "4x Size"
1764
+ msgstr ""
1765
+
1766
+ #: shared/inbound-shortcodes/shortcodes/icon.php:31
1767
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:18
1768
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:105
1769
+ msgid "Style"
1770
+ msgstr ""
1771
+
1772
+ #: shared/inbound-shortcodes/shortcodes/icon.php:32
1773
+ msgid "Select the icon style."
1774
+ msgstr ""
1775
+
1776
+ #: shared/inbound-shortcodes/shortcodes/icon.php:35
1777
+ msgid "Normal"
1778
+ msgstr ""
1779
+
1780
+ #: shared/inbound-shortcodes/shortcodes/icon.php:36
1781
+ msgid "Muted"
1782
+ msgstr ""
1783
+
1784
+ #: shared/inbound-shortcodes/shortcodes/icon.php:37
1785
+ msgid "Border"
1786
+ msgstr ""
1787
+
1788
+ #: shared/inbound-shortcodes/shortcodes/icon.php:38
1789
+ msgid "Spin"
1790
+ msgstr ""
1791
+
1792
+ #: shared/inbound-shortcodes/shortcodes/icon.php:44
1793
+ msgid "Insert Icon Shortcode"
1794
+ msgstr ""
1795
+
1796
+ #: shared/inbound-shortcodes/shortcodes/intro.php:18
1797
+ #: shared/inbound-shortcodes/shortcodes/intro.php:53
1798
+ msgid "Text Alignment"
1799
+ msgstr ""
1800
+
1801
+ #: shared/inbound-shortcodes/shortcodes/intro.php:19
1802
+ msgid "Enter text alignment."
1803
+ msgstr ""
1804
+
1805
+ #: shared/inbound-shortcodes/shortcodes/intro.php:22
1806
+ #: shared/inbound-shortcodes/shortcodes/intro.php:57
1807
+ msgid "Align Center"
1808
+ msgstr ""
1809
+
1810
+ #: shared/inbound-shortcodes/shortcodes/intro.php:23
1811
+ #: shared/inbound-shortcodes/shortcodes/intro.php:58
1812
+ msgid "Align Left"
1813
+ msgstr ""
1814
+
1815
+ #: shared/inbound-shortcodes/shortcodes/intro.php:24
1816
+ #: shared/inbound-shortcodes/shortcodes/intro.php:59
1817
+ msgid "Align Right"
1818
+ msgstr ""
1819
+
1820
+ #: shared/inbound-shortcodes/shortcodes/intro.php:36
1821
+ msgid "Insert Intro Shortcode"
1822
+ msgstr ""
1823
+
1824
+ #: shared/inbound-shortcodes/shortcodes/intro.php:42
1825
+ msgid "Intro"
1826
+ msgstr ""
1827
+
1828
+ #: shared/inbound-shortcodes/shortcodes/intro.php:54
1829
+ msgid "The text alignment"
1830
+ msgstr ""
1831
+
1832
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:14
1833
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:12
1834
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:12
1835
+ msgid "Heading Text"
1836
+ msgstr ""
1837
+
1838
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:21
1839
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:57
1840
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:19
1841
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:77
1842
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:30
1843
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:19
1844
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:75
1845
+ msgid "Select the number of column."
1846
+ msgstr ""
1847
+
1848
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:24
1849
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:60
1850
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:23
1851
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:81
1852
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:16
1853
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:87
1854
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:34
1855
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:123
1856
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:23
1857
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:79
1858
+ msgid "2 Columns"
1859
+ msgstr ""
1860
+
1861
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:25
1862
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:61
1863
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:24
1864
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:82
1865
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:17
1866
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:88
1867
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:35
1868
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:124
1869
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:24
1870
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:80
1871
+ msgid "3 Columns"
1872
+ msgstr ""
1873
+
1874
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:26
1875
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:62
1876
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:25
1877
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:83
1878
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:18
1879
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:89
1880
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:36
1881
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:125
1882
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:25
1883
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:81
1884
+ msgid "4 Columns"
1885
+ msgstr ""
1886
+
1887
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:31
1888
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:69
1889
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:31
1890
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:91
1891
+ msgid "Post Number"
1892
+ msgstr ""
1893
+
1894
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:32
1895
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:70
1896
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:92
1897
+ msgid "Enter the number of post to show."
1898
+ msgstr ""
1899
+
1900
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:38
1901
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:58
1902
+ msgid "Insert Landing Page List Shortcode"
1903
+ msgstr ""
1904
+
1905
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:44
1906
+ msgid "Portfolio"
1907
+ msgstr ""
1908
+
1909
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:48
1910
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:68
1911
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:12
1912
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:54
1913
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:12
1914
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:97
1915
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:66
1916
+ msgid "Heading"
1917
+ msgstr ""
1918
+
1919
+ #: shared/inbound-shortcodes/shortcodes/landing-page-list.php:117
1920
+ msgid "View Project"
1921
+ msgstr ""
1922
+
1923
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:22
1924
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:80
1925
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:33
1926
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:122
1927
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:22
1928
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:78
1929
+ msgid "1 Column"
1930
+ msgstr ""
1931
+
1932
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:26
1933
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:84
1934
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:19
1935
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:90
1936
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:37
1937
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:126
1938
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:26
1939
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:82
1940
+ msgid "5 Columns"
1941
+ msgstr ""
1942
+
1943
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:32
1944
+ msgid "Enter the number of post to show. (enter -1 for all posts)"
1945
+ msgstr ""
1946
+
1947
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:38
1948
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:100
1949
+ msgid "Optional you can sort by a category."
1950
+ msgstr ""
1951
+
1952
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:44
1953
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:108
1954
+ msgid "Excerpt Lenght"
1955
+ msgstr ""
1956
+
1957
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:45
1958
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:109
1959
+ msgid "The post excerpt word lenght."
1960
+ msgstr ""
1961
+
1962
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:50
1963
+ msgid "Show Featured Thumbnails"
1964
+ msgstr ""
1965
+
1966
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:51
1967
+ msgid "Uncheck to hide featured thumbnails"
1968
+ msgstr ""
1969
+
1970
+ #: shared/inbound-shortcodes/shortcodes/landing_pages.php:64
1971
+ msgid "Entries"
1972
+ msgstr ""
1973
+
1974
+ #: shared/inbound-shortcodes/shortcodes/leadp.php:12
1975
+ msgid "Alignment"
1976
+ msgstr ""
1977
+
1978
+ #: shared/inbound-shortcodes/shortcodes/leadp.php:13
1979
+ msgid "Add the pharagraph alignment"
1980
+ msgstr ""
1981
+
1982
+ #: shared/inbound-shortcodes/shortcodes/leadp.php:23
1983
+ msgid "Paragraph Text"
1984
+ msgstr ""
1985
+
1986
+ #: shared/inbound-shortcodes/shortcodes/leadp.php:24
1987
+ msgid "Add the pharagraph text"
1988
+ msgstr ""
1989
+
1990
+ #: shared/inbound-shortcodes/shortcodes/leadp.php:30
1991
+ msgid "Insert Lead Paragraph Shortcode"
1992
+ msgstr ""
1993
+
1994
+ #: shared/inbound-shortcodes/shortcodes/list-icon.php:21
1995
+ msgid "List Content"
1996
+ msgstr ""
1997
+
1998
+ #: shared/inbound-shortcodes/shortcodes/list-icon.php:22
1999
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:64
2000
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:148
2001
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:35
2002
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:47
2003
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:108
2004
+ msgid "Put the content here."
2005
+ msgstr ""
2006
+
2007
+ #: shared/inbound-shortcodes/shortcodes/list-icon.php:28
2008
+ msgid "Add More List"
2009
+ msgstr ""
2010
+
2011
+ #: shared/inbound-shortcodes/shortcodes/list-icon.php:31
2012
+ msgid "Insert List Icons Shortcode"
2013
+ msgstr ""
2014
+
2015
+ #: shared/inbound-shortcodes/shortcodes/lists.php:12
2016
+ msgid "List Icon"
2017
+ msgstr ""
2018
+
2019
+ #: shared/inbound-shortcodes/shortcodes/lists.php:13
2020
+ msgid "Select an icon for the List"
2021
+ msgstr ""
2022
+
2023
+ #: shared/inbound-shortcodes/shortcodes/lists.php:19
2024
+ msgid "Font Size"
2025
+ msgstr ""
2026
+
2027
+ #: shared/inbound-shortcodes/shortcodes/lists.php:20
2028
+ msgid "Size of List Font"
2029
+ msgstr ""
2030
+
2031
+ #: shared/inbound-shortcodes/shortcodes/lists.php:26
2032
+ msgid "space between list items"
2033
+ msgstr ""
2034
+
2035
+ #: shared/inbound-shortcodes/shortcodes/lists.php:31
2036
+ msgid "Icon Color"
2037
+ msgstr ""
2038
+
2039
+ #: shared/inbound-shortcodes/shortcodes/lists.php:32
2040
+ msgid "Color of Icon"
2041
+ msgstr ""
2042
+
2043
+ #: shared/inbound-shortcodes/shortcodes/lists.php:37
2044
+ msgid "Text Color"
2045
+ msgstr ""
2046
+
2047
+ #: shared/inbound-shortcodes/shortcodes/lists.php:38
2048
+ msgid "Color of Text in List"
2049
+ msgstr ""
2050
+
2051
+ #: shared/inbound-shortcodes/shortcodes/lists.php:46
2052
+ msgid "Insert Styled List Shortcode"
2053
+ msgstr ""
2054
+
2055
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:13
2056
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:84
2057
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:119
2058
+ msgid "Select the column."
2059
+ msgstr ""
2060
+
2061
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:27
2062
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:99
2063
+ msgid "Featured Plan"
2064
+ msgstr ""
2065
+
2066
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:28
2067
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:100
2068
+ msgid "Check to set this plan as featured"
2069
+ msgstr ""
2070
+
2071
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:33
2072
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:107
2073
+ msgid "Plan Title"
2074
+ msgstr ""
2075
+
2076
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:34
2077
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:108
2078
+ msgid "Enter the plan title."
2079
+ msgstr ""
2080
+
2081
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:39
2082
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:115
2083
+ msgid "Plan Price"
2084
+ msgstr ""
2085
+
2086
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:40
2087
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:116
2088
+ msgid "Enter the plan price."
2089
+ msgstr ""
2090
+
2091
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:45
2092
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:123
2093
+ msgid "Plan Term"
2094
+ msgstr ""
2095
+
2096
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:46
2097
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:124
2098
+ msgid "Enter the plan term. e.g : \"per month\", \"per year\" etc."
2099
+ msgstr ""
2100
+
2101
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:51
2102
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:131
2103
+ msgid "Plan Button Text"
2104
+ msgstr ""
2105
+
2106
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:57
2107
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:139
2108
+ msgid "Plan Button Link"
2109
+ msgstr ""
2110
+
2111
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:63
2112
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:147
2113
+ msgid "Plan Content"
2114
+ msgstr ""
2115
+
2116
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:70
2117
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:53
2118
+ msgid "Add More Testimony"
2119
+ msgstr ""
2120
+
2121
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:73
2122
+ msgid "Insert Pricing Shortcode"
2123
+ msgstr ""
2124
+
2125
+ #: shared/inbound-shortcodes/shortcodes/pricing.php:79
2126
+ msgid "Pricing Table"
2127
+ msgstr ""
2128
+
2129
+ #: shared/inbound-shortcodes/shortcodes/profile.php:12
2130
+ #: shared/inbound-shortcodes/shortcodes/profile.php:71
2131
+ msgid "Profile Name"
2132
+ msgstr ""
2133
+
2134
+ #: shared/inbound-shortcodes/shortcodes/profile.php:13
2135
+ #: shared/inbound-shortcodes/shortcodes/profile.php:72
2136
+ msgid "Enter the name."
2137
+ msgstr ""
2138
+
2139
+ #: shared/inbound-shortcodes/shortcodes/profile.php:18
2140
+ #: shared/inbound-shortcodes/shortcodes/profile.php:79
2141
+ msgid "Profile Meta"
2142
+ msgstr ""
2143
+
2144
+ #: shared/inbound-shortcodes/shortcodes/profile.php:19
2145
+ #: shared/inbound-shortcodes/shortcodes/profile.php:80
2146
+ msgid "Enter the profile meta. e.g job position etc."
2147
+ msgstr ""
2148
+
2149
+ #: shared/inbound-shortcodes/shortcodes/profile.php:24
2150
+ #: shared/inbound-shortcodes/shortcodes/profile.php:87
2151
+ msgid "Profile Image"
2152
+ msgstr ""
2153
+
2154
+ #: shared/inbound-shortcodes/shortcodes/profile.php:25
2155
+ #: shared/inbound-shortcodes/shortcodes/profile.php:88
2156
+ msgid "Paste your profile image URL here."
2157
+ msgstr ""
2158
+
2159
+ #: shared/inbound-shortcodes/shortcodes/profile.php:30
2160
+ #: shared/inbound-shortcodes/shortcodes/profile.php:95
2161
+ msgid "Profile Link"
2162
+ msgstr ""
2163
+
2164
+ #: shared/inbound-shortcodes/shortcodes/profile.php:31
2165
+ msgid "Paste your profile link URL here."
2166
+ msgstr ""
2167
+
2168
+ #: shared/inbound-shortcodes/shortcodes/profile.php:36
2169
+ #: shared/inbound-shortcodes/shortcodes/profile.php:103
2170
+ msgid "Profile Facebook"
2171
+ msgstr ""
2172
+
2173
+ #: shared/inbound-shortcodes/shortcodes/profile.php:37
2174
+ #: shared/inbound-shortcodes/shortcodes/profile.php:104
2175
+ msgid "Paste your facebook URL here."
2176
+ msgstr ""
2177
+
2178
+ #: shared/inbound-shortcodes/shortcodes/profile.php:42
2179
+ #: shared/inbound-shortcodes/shortcodes/profile.php:111
2180
+ msgid "Profile Twitter"
2181
+ msgstr ""
2182
+
2183
+ #: shared/inbound-shortcodes/shortcodes/profile.php:43
2184
+ #: shared/inbound-shortcodes/shortcodes/profile.php:112
2185
+ msgid "Paste your twitter URL here."
2186
+ msgstr ""
2187
+
2188
+ #: shared/inbound-shortcodes/shortcodes/profile.php:48
2189
+ #: shared/inbound-shortcodes/shortcodes/profile.php:119
2190
+ msgid "Profile Email Address"
2191
+ msgstr ""
2192
+
2193
+ #: shared/inbound-shortcodes/shortcodes/profile.php:49
2194
+ #: shared/inbound-shortcodes/shortcodes/profile.php:120
2195
+ msgid "Paste your email address here."
2196
+ msgstr ""
2197
+
2198
+ #: shared/inbound-shortcodes/shortcodes/profile.php:54
2199
+ #: shared/inbound-shortcodes/shortcodes/profile.php:127
2200
+ msgid "Profile Description"
2201
+ msgstr ""
2202
+
2203
+ #: shared/inbound-shortcodes/shortcodes/profile.php:55
2204
+ #: shared/inbound-shortcodes/shortcodes/profile.php:128
2205
+ msgid "Enter the profile description text."
2206
+ msgstr ""
2207
+
2208
+ #: shared/inbound-shortcodes/shortcodes/profile.php:61
2209
+ msgid "Insert Profile Shortcode"
2210
+ msgstr ""
2211
+
2212
+ #: shared/inbound-shortcodes/shortcodes/profile.php:67
2213
+ msgid "Profile"
2214
+ msgstr ""
2215
+
2216
+ #: shared/inbound-shortcodes/shortcodes/profile.php:96
2217
+ msgid "Paste your profile URL here."
2218
+ msgstr ""
2219
+
2220
+ #: shared/inbound-shortcodes/shortcodes/quick-forms.php:11
2221
+ msgid "Insert Saved Form"
2222
+ msgstr ""
2223
+
2224
+ #: shared/inbound-shortcodes/shortcodes/quick-forms.php:12
2225
+ msgid "Insert a Saved Form"
2226
+ msgstr ""
2227
+
2228
+ #: shared/inbound-shortcodes/shortcodes/quick-forms.php:20
2229
+ msgid "<span class=\"switch-to-form-builder button\">Build a New Form</span>"
2230
+ msgstr ""
2231
+
2232
+ #: shared/inbound-shortcodes/shortcodes/quick-forms.php:35
2233
+ msgid "Quick Insert Inbound Form Shortcode"
2234
+ msgstr ""
2235
+
2236
+ #: shared/inbound-shortcodes/shortcodes/social.php:12
2237
+ msgid "Facebook"
2238
+ msgstr ""
2239
+
2240
+ #: shared/inbound-shortcodes/shortcodes/social.php:13
2241
+ msgid "Enter your facebook profile URL"
2242
+ msgstr ""
2243
+
2244
+ #: shared/inbound-shortcodes/shortcodes/social.php:18
2245
+ msgid "Twitter"
2246
+ msgstr ""
2247
+
2248
+ #: shared/inbound-shortcodes/shortcodes/social.php:19
2249
+ msgid "Enter your twitter profile URL"
2250
+ msgstr ""
2251
+
2252
+ #: shared/inbound-shortcodes/shortcodes/social.php:24
2253
+ msgid "Google+"
2254
+ msgstr ""
2255
+
2256
+ #: shared/inbound-shortcodes/shortcodes/social.php:25
2257
+ msgid "Enter your google plus profile URL"
2258
+ msgstr ""
2259
+
2260
+ #: shared/inbound-shortcodes/shortcodes/social.php:30
2261
+ msgid "Linkedin"
2262
+ msgstr ""
2263
+
2264
+ #: shared/inbound-shortcodes/shortcodes/social.php:31
2265
+ msgid "Enter your linkedin profile URL"
2266
+ msgstr ""
2267
+
2268
+ #: shared/inbound-shortcodes/shortcodes/social.php:36
2269
+ msgid "Github"
2270
+ msgstr ""
2271
+
2272
+ #: shared/inbound-shortcodes/shortcodes/social.php:37
2273
+ msgid "Enter your github profile URL"
2274
+ msgstr ""
2275
+
2276
+ #: shared/inbound-shortcodes/shortcodes/social.php:42
2277
+ msgid "Instagram"
2278
+ msgstr ""
2279
+
2280
+ #: shared/inbound-shortcodes/shortcodes/social.php:43
2281
+ msgid "Enter your instagram profile URL"
2282
+ msgstr ""
2283
+
2284
+ #: shared/inbound-shortcodes/shortcodes/social.php:48
2285
+ msgid "Pinterest"
2286
+ msgstr ""
2287
+
2288
+ #: shared/inbound-shortcodes/shortcodes/social.php:49
2289
+ msgid "Enter your pinterest profile URL"
2290
+ msgstr ""
2291
+
2292
+ #: shared/inbound-shortcodes/shortcodes/social.php:54
2293
+ msgid "RSS"
2294
+ msgstr ""
2295
+
2296
+ #: shared/inbound-shortcodes/shortcodes/social.php:55
2297
+ msgid "Enter your RSS feeds URL"
2298
+ msgstr ""
2299
+
2300
+ #: shared/inbound-shortcodes/shortcodes/social.php:61
2301
+ msgid "Insert Social Link Shortcode"
2302
+ msgstr ""
2303
+
2304
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:13
2305
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:55
2306
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:13
2307
+ msgid "Enter the heading text"
2308
+ msgstr ""
2309
+
2310
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:21
2311
+ msgid "Tab Title"
2312
+ msgstr ""
2313
+
2314
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:22
2315
+ msgid "Enter the tab title."
2316
+ msgstr ""
2317
+
2318
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:34
2319
+ msgid "Tab Content"
2320
+ msgstr ""
2321
+
2322
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:41
2323
+ msgid "Add More Tab"
2324
+ msgstr ""
2325
+
2326
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:44
2327
+ msgid "Insert Tabs Shortcode"
2328
+ msgstr ""
2329
+
2330
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:50
2331
+ msgid "Tabs"
2332
+ msgstr ""
2333
+
2334
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:65
2335
+ msgid "Enter the tab title"
2336
+ msgstr ""
2337
+
2338
+ #: shared/inbound-shortcodes/shortcodes/tabs.php:82
2339
+ msgid "Enter the tab content"
2340
+ msgstr ""
2341
+
2342
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:23
2343
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:110
2344
+ msgid "Nested"
2345
+ msgstr ""
2346
+
2347
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:24
2348
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:111
2349
+ msgid "Centered"
2350
+ msgstr ""
2351
+
2352
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:46
2353
+ msgid "Enter the title."
2354
+ msgstr ""
2355
+
2356
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:64
2357
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:144
2358
+ msgid "Image URL"
2359
+ msgstr ""
2360
+
2361
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:65
2362
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:145
2363
+ msgid "Enter your image url, it will override the icon above"
2364
+ msgstr ""
2365
+
2366
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:72
2367
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:167
2368
+ msgid "The title link destination URL."
2369
+ msgstr ""
2370
+
2371
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:77
2372
+ msgid "Teaser Content"
2373
+ msgstr ""
2374
+
2375
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:84
2376
+ msgid "Add More Block"
2377
+ msgstr ""
2378
+
2379
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:87
2380
+ msgid "Insert Teaser Shortcode"
2381
+ msgstr ""
2382
+
2383
+ #: shared/inbound-shortcodes/shortcodes/teaser.php:93
2384
+ msgid "Teaser"
2385
+ msgstr ""
2386
+
2387
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:34
2388
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:91
2389
+ msgid "Testimony Author"
2390
+ msgstr ""
2391
+
2392
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:35
2393
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:92
2394
+ msgid "Enter the testimony author name."
2395
+ msgstr ""
2396
+
2397
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:40
2398
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:99
2399
+ msgid "Testimony Author Meta"
2400
+ msgstr ""
2401
+
2402
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:41
2403
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:100
2404
+ msgid "The author job, company or website name."
2405
+ msgstr ""
2406
+
2407
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:46
2408
+ msgid "Testimony Content"
2409
+ msgstr ""
2410
+
2411
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:56
2412
+ msgid "Insert Testimonial Shortcode"
2413
+ msgstr ""
2414
+
2415
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:62
2416
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:124
2417
+ msgid "Testimonial"
2418
+ msgstr ""
2419
+
2420
+ #: shared/inbound-shortcodes/shortcodes/testimonial.php:107
2421
+ msgid "Testimony Text"
2422
+ msgstr ""
2423
+
2424
+ #: shared/inbound-shortcodes/shortcodes/video.php:12
2425
+ msgid "Video URL"
2426
+ msgstr ""
2427
+
2428
+ #: shared/inbound-shortcodes/shortcodes/video.php:13
2429
+ msgid ""
2430
+ "Paste the video URL here, click <a href=\"http://codex.wordpress.org/"
2431
+ "Embeds#Okay.2C_So_What_Sites_Can_I_Embed_From.3F\" target=\"_blank\">here</"
2432
+ "a> to see all available video hosts."
2433
+ msgstr ""
2434
+
2435
+ #: shared/inbound-shortcodes/shortcodes/video.php:19
2436
+ msgid "Insert Video Shortcode"
2437
+ msgstr ""
shared/languages/landing-pages/_get-translations.bat ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ tx.exe pull -a --skip
2
+
3
+
4
+ for %%a in (*.po) do (
5
+ if /i not "%%~na"=="landing-pages" (
6
+ msgfmt -cv -o "%%~na.mo" "%%a"
7
+ del "%%a"
8
+ )
9
+
10
+ )
11
+
12
+ PAUSE
shared/languages/landing-pages/ach.mo ADDED
Binary file
shared/languages/landing-pages/af.mo ADDED
Binary file
shared/languages/landing-pages/ar.mo ADDED
Binary file
shared/languages/landing-pages/az.mo ADDED
Binary file
shared/languages/landing-pages/be_BY.mo ADDED
Binary file
shared/languages/landing-pages/bg_BG.mo ADDED
Binary file
shared/languages/landing-pages/bn_BD.mo ADDED
Binary file
shared/languages/landing-pages/br.mo ADDED
Binary file
shared/languages/landing-pages/bs_BA.mo ADDED
Binary file
shared/languages/landing-pages/ca.mo ADDED
Binary file
shared/languages/landing-pages/co.mo ADDED
Binary file
shared/languages/landing-pages/cs_CZ.mo ADDED
Binary file
shared/languages/landing-pages/cy.mo ADDED
Binary file
shared/languages/landing-pages/da_DK.mo ADDED
Binary file
shared/languages/landing-pages/de_DE.mo ADDED
Binary file
shared/languages/landing-pages/el.mo ADDED
Binary file
shared/languages/landing-pages/en_GB.mo ADDED
Binary file
shared/languages/landing-pages/eo.mo ADDED
Binary file
shared/languages/landing-pages/es_CL.mo ADDED
Binary file
shared/languages/landing-pages/es_ES.mo ADDED
Binary file
shared/languages/landing-pages/es_MX.mo ADDED
Binary file
shared/languages/landing-pages/es_PE.mo ADDED
Binary file
shared/languages/landing-pages/es_VE.mo ADDED
Binary file
shared/languages/landing-pages/et.mo ADDED
Binary file
shared/languages/landing-pages/eu.mo ADDED
Binary file
shared/languages/landing-pages/fa.mo ADDED
Binary file
shared/languages/landing-pages/fa_IR.mo ADDED
Binary file
shared/languages/landing-pages/fi.mo ADDED
Binary file
shared/languages/landing-pages/fo.mo ADDED
Binary file
shared/languages/landing-pages/fr_FR.mo ADDED
Binary file
shared/languages/landing-pages/gl_ES.mo ADDED
Binary file
shared/languages/landing-pages/gu_IN.mo ADDED
Binary file
shared/languages/landing-pages/he_IL.mo ADDED
Binary file
shared/languages/landing-pages/hi_IN.mo ADDED
Binary file
shared/languages/landing-pages/hr.mo ADDED
Binary file
shared/languages/landing-pages/hu_HU.mo ADDED
Binary file
shared/languages/landing-pages/id_ID.mo ADDED
Binary file
shared/languages/landing-pages/is_IS.mo ADDED
Binary file
shared/languages/landing-pages/it_IT.mo ADDED
Binary file
shared/languages/landing-pages/ja.mo ADDED
Binary file
shared/languages/landing-pages/jv.mo ADDED
Binary file
shared/languages/landing-pages/ka.mo ADDED
Binary file
shared/languages/landing-pages/ko_KR.mo ADDED
Binary file
shared/languages/landing-pages/ku.mo ADDED
Binary file
shared/languages/landing-pages/ky.mo ADDED
Binary file
shared/languages/landing-pages/landing-pages.po CHANGED
@@ -2434,4 +2434,4 @@ msgstr ""
2434
 
2435
  #: shared/inbound-shortcodes/shortcodes/video.php:19
2436
  msgid "Insert Video Shortcode"
2437
- msgstr ""
2434
 
2435
  #: shared/inbound-shortcodes/shortcodes/video.php:19
2436
  msgid "Insert Video Shortcode"
2437
+ msgstr ""
shared/languages/landing-pages/lv.mo ADDED
Binary file
shared/languages/landing-pages/lv_LV.mo ADDED
Binary file
shared/languages/landing-pages/mg.mo ADDED
Binary file
shared/languages/landing-pages/mk_MK.mo ADDED
Binary file
shared/languages/landing-pages/mn.mo ADDED
Binary file
shared/languages/landing-pages/my_MM.mo ADDED
Binary file
shared/languages/landing-pages/nb_NO.mo ADDED
Binary file
shared/languages/landing-pages/ne_NP.mo ADDED
Binary file
shared/languages/landing-pages/nl_NL.mo ADDED
Binary file
shared/languages/landing-pages/nn_NO.mo ADDED
Binary file
shared/languages/landing-pages/oc.mo ADDED
Binary file
shared/languages/landing-pages/pap.mo ADDED
Binary file
shared/languages/landing-pages/pl_PL.mo ADDED
Binary file
shared/languages/landing-pages/pt_BR.mo ADDED
Binary file
shared/languages/landing-pages/pt_PT.mo ADDED
Binary file
shared/languages/landing-pages/ro_RO.mo ADDED
Binary file
shared/languages/landing-pages/ru_RU.mo ADDED
Binary file
shared/languages/landing-pages/sah.mo ADDED
Binary file
shared/languages/landing-pages/sk_SK.mo ADDED
Binary file
shared/languages/landing-pages/sq.mo ADDED
Binary file
shared/languages/landing-pages/sr_RS.mo ADDED
Binary file
shared/languages/landing-pages/su.mo ADDED
Binary file
shared/languages/landing-pages/sv_SE.mo ADDED
Binary file
shared/languages/landing-pages/sw.mo ADDED
Binary file
shared/languages/landing-pages/te.mo ADDED
Binary file
shared/languages/landing-pages/th.mo ADDED
Binary file
shared/languages/landing-pages/tk_TM.mo ADDED
Binary file
shared/languages/landing-pages/tr_TR.mo ADDED
Binary file
shared/languages/landing-pages/ug.mo ADDED
Binary file
shared/languages/landing-pages/uk.mo ADDED
Binary file
shared/languages/landing-pages/uz.mo ADDED
Binary file
shared/languages/landing-pages/vi.mo ADDED
Binary file
shared/languages/landing-pages/zh_CN.mo ADDED
Binary file
shared/languages/landing-pages/zh_TW.mo ADDED
Binary file
shared/metaboxes/inbound-metaboxes.css CHANGED
@@ -6,23 +6,11 @@ padding-left: 0px;
6
  .inbound-meta-box-label, .inbound-meta-box-option {
7
  display: inline-block;
8
  }
9
- .upload_image_button {
10
- font-size: 25px;
11
- }
12
  .inbound-meta-box-label {
13
- width: 200px;
14
- padding-right: 20px;
15
- }
16
- .inbound-textarea-option {
17
- width: 73%;
18
- }
19
- .inbound-wysiwyg-option {
20
- width: 100%;
21
-
22
  }
23
-
24
- .inbound-wysiwyg {
25
- margin-bottom: 10px;
26
  }
27
  .inbound-meta-box-option {
28
  position: relative;
@@ -33,9 +21,8 @@ position: absolute;
33
  .inbound-datepicker .button-primary.new-save-wp-cta {
34
  display: none;
35
  }
36
-
37
  .inbound-description-block-option {
38
- max-width: 87%;
39
  }
40
  .inbound-media-row .button-primary.new-save-wp-cta {
41
  position: absolute;
@@ -67,11 +54,7 @@ display: inline-block;
67
  }
68
  .inbound-wysiwyg, .inbound-media, .inbound-datepicker, .inbound-textarea {
69
  vertical-align: top;
70
-
71
- }
72
- .inbound-wysiwyg label {
73
- margin-bottom: 5px;
74
- }
75
  .inbound-textarea-option .wp-cta-success-message {
76
  position: absolute;
77
  margin-top: 0px;
6
  .inbound-meta-box-label, .inbound-meta-box-option {
7
  display: inline-block;
8
  }
 
 
 
9
  .inbound-meta-box-label {
10
+ width: 18%;
 
 
 
 
 
 
 
 
11
  }
12
+ .inbound-wysiwyg-option, .inbound-textarea-option {
13
+ width: 75%;
 
14
  }
15
  .inbound-meta-box-option {
16
  position: relative;
21
  .inbound-datepicker .button-primary.new-save-wp-cta {
22
  display: none;
23
  }
 
24
  .inbound-description-block-option {
25
+ max-width: 55%;
26
  }
27
  .inbound-media-row .button-primary.new-save-wp-cta {
28
  position: absolute;
54
  }
55
  .inbound-wysiwyg, .inbound-media, .inbound-datepicker, .inbound-textarea {
56
  vertical-align: top;
57
+ }
 
 
 
 
58
  .inbound-textarea-option .wp-cta-success-message {
59
  position: absolute;
60
  margin-top: 0px;
shared/metaboxes/template.metaboxes.php ADDED
@@ -0,0 +1,181 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // replacing wp_cta_show_metabox
5
+ if (!function_exists('inbound_template_show_metabox')) {
6
+ function inbound_template_show_metabox($post,$key)
7
+ {
8
+ $extension_data = wp_cta_get_extension_data();
9
+ $key = $key['args']['key'];
10
+
11
+ $wp_cta_custom_fields = $extension_data[$key]['settings'];
12
+
13
+ $wp_cta_custom_fields = apply_filters('wp_cta_show_metabox',$wp_cta_custom_fields, $key);
14
+
15
+ inbound_template_metabox_render($key,$wp_cta_custom_fields,$post);
16
+ }
17
+ }
18
+
19
+ if (!function_exists('inbound_template_metabox_render')) {
20
+ // replacing wp_cta_render_metabox
21
+ function inbound_template_metabox_render($key,$custom_fields,$post)
22
+ {
23
+ $prefix = 'wp_cta';
24
+ $prefix_dash = 'wp-cta';
25
+ //print_r($custom_fields);exit;
26
+ // Use nonce for verification
27
+ echo "<input type='hidden' name='{$prefix}_{$key}_custom_fields_nonce' value='".wp_create_nonce(''.$prefix_dash.'-nonce')."' />";
28
+
29
+ // Begin the field table and loop
30
+ echo '<div class="form-table" id="inbound-meta">';
31
+
32
+ //print_r($custom_fields);exit;
33
+ $current_var = wp_cta_ab_testing_get_current_variation_id();
34
+ foreach ($custom_fields as $field) {
35
+ $field_id = $key . "-" .$field['id'];
36
+ $field_name = $field['id'];
37
+ $label_class = $field['id'] . "-label";
38
+ $type_class = " inbound-" . $field['type'];
39
+ $type_class_row = " inbound-" . $field['type'] . "-row";
40
+ $type_class_option = " inbound-" . $field['type'] . "-option";
41
+ $option_class = (isset($field['class'])) ? $field['class'] : '';
42
+ // get value of this field if it exists for this post
43
+ $meta = get_post_meta($post->ID, $field_id, true);
44
+ $global_meta = get_post_meta($post->ID, $field_name, true);
45
+ if(empty($global_meta)) {
46
+ $global_meta = $field['default'];
47
+ }
48
+
49
+ //print_r($field);
50
+ if ((!isset($meta)&&isset($field['default'])&&!is_numeric($meta))||isset($meta)&&empty($meta)&&isset($field['default'])&&!is_numeric($meta))
51
+ {
52
+ //echo $field['id'].":".$meta;
53
+ //echo "<br>";
54
+ $meta = $field['default'];
55
+ }
56
+
57
+ // Remove prefixes on global => true template options
58
+ if (isset($field['global']) && $field['global'] === true) {
59
+ $field_id = $field_name;
60
+ $meta = get_post_meta($post->ID, $field_name, true);
61
+ }
62
+
63
+ // begin a table row with
64
+ echo '<div class="'.$field['id'].$type_class_row.' div-'.$option_class.' wp-call-to-action-option-row inbound-meta-box-row">';
65
+ if ($field['type'] != "description-block" && $field['type'] != "custom-css" ) {
66
+ echo '<div id="inbound-'.$field_id.'" data-actual="'.$field_id.'" class="inbound-meta-box-label wp-call-to-action-table-header '.$label_class.$type_class.'"><label for="'.$field_id.'">'.$field['label'].'</label></div>';
67
+ }
68
+
69
+ echo '<div class="wp-call-to-action-option-td inbound-meta-box-option '.$type_class_option.'" data-field-type="'.$field['type'].'">';
70
+ switch($field['type']) {
71
+ // default content for the_content
72
+ case 'default-content':
73
+ echo '<span id="overwrite-content" class="button-secondary">Insert Default Content into main Content area</span><div style="display:none;"><textarea name="'.$field_id.'" id="'.$field_id.'" class="default-content" cols="106" rows="6" style="width: 75%; display:hidden;">'.$meta.'</textarea></div>';
74
+ break;
75
+ case 'description-block':
76
+ echo '<div id="'.$field_id.'" class="description-block">'.$field['description'].'</div>';
77
+ break;
78
+ case 'custom-css':
79
+ echo '<style type="text/css">'.$field['default'].'</style>';
80
+ break;
81
+ // text
82
+ case 'colorpicker':
83
+ if (!$meta)
84
+ {
85
+ $meta = $field['default'];
86
+ }
87
+ $var_id = (isset($_GET['new_meta_key'])) ? "-" . $_GET['new_meta_key'] : '';
88
+ echo '<input type="text" class="jpicker" style="background-color:#'.$meta.'" name="'.$field_id.'" id="'.$field_id.'" value="'.$meta.'" size="5" /><span class="button-primary new-save-wp-cta" data-field-type="text" id="'.$field_id.$var_id.'" style="margin-left:10px; display:none;">Update</span>
89
+ <div class="wp_cta_tooltip tool_color" title="'.$field['description'].'"></div>';
90
+ break;
91
+ case 'datepicker':
92
+ echo '<div class="jquery-date-picker inbound-datepicker" id="date-picking" data-field-type="text">
93
+ <span class="datepair" data-language="javascript">
94
+ Date: <input type="text" id="date-picker-'.$key.'" class="date start" /></span>
95
+ Time: <input id="time-picker-'.$key.'" type="text" class="time time-picker" />
96
+ <input type="hidden" name="'.$field_id.'" id="'.$field_id.'" value="'.$meta.'" class="new-date" value="" >
97
+ <p class="description">'.$field['description'].'</p>
98
+ </div>';
99
+ break;
100
+ case 'text':
101
+ echo '<input type="text" name="'.$field_id.'" id="'.$field_id.'" value="'.$meta.'" size="30" />
102
+ <div class="wp_cta_tooltip" title="'.$field['description'].'"></div>';
103
+ break;
104
+ case 'number':
105
+
106
+ echo '<input type="number" class="'.$option_class.'" name="'.$field_id.'" id="'.$field_id.'" value="'.$meta.'" size="30" />
107
+ <div class="wp_cta_tooltip" title="'.$field['description'].'"></div>';
108
+
109
+ break;
110
+ // textarea
111
+ case 'textarea':
112
+ echo '<textarea name="'.$field_id.'" id="'.$field_id.'" cols="106" rows="6" style="width: 75%;">'.$meta.'</textarea>
113
+ <div class="wp_cta_tooltip tool_textarea" title="'.$field['description'].'"></div>';
114
+ break;
115
+ // wysiwyg
116
+ case 'wysiwyg':
117
+ echo "<div class='iframe-options iframe-options-".$field_id."' id='".$field['id']."'>";
118
+ wp_editor( $meta, $field_id, $settings = array( 'editor_class' => $field_name ) );
119
+ echo '<p class="description">'.$field['description'].'</p></div>';
120
+ break;
121
+ // media
122
+ case 'media':
123
+ //echo 1; exit;
124
+ echo '<label for="upload_image" data-field-type="text">';
125
+ echo '<input name="'.$field_id.'" id="'.$field_id.'" type="text" size="36" name="upload_image" value="'.$meta.'" />';
126
+ echo '<input class="upload_image_button" id="uploader_'.$field_id.'" type="button" value="Upload Image" />';
127
+ echo '<p class="description">'.$field['description'].'</p>';
128
+ break;
129
+ // checkbox
130
+ case 'checkbox':
131
+ $i = 1;
132
+ echo "<table class='wp_cta_check_box_table'>";
133
+ if (!isset($meta)){$meta=array();}
134
+ elseif (!is_array($meta)){
135
+ $meta = array($meta);
136
+ }
137
+ foreach ($field['options'] as $value=>$label) {
138
+ if ($i==5||$i==1)
139
+ {
140
+ echo "<tr>";
141
+ $i=1;
142
+ }
143
+ echo '<td data-field-type="checkbox"><input type="checkbox" name="'.$field_id.'[]" id="'.$field_id.'" value="'.$value.'" ',in_array($value,$meta) ? ' checked="checked"' : '','/>';
144
+ echo '<label for="'.$value.'">&nbsp;&nbsp;'.$label.'</label></td>';
145
+ if ($i==4)
146
+ {
147
+ echo "</tr>";
148
+ }
149
+ $i++;
150
+ }
151
+ echo "</table>";
152
+ echo '<div class="wp_cta_tooltip tool_checkbox" title="'.$field['description'].'"></div>';
153
+ break;
154
+ // radio
155
+ case 'radio':
156
+ foreach ($field['options'] as $value=>$label) {
157
+ //echo $meta.":".$field_id;
158
+ //echo "<br>";
159
+ echo '<input type="radio" name="'.$field_id.'" id="'.$field_id.'" value="'.$value.'" ',$meta==$value ? ' checked="checked"' : '','/>';
160
+ echo '<label for="'.$value.'">&nbsp;&nbsp;'.$label.'</label> &nbsp;&nbsp;&nbsp;&nbsp;';
161
+ }
162
+ echo '<div class="wp_cta_tooltip" title="'.$field['description'].'"></div>';
163
+ break;
164
+ // select
165
+ case 'dropdown':
166
+ echo '<select name="'.$field_id.'" id="'.$field_id.'" class="'.$field['id'].'">';
167
+ foreach ($field['options'] as $value=>$label) {
168
+ echo '<option', $meta == $value ? ' selected="selected"' : '', ' value="'.$value.'">'.$label.'</option>';
169
+ }
170
+ echo '</select><div class="wp_cta_tooltip" title="'.$field['description'].'"></div>';
171
+ break;
172
+
173
+
174
+
175
+ } //end switch
176
+ echo '</div></div>';
177
+ } // end foreach
178
+ echo '</div>'; // end table
179
+ //exit;
180
+ }
181
+ }
shared/tracking/js/inprogress.store.lead.ajax.js CHANGED
@@ -258,6 +258,7 @@ console.log(matched_form_items);
258
  var post_values = {};
259
  // unset values with exclude array
260
  form_inputs.each(function() {
 
261
  post_values[this.name] = jQuery(this).val();
262
  });
263
  var post_values_json = JSON.stringify(post_values);
@@ -627,4 +628,4 @@ jQuery(".wpl-track-me").find('input[type=text],input[type=email]').each(function
627
  });
628
  }, 400);
629
  */
630
- // end function to parse form fields
258
  var post_values = {};
259
  // unset values with exclude array
260
  form_inputs.each(function() {
261
+
262
  post_values[this.name] = jQuery(this).val();
263
  });
264
  var post_values_json = JSON.stringify(post_values);
628
  });
629
  }, 400);
630
  */
631
+ // end function to parse form fields
shared/tracking/js/store.lead.ajax.js CHANGED
@@ -16,13 +16,21 @@ jQuery(document).ready(function($) {
16
  form_id = jQuery(this).attr('id');
17
  form_class = jQuery(this).attr('class');
18
 
 
 
 
 
 
 
 
 
 
 
 
19
  jQuery('button, input[type="button"]').css('cursor', 'wait');
20
  jQuery('input').css('cursor', 'wait');
21
  jQuery('body').css('cursor', 'wait');
22
 
23
-
24
- e.preventDefault(); // halt normal form
25
-
26
  var email = "";
27
  var firstname = "";
28
  var lastname = "";
@@ -137,7 +145,7 @@ jQuery(document).ready(function($) {
137
  lastname = parts[1];
138
  }
139
 
140
- var form_inputs = jQuery('.wpl-track-me').find('input[type=text],textarea,select');
141
  var post_values = {};
142
  // unset values with exclude array
143
  form_inputs.each(function() {
@@ -512,4 +520,4 @@ jQuery(".wpl-track-me").find('input[type=text],input[type=email]').each(function
512
  });
513
  }, 400);
514
  */
515
- // end function to parse form fields
16
  form_id = jQuery(this).attr('id');
17
  form_class = jQuery(this).attr('class');
18
 
19
+ e.preventDefault(); // halt normal form
20
+
21
+ // Email Validation
22
+ var inbound_form_exists = $("#inbound-form-wrapper").length;
23
+ var email_validation = $(".inbound-email.invalid-email").length;
24
+ if (email_validation > 0 && inbound_form_exists > 0) {
25
+ jQuery(".inbound-email.invalid-email").focus();
26
+ alert("Please enter a valid email address");
27
+ return false;
28
+ }
29
+
30
  jQuery('button, input[type="button"]').css('cursor', 'wait');
31
  jQuery('input').css('cursor', 'wait');
32
  jQuery('body').css('cursor', 'wait');
33
 
 
 
 
34
  var email = "";
35
  var firstname = "";
36
  var lastname = "";
145
  lastname = parts[1];
146
  }
147
 
148
+ var form_inputs = jQuery('.wpl-track-me').find('input[type=text],input[type=hidden],textarea,select');
149
  var post_values = {};
150
  // unset values with exclude array
151
  form_inputs.each(function() {
520
  });
521
  }, 400);
522
  */
523
+ // end function to parse form fields
shared/tracking/store.lead.php CHANGED
@@ -7,250 +7,270 @@
7
 
8
  if (!function_exists('inbound_store_lead')) {
9
 
10
- add_action('wp_ajax_inbound_store_lead', 'inbound_store_lead');
11
- add_action('wp_ajax_nopriv_inbound_store_lead', 'inbound_store_lead');
12
 
13
- function inbound_store_lead()
14
- {
15
- global $user_ID, $wpdb;
16
- // header('HTTP/1.0 404 Not found'); exit; // simulate ajax fail
17
 
18
- // Grab form values
19
- $time = current_time( 'timestamp', 0 ); // Current wordpress time from settings
20
- $data['user_ID'] = $user_ID;
21
- $data['wordpress_date_time'] = date("Y-m-d G:i:s T", $time);
22
- $data['email'] = $_POST['emailTo'];
23
- $data['element_type'] = (isset($_POST['element_type'])) ? $_POST['element_type'] : false;
24
- $data['wp_lead_uid'] = (isset($_POST['wp_lead_uid'])) ? $_POST['wp_lead_uid'] : false;
25
- $data['raw_post_values_json'] = (isset($_POST['raw_post_values_json'])) ? $_POST['raw_post_values_json'] : false;
26
- $data['first_name'] = (isset($_POST['first_name'])) ? $_POST['first_name'] : false;
27
- $data['last_name'] = (isset($_POST['last_name'])) ? $_POST['last_name'] : false;
28
- $data['company_name'] = (isset($_POST['company_name'] )) ? $_POST['company_name'] : false;
29
- $data['phone'] = (isset($_POST['phone'])) ? $_POST['phone'] : false;
30
- $data['address'] = (isset($_POST['address'])) ? $_POST['address'] : false;
31
- $data['ip_address'] = (isset($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : false;
32
- $data['lp_id'] = (isset($_POST['lp_id'])) ? $_POST['lp_id'] : '0';
33
- $data['post_type'] = (isset($_POST['post_type'])) ? $_POST['post_type'] : 'na';
34
- $data['lp_variation'] = (isset($_POST['lp_variation'])) ? $_POST['lp_variation'] : 'default';
35
- $data['page_views'] = (isset($_POST['page_views'])) ? $_POST['page_views'] : false;
36
- $data['page_view_count'] = (isset($_POST['page_view_count'] )) ? $_POST['page_view_count'] : false;
 
 
 
37
 
38
- do_action('inbound_store_lead_pre' , $data); // Global lead storage action hook
 
 
 
 
 
 
39
 
40
- // check for set email
41
- if ( ( isset( $_POST['emailTo']) && !empty( $_POST['emailTo']) && strstr($_POST['emailTo'],'@') )) {
42
- $query = $wpdb->prepare(
43
- 'SELECT ID FROM ' . $wpdb->posts . '
44
- WHERE post_title = %s
45
- AND post_type = \'wp-lead\'',
46
- $_POST['emailTo']
47
- );
48
- $wpdb->query( $query );
49
 
50
- // Add lookup fallbacks
51
- if ( $wpdb->num_rows ) {
52
- /* Update Existing Lead */
53
- $data['lead_id'] = $wpdb->get_var( $query );
54
- $meta = get_post_meta( $data['lead_id'], 'times', TRUE ); // replace times
55
- $meta++;
56
- update_post_meta( $data['lead_id'], 'times', $meta ); // replace times
57
 
58
- if (!empty($data['user_ID']))
59
- update_post_meta( $data['lead_id'], 'wpleads_wordpress_user_id', $data['user_ID'] );
60
- if (!empty($data['first_name']))
61
- update_post_meta( $data['lead_id'], 'wpleads_first_name', $data['first_name'] );
62
- if (!empty($data['last_name']))
63
- update_post_meta( $data['lead_id'], 'wpleads_last_name', $data['last_name'] );
64
- if (!empty($data['phone']))
65
- update_post_meta( $data['lead_id'], 'wpleads_work_phone', $data['phone'] );
66
- if (!empty($data['company_name']))
67
- update_post_meta( $data['lead_id'], 'wpleads_company_name', $data['company'] );
68
- if (!empty($data['address']))
69
- update_post_meta( $data['lead_id'], 'wpleads_address_line_1', $data['address'] );
70
- if (!empty($data['wp_lead_uid']))
71
- update_post_meta( $data['lead_id'], 'wp_leads_uid', $data['wp_lead_uid'] );
72
 
73
- update_post_meta( $data['lead_id'], 'wpleads_landing_page_'.$data['lp_id'], 1 );
74
- do_action('wpleads_after_conversion_lead_update',$data['lead_id']);
75
 
76
- } else {
77
- /* Create New Lead */
78
- $post = array(
79
- 'post_title' => $data['email'],
80
- //'post_content' => $json,
81
- 'post_status' => 'publish',
82
- 'post_type' => 'wp-lead',
83
- 'post_author' => 1
84
- );
85
 
86
- //$post = add_filter('lp_leads_post_vars',$post);
87
- $data['lead_id'] = wp_insert_post($post);
88
- update_post_meta( $data['lead_id'], 'times', 1 );
89
- update_post_meta( $data['lead_id'], 'wpleads_wordpress_user_id', $user_ID );
90
- update_post_meta( $data['lead_id'], 'wpleads_email_address', $data['email'] );
91
 
92
- if (!empty($data['first_name']))
93
- update_post_meta( $data['lead_id'], 'wpleads_first_name', $data['first_name'] );
94
- if (!empty($data['last_name']))
95
- update_post_meta( $data['lead_id'], 'wpleads_last_name', $data['last_name'] );
96
- if (!empty($data['phone']))
97
- update_post_meta( $data['lead_id'], 'wpleads_work_phone', $data['phone'] );
98
- if (!empty($data['company_name']))
99
- update_post_meta( $data['lead_id'], 'wpleads_company_name', $data['company_name'] );
100
- if (!empty($data['address']))
101
- update_post_meta( $data['lead_id'], 'wpleads_address_line_1', $data['address'] );
102
 
103
- update_post_meta( $data['lead_id'], 'wp_leads_uid', $data['wp_lead_uid'] );
104
- update_post_meta( $data['lead_id'], 'page_views', $data['page_views'] ); /* Store Page Views Object */
105
- update_post_meta( $data['lead_id'], 'wpleads_page_view_count', $data['page_view_count']);
106
- update_post_meta( $data['lead_id'], 'wpleads_landing_page_'.$data['lp_id'], 1 );
107
- do_action('wpleads_after_conversion_lead_insert',$data['lead_id']);
108
 
109
- }
110
 
111
- /*
112
- * Run for all leads
113
- */
114
 
115
- /* Store IP addresss & Store GEO Data */
116
- if ($data['ip_address']){
117
- update_post_meta( $data['lead_id'], 'wpleads_ip_address', $data['ip_address'] );
118
- $geo_array = unserialize(lp_remote_connect('http://www.geoplugin.net/php.gp?ip='.$data['ip_address']));
119
- (isset($geo_array['geoplugin_areaCode'])) ? update_post_meta( $data['lead_id'], 'wpleads_areaCode', $geo_array['geoplugin_areaCode'] ) : null;
120
- (isset($geo_array['geoplugin_city'])) ? update_post_meta( $data['lead_id'], 'wpleads_city', $geo_array['geoplugin_city'] ) : null;
121
- (isset($geo_array['geoplugin_regionName'])) ? update_post_meta( $data['lead_id'], 'wpleads_region_name', $geo_array['geoplugin_regionName'] ) : null;
122
- (isset($geo_array['geoplugin_regionCode'])) ? update_post_meta( $data['lead_id'], 'wpleads_region_code', $geo_array['geoplugin_regionCode'] ) : null;
123
- (isset($geo_array['geoplugin_countryName'])) ? update_post_meta( $data['lead_id'], 'wpleads_country_name', $geo_array['geoplugin_countryName'] ) : null;
124
- (isset($geo_array['geoplugin_countryCode'])) ? update_post_meta( $data['lead_id'], 'wpleads_country_code', $geo_array['geoplugin_countryCode'] ) : null;
125
- (isset($geo_array['geoplugin_latitude'])) ? update_post_meta( $data['lead_id'], 'wpleads_latitude', $geo_array['geoplugin_latitude'] ) : null;
126
- (isset($geo_array['geoplugin_longitude'])) ? update_post_meta( $data['lead_id'], 'wpleads_longitude', $geo_array['geoplugin_longitude'] ) : null;
127
- (isset($geo_array['geoplugin_currencyCode'])) ? update_post_meta( $data['lead_id'], 'wpleads_currency_code', $geo_array['geoplugin_currencyCode'] ) : null;
128
- (isset($geo_array['geoplugin_currencySymbol_UTF8'])) ? update_post_meta( $data['lead_id'], 'wpleads_currency_symbol', $geo_array['geoplugin_currencySymbol_UTF8'] ) : null;
129
- }
130
 
131
- /* Store Conversion Data to Lead */
132
- $conversion_data = get_post_meta( $data['lead_id'], 'wpleads_conversion_data', TRUE );
133
- $conversion_data = json_decode($conversion_data,true);
134
- $variation = ($data['lp_variation'] != 'default') ? $data['lp_variation'] : '0';
135
- if (is_array($conversion_data)){
136
- $c_count = count($conversion_data) + 1;
137
- $conversion_data[$c_count]['id'] = $data['lp_id'];
138
- $conversion_data[$c_count]['variation'] = $variation;
139
- $conversion_data[$c_count]['datetime'] = $data['wordpress_date_time'];
140
- } else {
141
- $c_count = 1;
142
- $conversion_data[$c_count]['id'] = $data['lp_id'];
143
- $conversion_data[$c_count]['variation'] = $variation;
144
- $conversion_data[$c_count]['datetime'] = $data['wordpress_date_time'];
145
- $conversion_data[$c_count]['first_time'] = 1;
146
- }
147
- $data['conversion_data'] = json_encode($conversion_data);
148
- update_post_meta($data['lead_id'],'wpleads_conversion_count', $c_count); // Store conversions count
149
- update_post_meta($data['lead_id'], 'wpleads_conversion_data', $data['conversion_data']); // Store conversion object
 
150
 
151
- /* Store Conversion Data to LANDING PAGE/CTA DATA */
152
- if ($data['post_type'] == 'landing-page' || $data['post_type'] == 'wp-call-to-action'){
153
- $page_conversion_data = get_post_meta( $data['lp_id'], 'inbound_conversion_data', TRUE );
154
- $page_conversion_data = json_decode($page_conversion_data,true);
155
- $version = ($data['lp_variation'] != 'default') ? $data['lp_variation'] : '0';
156
- if (is_array($page_conversion_data)){
157
- $convert_count = count($page_conversion_data) + 1;
158
- $page_conversion_data[$convert_count]['lead_id'] = $data['lead_id'];
159
- $page_conversion_data[$convert_count]['variation'] = $version;
160
- $page_conversion_data[$convert_count]['datetime'] = $data['wordpress_date_time'];
161
- } else {
162
- $convert_count = 1;
163
- $page_conversion_data[$convert_count]['lead_id'] = $data['lead_id'];
164
- $page_conversion_data[$convert_count]['variation'] = $version;
165
- $page_conversion_data[$convert_count]['datetime'] = $data['wordpress_date_time'];
166
- }
167
- $page_conversion_data = json_encode($page_conversion_data);
168
- update_post_meta($data['lp_id'], 'inbound_conversion_data', $page_conversion_data);
169
- }
170
- // END LANDING PAGE/CTA DATA
171
 
172
- /* Store page views for page tracking off */
173
- $page_tracking_status = get_option('wpl-main-page-view-tracking', 1);
174
- if($data['page_views'] && $page_tracking_status == 0){
175
 
176
- $page_view_data = get_post_meta( $lead_id, 'page_views', TRUE );
177
- $page_view_data = json_decode($page_view_data,true);
 
 
 
 
178
 
179
- // If page_view meta exists do this
180
- if (is_array($page_view_data)) {
181
- $new_page_views = inbound_json_array_merge( $page_view_data, $data['page_views']);
182
- $page_views = json_encode($new_page_views);
183
 
184
- } else {
185
- // Create page_view meta if it doesn't exist
186
- $page_views = $data['page_views'];
187
- $page_views = json_encode($page_views);
188
- }
189
- // View count
190
- $view_count = get_post_meta( $data['lead_id'], 'wpleads_page_view_count', TRUE );
191
- if ($view_count){
192
- $page_view_count = $data['page_view_count'] + $view_count;
193
- } else {
194
- $page_view_count = $data['page_view_count'];
195
- }
196
- // update meta
197
- if ($data['page_view_count']){
198
- update_post_meta($data['lead_id'],'wpleads_page_view_count', $page_view_count);
199
- }
200
- update_post_meta($data['lead_id'], 'page_views', $page_views );
201
- }
202
 
203
 
204
- /* Raw Form Values Store */
205
- if ($data['raw_post_values_json']) {
206
- $raw_post_data = get_post_meta($data['lead_id'],'wpleads_raw_post_data', true);
207
- $a1 = json_decode( $raw_post_data, true );
208
- $a2 = json_decode( stripslashes($data['raw_post_values_json']), true );
209
- $exclude_array = array('card_number','card_cvc','card_exp_month','card_exp_year'); // add filter
210
- $lead_mapping_fields = get_transient( 'wp-lead-fields' );
 
211
 
212
- foreach ($a2 as $key=>$value){
213
- if (array_key_exists( $key , $exclude_array )) {
214
- unset($a2[$key]);
215
- continue;
216
- }
217
- if (array_key_exists($key, $lead_mapping_fields)) {
218
- update_post_meta( $data['lead_id'], $key, $value );
219
- }
220
- if (stristr($key,'company')) {
221
- update_post_meta( $data['lead_id'], 'wpleads_company_name', $value );
222
- } else if (stristr($key,'website')) {
223
- $websites = get_post_meta( $data['lead_id'], 'wpleads_websites', $value );
224
- if(is_array($websites)) {
225
- $array_websites = explode(';',$websites);
 
 
 
 
 
 
 
 
 
 
 
 
226
  }
227
- $array_websites[] = $value;
228
- $websites = implode(';',$array_websites);
229
- update_post_meta( $data['lead_id'], 'wpleads_websites', $websites );
230
  }
231
- }
232
- // Merge form fields if exist
233
- if (is_array($a1)) {
234
- $new_raw_post_data = array_merge_recursive( $a1, $a2 );
235
- } else {
236
- $new_raw_post_data = $a2;
237
- }
238
- $new_raw_post_data = json_encode( $new_raw_post_data );
239
- update_post_meta( $data['lead_id'],'wpleads_raw_post_data', $new_raw_post_data );
240
- }
241
 
242
- setcookie('wp_lead_id' , $data['lead_id'], time() + (20 * 365 * 24 * 60 * 60),'/');
243
 
244
- do_action('inbound_store_lead_post', $data );
245
- do_action('wp_cta_store_lead_post', $data );
246
- do_action('wpl_store_lead_post', $data );
247
- do_action('lp_store_lead_post', $data );
248
 
249
- echo $data['lead_id'];
250
- die();
 
 
 
 
 
 
 
 
251
  }
252
  }
253
- }
254
  if (!function_exists('inbound_json_array_merge')) {
255
  function inbound_json_array_merge( $arr1, $arr2 ) {
256
  $keys = array_keys( $arr2 );
@@ -266,4 +286,4 @@ if (!function_exists('inbound_json_array_merge')) {
266
  }
267
  return $arr1;
268
  }
269
- }
7
 
8
  if (!function_exists('inbound_store_lead')) {
9
 
10
+ add_action('wp_ajax_inbound_store_lead', 'inbound_store_lead');
11
+ add_action('wp_ajax_nopriv_inbound_store_lead', 'inbound_store_lead');
12
 
13
+ function inbound_store_lead( $args = array() )
14
+ {
15
+ global $user_ID, $wpdb;
16
+ // header('HTTP/1.0 404 Not found'); exit; // simulate ajax fail
17
 
18
+ // Grab form values
19
+ $time = current_time( 'timestamp', 0 ); // Current wordpress time from settings
20
+ $lead_data['user_ID'] = $user_ID;
21
+ $lead_data['wordpress_date_time'] = date("Y-m-d G:i:s T", $time);
22
+ $lead_data['wpleads_email_address'] = (isset($_POST['emailTo'])) ? $_POST['emailTo'] : false;
23
+ $lead_data['email'] = (isset($_POST['emailTo'])) ? $_POST['emailTo'] : false;
24
+ $lead_data['element_type'] = (isset($_POST['element_type'])) ? $_POST['element_type'] : false;
25
+ $lead_data['wp_lead_uid'] = (isset($_POST['wp_lead_uid'])) ? $_POST['wp_lead_uid'] : false;
26
+ $lead_data['raw_post_values_json'] = (isset($_POST['raw_post_values_json'])) ? $_POST['raw_post_values_json'] : false;
27
+ $lead_data['wpleads_first_name'] = (isset($_POST['first_name'])) ? $_POST['first_name'] : false;
28
+ $lead_data['first_name'] = (isset($_POST['first_name'])) ? $_POST['first_name'] : false;
29
+ $lead_data['wpleads_last_name'] = (isset($_POST['last_name'])) ? $_POST['last_name'] : false;
30
+ $lead_data['last_name'] = (isset($_POST['last_name'])) ? $_POST['last_name'] : false;
31
+ $lead_data['wpleads_company_name'] = (isset($_POST['company_name'] )) ? $_POST['company_name'] : false;
32
+ $lead_data['wpleads_mobile_phone'] = (isset($_POST['phone'])) ? $_POST['phone'] : false;
33
+ $lead_data['wpleads_address_line_1'] = (isset($_POST['address'])) ? $_POST['address'] : false;
34
+ $lead_data['ip_address'] = (isset($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : false;
35
+ $lead_data['lp_id'] = (isset($_POST['lp_id'])) ? $_POST['lp_id'] : '0';
36
+ $lead_data['post_type'] = (isset($_POST['post_type'])) ? $_POST['post_type'] : 'na';
37
+ $lead_data['lp_variation'] = (isset($_POST['lp_variation'])) ? $_POST['lp_variation'] : 'default';
38
+ $lead_data['page_views'] = (isset($_POST['page_views'])) ? $_POST['page_views'] : false;
39
+ $lead_data['page_view_count'] = (isset($_POST['page_view_count'] )) ? $_POST['page_view_count'] : false;
40
 
41
+ if ($args){
42
+ $lead_data = array_merge( $lead_data , $args );
43
+ }
44
+
45
+ $lead_data = apply_filters( 'inboundnow_store_lead_pre_filter_data' , $lead_data);
46
+
47
+ do_action('inbound_store_lead_pre' , $lead_data); // Global lead storage action hook
48
 
49
+ // check for set email
50
+ if ( ( isset( $lead_data['wpleads_email_address'] ) && !empty( $lead_data['wpleads_email_address'] ) && strstr( $lead_data['wpleads_email_address'] ,'@') )) {
51
+ $query = $wpdb->prepare(
52
+ 'SELECT ID FROM ' . $wpdb->posts . '
53
+ WHERE post_title = %s
54
+ AND post_type = \'wp-lead\'',
55
+ $lead_data['wpleads_email_address']
56
+ );
57
+ $wpdb->query( $query );
58
 
59
+ // Add lookup fallbacks
60
+ if ( $wpdb->num_rows ) {
61
+ /* Update Existing Lead */
62
+ $lead_data['lead_id'] = $wpdb->get_var( $query );
63
+ $meta = get_post_meta( $lead_data['lead_id'], 'times', TRUE ); // replace times
64
+ $meta++;
65
+ update_post_meta( $lead_data['lead_id'], 'times', $meta ); // replace times
66
 
67
+ if (!empty($lead_data['user_ID']))
68
+ update_post_meta( $lead_data['lead_id'], 'wpleads_wordpress_user_id', $lead_data['user_ID'] );
69
+ if (!empty($lead_data['wpleads_first_name']))
70
+ update_post_meta( $lead_data['lead_id'], 'wpleads_first_name', $lead_data['wpleads_first_name'] );
71
+ if (!empty($lead_data['wpleads_last_name']))
72
+ update_post_meta( $lead_data['lead_id'], 'wpleads_last_name', $lead_data['wpleads_last_name'] );
73
+ if (!empty($lead_data['wpleads_mobile_phone']))
74
+ update_post_meta( $lead_data['lead_id'], 'wpleads_work_phone', $lead_data['wpleads_mobile_phone'] );
75
+ if (!empty($lead_data['wpleads_company_name']))
76
+ update_post_meta( $lead_data['lead_id'], 'wpleads_company_name', $lead_data['company'] );
77
+ if (!empty($lead_data['wpleads_address_line_1']))
78
+ update_post_meta( $lead_data['lead_id'], 'wpleads_address_line_1', $lead_data['wpleads_address_line_1'] );
79
+ if (!empty($lead_data['wp_lead_uid']))
80
+ update_post_meta( $lead_data['lead_id'], 'wp_leads_uid', $lead_data['wp_lead_uid'] );
81
 
82
+ update_post_meta( $lead_data['lead_id'], 'wpleads_landing_page_'.$lead_data['lp_id'], 1 );
83
+ do_action('wpleads_after_conversion_lead_update',$lead_data['lead_id']);
84
 
85
+ } else {
86
+ /* Create New Lead */
87
+ $post = array(
88
+ 'post_title' => $lead_data['wpleads_email_address'],
89
+ //'post_content' => $json,
90
+ 'post_status' => 'publish',
91
+ 'post_type' => 'wp-lead',
92
+ 'post_author' => 1
93
+ );
94
 
95
+ //$post = add_filter('lp_leads_post_vars',$post);
96
+ $lead_data['lead_id'] = wp_insert_post($post);
97
+ update_post_meta( $lead_data['lead_id'], 'times', 1 );
98
+ update_post_meta( $lead_data['lead_id'], 'wpleads_wordpress_user_id', $user_ID );
99
+ update_post_meta( $lead_data['lead_id'], 'wpleads_email_address', $lead_data['wpleads_email_address'] );
100
 
101
+ if (!empty($lead_data['wpleads_first_name']))
102
+ update_post_meta( $lead_data['lead_id'], 'wpleads_first_name', $lead_data['wpleads_first_name'] );
103
+ if (!empty($lead_data['wpleads_last_name']))
104
+ update_post_meta( $lead_data['lead_id'], 'wpleads_last_name', $lead_data['wpleads_last_name'] );
105
+ if (!empty($lead_data['wpleads_mobile_phone']))
106
+ update_post_meta( $lead_data['lead_id'], 'wpleads_work_phone', $lead_data['wpleads_mobile_phone'] );
107
+ if (!empty($lead_data['wpleads_company_name']))
108
+ update_post_meta( $lead_data['lead_id'], 'wpleads_company_name', $lead_data['wpleads_company_name'] );
109
+ if (!empty($lead_data['wpleads_address_line_1']))
110
+ update_post_meta( $lead_data['lead_id'], 'wpleads_address_line_1', $lead_data['wpleads_address_line_1'] );
111
 
112
+ update_post_meta( $lead_data['lead_id'], 'wp_leads_uid', $lead_data['wp_lead_uid'] );
113
+ update_post_meta( $lead_data['lead_id'], 'page_views', $lead_data['page_views'] ); /* Store Page Views Object */
114
+ update_post_meta( $lead_data['lead_id'], 'wpleads_page_view_count', $lead_data['page_view_count']);
115
+ update_post_meta( $lead_data['lead_id'], 'wpleads_landing_page_'.$lead_data['lp_id'], 1 );
116
+ do_action('wpleads_after_conversion_lead_insert',$lead_data['lead_id']);
117
 
118
+ }
119
 
120
+ /*
121
+ * Run for all leads
122
+ */
123
 
124
+ /* Store IP addresss & Store GEO Data */
125
+ if ($lead_data['ip_address']){
126
+ update_post_meta( $lead_data['lead_id'], 'wpleads_ip_address', $lead_data['ip_address'] );
127
+ $geo_array = unserialize(lp_remote_connect('http://www.geoplugin.net/php.gp?ip='.$lead_data['ip_address']));
128
+ (isset($geo_array['geoplugin_areaCode'])) ? update_post_meta( $lead_data['lead_id'], 'wpleads_areaCode', $geo_array['geoplugin_areaCode'] ) : null;
129
+ (isset($geo_array['geoplugin_city'])) ? update_post_meta( $lead_data['lead_id'], 'wpleads_city', $geo_array['geoplugin_city'] ) : null;
130
+ (isset($geo_array['geoplugin_regionName'])) ? update_post_meta( $lead_data['lead_id'], 'wpleads_region_name', $geo_array['geoplugin_regionName'] ) : null;
131
+ (isset($geo_array['geoplugin_regionCode'])) ? update_post_meta( $lead_data['lead_id'], 'wpleads_region_code', $geo_array['geoplugin_regionCode'] ) : null;
132
+ (isset($geo_array['geoplugin_countryName'])) ? update_post_meta( $lead_data['lead_id'], 'wpleads_country_name', $geo_array['geoplugin_countryName'] ) : null;
133
+ (isset($geo_array['geoplugin_countryCode'])) ? update_post_meta( $lead_data['lead_id'], 'wpleads_country_code', $geo_array['geoplugin_countryCode'] ) : null;
134
+ (isset($geo_array['geoplugin_latitude'])) ? update_post_meta( $lead_data['lead_id'], 'wpleads_latitude', $geo_array['geoplugin_latitude'] ) : null;
135
+ (isset($geo_array['geoplugin_longitude'])) ? update_post_meta( $lead_data['lead_id'], 'wpleads_longitude', $geo_array['geoplugin_longitude'] ) : null;
136
+ (isset($geo_array['geoplugin_currencyCode'])) ? update_post_meta( $lead_data['lead_id'], 'wpleads_currency_code', $geo_array['geoplugin_currencyCode'] ) : null;
137
+ (isset($geo_array['geoplugin_currencySymbol_UTF8'])) ? update_post_meta( $lead_data['lead_id'], 'wpleads_currency_symbol', $geo_array['geoplugin_currencySymbol_UTF8'] ) : null;
138
+ }
139
 
140
+ /* Store Conversion Data to Lead */
141
+ $conversion_data = get_post_meta( $lead_data['lead_id'], 'wpleads_conversion_data', TRUE );
142
+ $conversion_data = json_decode($conversion_data,true);
143
+ $variation = ($lead_data['lp_variation'] != 'default') ? $lead_data['lp_variation'] : '0';
144
+ if (is_array($conversion_data)){
145
+ $c_count = count($conversion_data) + 1;
146
+ $conversion_data[$c_count]['id'] = $lead_data['lp_id'];
147
+ $conversion_data[$c_count]['variation'] = $variation;
148
+ $conversion_data[$c_count]['datetime'] = $lead_data['wordpress_date_time'];
149
+ } else {
150
+ $c_count = 1;
151
+ $conversion_data[$c_count]['id'] = $lead_data['lp_id'];
152
+ $conversion_data[$c_count]['variation'] = $variation;
153
+ $conversion_data[$c_count]['datetime'] = $lead_data['wordpress_date_time'];
154
+ $conversion_data[$c_count]['first_time'] = 1;
155
+ }
156
+
157
+ $lead_data['conversion_data'] = json_encode($conversion_data);
158
+ update_post_meta($lead_data['lead_id'],'wpleads_conversion_count', $c_count); // Store conversions count
159
+ update_post_meta($lead_data['lead_id'], 'wpleads_conversion_data', $lead_data['conversion_data']); // Store conversion object
160
 
161
+ /* Store Conversion Data to LANDING PAGE/CTA DATA */
162
+ if ($lead_data['post_type'] == 'landing-page' || $lead_data['post_type'] == 'wp-call-to-action')
163
+ {
164
+ $page_conversion_data = get_post_meta( $lead_data['lp_id'], 'inbound_conversion_data', TRUE );
165
+ $page_conversion_data = json_decode($page_conversion_data,true);
166
+ $version = ($lead_data['lp_variation'] != 'default') ? $lead_data['lp_variation'] : '0';
167
+ if (is_array($page_conversion_data)){
168
+ $convert_count = count($page_conversion_data) + 1;
169
+ $page_conversion_data[$convert_count]['lead_id'] = $lead_data['lead_id'];
170
+ $page_conversion_data[$convert_count]['variation'] = $version;
171
+ $page_conversion_data[$convert_count]['datetime'] = $lead_data['wordpress_date_time'];
172
+ } else {
173
+ $convert_count = 1;
174
+ $page_conversion_data[$convert_count]['lead_id'] = $lead_data['lead_id'];
175
+ $page_conversion_data[$convert_count]['variation'] = $version;
176
+ $page_conversion_data[$convert_count]['datetime'] = $lead_data['wordpress_date_time'];
177
+ }
178
+ $page_conversion_data = json_encode($page_conversion_data);
179
+ update_post_meta($lead_data['lp_id'], 'inbound_conversion_data', $page_conversion_data);
180
+ }
181
 
 
 
 
182
 
183
+ /* Store page views for page tracking off */
184
+ $page_tracking_status = get_option('wpl-main-page-view-tracking', 1);
185
+ if($lead_data['page_views'] && $page_tracking_status == 0)
186
+ {
187
+ $page_view_data = get_post_meta( $lead_id, 'page_views', TRUE );
188
+ $page_view_data = json_decode($page_view_data,true);
189
 
190
+ // If page_view meta exists do this
191
+ if (is_array($page_view_data)) {
192
+ $new_page_views = inbound_json_array_merge( $page_view_data, $lead_data['page_views']);
193
+ $page_views = json_encode($new_page_views);
194
 
195
+ } else {
196
+ // Create page_view meta if it doesn't exist
197
+ $page_views = $lead_data['page_views'];
198
+ $page_views = json_encode($page_views);
199
+ }
200
+ // View count
201
+ $view_count = get_post_meta( $lead_data['lead_id'], 'wpleads_page_view_count', TRUE );
202
+ if ($view_count){
203
+ $page_view_count = $lead_data['page_view_count'] + $view_count;
204
+ } else {
205
+ $page_view_count = $lead_data['page_view_count'];
206
+ }
207
+ // update meta
208
+ if ($lead_data['page_view_count']){
209
+ update_post_meta($lead_data['lead_id'],'wpleads_page_view_count', $page_view_count);
210
+ }
211
+ update_post_meta($lead_data['lead_id'], 'page_views', $page_views );
212
+ }
213
 
214
 
215
+ /* Raw Form Values Store */
216
+ if ($lead_data['raw_post_values_json'])
217
+ {
218
+ $raw_post_data = get_post_meta($lead_data['lead_id'],'wpleads_raw_post_data', true);
219
+ $a1 = json_decode( $raw_post_data, true );
220
+ $a2 = json_decode( stripslashes($lead_data['raw_post_values_json']), true );
221
+ $exclude_array = array('card_number','card_cvc','card_exp_month','card_exp_year'); // add filter
222
+ $lead_mapping_fields = get_transient( 'wp-lead-fields' );
223
 
224
+ foreach ($a2 as $key=>$value)
225
+ {
226
+ if (array_key_exists( $key , $exclude_array )) {
227
+ unset($a2[$key]);
228
+ continue;
229
+ }
230
+ if (array_key_exists($key, $lead_mapping_fields)) {
231
+ update_post_meta( $lead_data['lead_id'], $key, $value );
232
+ }
233
+ if (stristr($key,'company')) {
234
+ update_post_meta( $lead_data['lead_id'], 'wpleads_company_name', $value );
235
+ } else if (stristr($key,'website')) {
236
+ $websites = get_post_meta( $lead_data['lead_id'], 'wpleads_websites', $value );
237
+ if(is_array($websites)) {
238
+ $array_websites = explode(';',$websites);
239
+ }
240
+ $array_websites[] = $value;
241
+ $websites = implode(';',$array_websites);
242
+ update_post_meta( $lead_data['lead_id'], 'wpleads_websites', $websites );
243
+ }
244
+ }
245
+ // Merge form fields if exist
246
+ if (is_array($a1)) {
247
+ $new_raw_post_data = array_merge_recursive( $a1, $a2 );
248
+ } else {
249
+ $new_raw_post_data = $a2;
250
  }
251
+ $new_raw_post_data = json_encode( $new_raw_post_data );
252
+ update_post_meta( $lead_data['lead_id'],'wpleads_raw_post_data', $new_raw_post_data );
 
253
  }
 
 
 
 
 
 
 
 
 
 
254
 
255
+ setcookie('wp_lead_id' , $lead_data['lead_id'], time() + (20 * 365 * 24 * 60 * 60),'/');
256
 
257
+ do_action('inbound_store_lead_post', $lead_data );
258
+ do_action('wp_cta_store_lead_post', $lead_data );
259
+ do_action('wpl_store_lead_post', $lead_data );
260
+ do_action('lp_store_lead_post', $lead_data );
261
 
262
+ if (!$args)
263
+ {
264
+ echo $lead_data['lead_id'];
265
+ die();
266
+ }
267
+ else
268
+ {
269
+ return $lead_data['lead_id'];
270
+ }
271
+ }
272
  }
273
  }
 
274
  if (!function_exists('inbound_json_array_merge')) {
275
  function inbound_json_array_merge( $arr1, $arr2 ) {
276
  $keys = array_keys( $arr2 );
286
  }
287
  return $arr1;
288
  }
289
+ }
templates/rsvp-envelope/index.php CHANGED
@@ -94,7 +94,7 @@ if (have_posts()) : while (have_posts()) : the_post();
94
 
95
  <body>
96
  <div id="body-container">
97
- <?php echo dirname(__FILE__);?>
98
  <h1><?php lp_main_headline(); ?></h1>
99
  <div id="main-content">
100
  <?php echo $content; ?>
94
 
95
  <body>
96
  <div id="body-container">
97
+ <?php // echo dirname(__FILE__);?>
98
  <h1><?php lp_main_headline(); ?></h1>
99
  <div id="main-content">
100
  <?php echo $content; ?>