WP Mobile Menu - Version 2.8.2

Version Description

  • Fix! - Remove metabox upgrade
  • New! - New Settings Design/UX
  • Improvment! - Remove metabox upgrade
  • Improvment! - Initial process of removing TitanFramework
  • Improvment! - Update Freemius SDK
Download this release

Release Info

Developer takanakui
Plugin Icon 128x128 WP Mobile Menu
Version 2.8.2
Comparing to
See all releases

Code changes from version 2.8.1.8.1 to 2.8.2

Files changed (139) hide show
  1. freemius/assets/css/admin/common.css +1 -1
  2. freemius/assets/css/admin/connect.css +1 -1
  3. freemius/includes/class-freemius.php +79 -41
  4. freemius/includes/class-fs-logger.php +2 -2
  5. freemius/includes/entities/class-fs-site.php +17 -0
  6. freemius/includes/entities/class-fs-user.php +0 -17
  7. freemius/languages/freemius-cs_CZ.mo +0 -0
  8. freemius/languages/freemius-da_DK.mo +0 -0
  9. freemius/languages/freemius-en.mo +0 -0
  10. freemius/languages/freemius-es_ES.mo +0 -0
  11. freemius/languages/freemius-fr_FR.mo +0 -0
  12. freemius/languages/freemius-he_IL.mo +0 -0
  13. freemius/languages/freemius-hu_HU.mo +0 -0
  14. freemius/languages/freemius-it_IT.mo +0 -0
  15. freemius/languages/freemius-ja.mo +0 -0
  16. freemius/languages/freemius-nl_NL.mo +0 -0
  17. freemius/languages/freemius-ru_RU.mo +0 -0
  18. freemius/languages/freemius-ta.mo +0 -0
  19. freemius/languages/freemius-zh_CN.mo +0 -0
  20. freemius/languages/freemius.pot +345 -313
  21. freemius/start.php +3 -3
  22. freemius/templates/account.php +5 -3
  23. freemius/templates/connect.php +49 -37
  24. freemius/templates/forms/license-activation.php +3 -1
  25. includes/class-wp-mobile-menu-core.php +2 -2
  26. includes/class-wp-mobile-menu-options.php +269 -302
  27. includes/class-wp-mobile-menu-walker-nav-menu.php +1 -1
  28. includes/css/font/mobmenu.eot +0 -0
  29. includes/css/font/mobmenu.svg +0 -148
  30. includes/css/font/mobmenu.ttf +0 -0
  31. includes/css/mobmenu-admin.css +181 -51
  32. includes/css/mobmenu-codes.css +0 -40
  33. includes/css/mobmenu-codes_remove.css +0 -40
  34. includes/css/mobmenu-embedded.css +0 -93
  35. includes/css/mobmenu-embedded_remove.css +0 -98
  36. includes/css/mobmenu-fontello.css +0 -94
  37. includes/css/mobmenu-fontello_remove.css +0 -94
  38. includes/css/mobmenu-icons.css +2 -6
  39. includes/css/mobmenu-ie7-codes.css +0 -40
  40. includes/css/mobmenu-ie7-codes_remove.css +0 -40
  41. includes/css/mobmenu-ie7.css +0 -51
  42. includes/css/mobmenu-ie7_remove.css +0 -51
  43. includes/css/mobmenu.css +6 -3
  44. includes/js/mobmenu-admin.js +77 -24
  45. includes/js/mobmenu.js +74 -60
  46. mobmenu.php +17 -14
  47. options-framework/{titan-framework/css → css}/admin-styles.css +1 -7
  48. options-framework/{titan-framework/css → css}/admin-theme-customizer-styles.css +0 -0
  49. options-framework/{titan-framework/css → css}/class-option-date.css +0 -0
  50. options-framework/{titan-framework/css → css}/class-option-font.css +0 -0
  51. options-framework/{titan-framework/css → css}/class-option-select.css +0 -0
  52. options-framework/{titan-framework/css → css}/select2/select2.min.css +0 -0
  53. options-framework/{titan-framework/inc → inc}/scssphp/LICENSE.md +0 -0
  54. options-framework/{titan-framework/inc → inc}/scssphp/README.md +0 -0
  55. options-framework/{titan-framework/inc → inc}/scssphp/composer.json +0 -0
  56. options-framework/{titan-framework/inc → inc}/scssphp/scss.inc.php +0 -0
  57. options-framework/{titan-framework/js → js}/admin-styling.js +0 -0
  58. options-framework/{titan-framework/js → js}/dev/admin-styling.js +0 -0
  59. options-framework/{titan-framework/js → js}/dev/jquery-ui-timepicker-addon.js +0 -0
  60. options-framework/{titan-framework/js → js}/dev/serialize.js +0 -0
  61. options-framework/{titan-framework/js → js}/dev/wp-color-picker-alpha.js +0 -0
  62. options-framework/{titan-framework/js → js}/jquery-ui-timepicker-addon.js +0 -0
  63. options-framework/{titan-framework/js → js}/min/admin-styling-min.js +0 -0
  64. options-framework/{titan-framework/js → js}/min/jquery-ui-timepicker-addon-min.js +0 -0
  65. options-framework/{titan-framework/js → js}/min/serialize-min.js +0 -0
  66. options-framework/{titan-framework/js → js}/min/wp-color-picker-alpha-min.js +0 -0
  67. options-framework/{titan-framework/js → js}/multicheck-select-all.js +0 -0
  68. options-framework/{titan-framework/js → js}/select2/select2.min.js +0 -0
  69. options-framework/{titan-framework/js → js}/serialize.js +0 -0
  70. options-framework/{titan-framework/js → js}/wp-color-picker-alpha.js +0 -0
  71. options-framework/{titan-framework/lib → lib}/class-admin-notification.php +0 -0
  72. options-framework/lib/class-admin-page.php +535 -0
  73. options-framework/{titan-framework/lib → lib}/class-admin-tab.php +42 -15
  74. options-framework/{titan-framework/lib → lib}/class-meta-box.php +0 -0
  75. options-framework/{titan-framework/lib → lib}/class-option-ajax-button.php +0 -54
  76. options-framework/{titan-framework/lib → lib}/class-option-checkbox.php +0 -13
  77. options-framework/{titan-framework/lib → lib}/class-option-code.php +0 -0
  78. options-framework/lib/class-option-color.php +96 -0
  79. options-framework/lib/class-option-custom.php +45 -0
  80. options-framework/{titan-framework/lib → lib}/class-option-date.php +0 -77
  81. options-framework/{titan-framework/lib → lib}/class-option-editor.php +0 -14
  82. options-framework/{titan-framework/lib → lib}/class-option-enable.php +0 -70
  83. options-framework/{titan-framework/lib → lib}/class-option-file.php +0 -86
  84. options-framework/{titan-framework/lib → lib}/class-option-font.php +0 -419
  85. options-framework/{titan-framework/lib → lib}/class-option-gallery.php +0 -0
  86. options-framework/{titan-framework/lib → lib}/class-option-group.php +0 -0
  87. options-framework/lib/class-option-heading.php +49 -0
  88. options-framework/lib/class-option-iframe.php +42 -0
  89. options-framework/lib/class-option-multicheck-categories.php +38 -0
  90. options-framework/lib/class-option-multicheck-pages.php +36 -0
  91. options-framework/lib/class-option-multicheck-post-types.php +41 -0
  92. options-framework/lib/class-option-multicheck-posts.php +43 -0
  93. options-framework/lib/class-option-multicheck.php +108 -0
  94. options-framework/{titan-framework/lib → lib}/class-option-note.php +9 -27
  95. options-framework/{titan-framework/lib → lib}/class-option-number.php +0 -72
  96. options-framework/{titan-framework/lib → lib}/class-option-radio-image.php +0 -58
  97. options-framework/{titan-framework/lib → lib}/class-option-radio-palette.php +0 -61
  98. options-framework/{titan-framework/lib → lib}/class-option-radio.php +0 -15
  99. options-framework/lib/class-option-save.php +35 -0
  100. options-framework/{titan-framework/lib → lib}/class-option-select-categories.php +0 -10
  101. options-framework/{titan-framework/lib → lib}/class-option-select-pages.php +0 -9
  102. options-framework/{titan-framework/lib → lib}/class-option-select-post-types.php +0 -10
  103. options-framework/{titan-framework/lib → lib}/class-option-select-posts.php +0 -9
  104. options-framework/{titan-framework/lib → lib}/class-option-select.php +2 -48
  105. options-framework/{titan-framework/lib → lib}/class-option-separator.php +0 -0
  106. options-framework/{titan-framework/lib → lib}/class-option-sortable.php +0 -108
  107. options-framework/{titan-framework/lib → lib}/class-option-text.php +0 -16
  108. options-framework/lib/class-option-textarea.php +38 -0
  109. options-framework/{titan-framework/lib → lib}/class-option-upload.php +8 -91
  110. options-framework/{titan-framework/lib → lib}/class-option.php +11 -29
  111. options-framework/{titan-framework/lib → lib}/class-titan-css.php +2 -5
  112. options-framework/{titan-framework/lib → lib}/class-titan-framework.php +4 -55
  113. options-framework/{titan-framework/lib → lib}/functions-googlefonts.php +0 -0
  114. options-framework/{titan-framework/lib → lib}/functions-utils.php +0 -0
  115. options-framework/{titan-framework/lib → lib}/iframe-font-preview.php +0 -0
  116. options-framework/{titan-framework/titan-framework.php → option-framework.php} +3 -36
  117. options-framework/titan-framework/.jshintrc +0 -29
  118. options-framework/titan-framework/.scrutinizer.yml +0 -10
  119. options-framework/titan-framework/.tm_properties +0 -19
  120. options-framework/titan-framework/.travis.yml +0 -36
  121. options-framework/titan-framework/lib/class-admin-page.php +0 -484
  122. options-framework/titan-framework/lib/class-customizer.php +0 -403
  123. options-framework/titan-framework/lib/class-option-color.php +0 -177
  124. options-framework/titan-framework/lib/class-option-custom.php +0 -94
  125. options-framework/titan-framework/lib/class-option-edd-license.php +0 -489
  126. options-framework/titan-framework/lib/class-option-heading.php +0 -108
  127. options-framework/titan-framework/lib/class-option-iframe.php +0 -105
  128. options-framework/titan-framework/lib/class-option-multicheck-categories.php +0 -66
  129. options-framework/titan-framework/lib/class-option-multicheck-pages.php +0 -64
  130. options-framework/titan-framework/lib/class-option-multicheck-post-types.php +0 -77
  131. options-framework/titan-framework/lib/class-option-multicheck-posts.php +0 -76
  132. options-framework/titan-framework/lib/class-option-multicheck.php +0 -213
  133. options-framework/titan-framework/lib/class-option-save.php +0 -55
  134. options-framework/titan-framework/lib/class-option-textarea.php +0 -72
  135. options-framework/titan-framework/lib/class-wp-customize-control.php +0 -18
  136. options-framework/titan-framework/readme.txt +0 -383
  137. options-framework/titan-framework/titan-framework-checker.php +0 -146
  138. options-framework/titan-framework/titan-framework-embedder.php +0 -68
  139. readme.txt +10 -3
freemius/assets/css/admin/common.css CHANGED
@@ -1,2 +1,2 @@
1
  .fs-badge{position:absolute;top:10px;right:0;background:#71ae00;color:white;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);box-shadow:0 2px 1px -1px rgba(0,0,0,0.3)}.theme-browser .theme .fs-premium-theme-badge-container{position:absolute;right:0;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge{position:relative;top:0;margin-top:10px;text-align:center}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-premium-theme-badge{font-size:1.1em}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-beta-theme-badge{background:#00a0d2}.fs-switch{position:relative;display:inline-block;color:#ccc;text-shadow:0 1px 1px rgba(255,255,255,0.8);height:18px;padding:6px 6px 5px 6px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);background:#ececec;box-shadow:0 0 4px rgba(0,0,0,0.1),inset 0 1px 3px 0 rgba(0,0,0,0.1);cursor:pointer}.fs-switch span{display:inline-block;width:35px;text-transform:uppercase}.fs-switch .fs-toggle{position:absolute;top:1px;width:37px;height:25px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.3);border-radius:4px;background:#fff;background-color:#fff;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #ececec), color-stop(1, #fff));background-image:-webkit-linear-gradient(top, #ececec, #fff);background-image:-moz-linear-gradient(top, #ececec, #fff);background-image:-ms-linear-gradient(top, #ececec, #fff);background-image:-o-linear-gradient(top, #ececec, #fff);background-image:linear-gradient(top, bottom, #ececec, #fff);box-shadow:inset 0 1px 0 0 rgba(255,255,255,0.5);z-index:999;-moz-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);-o-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);-ms-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);-webkit-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1)}.fs-switch.fs-off .fs-toggle{left:2%}.fs-switch.fs-on .fs-toggle{left:54%}.fs-switch.fs-round{top:8px;padding:4px 25px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px}.fs-switch.fs-round .fs-toggle{top:0;width:24px;height:24px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px}.fs-switch.fs-round.fs-off .fs-toggle{left:-1px}.fs-switch.fs-round.fs-on{background:#0085ba}.fs-switch.fs-round.fs-on .fs-toggle{left:25px}.fs-switch.fs-small.fs-round{padding:1px 19px}.fs-switch.fs-small.fs-round .fs-toggle{top:0;width:18px;height:18px;-moz-border-radius:18px;-webkit-border-radius:18px;border-radius:18px}.fs-switch.fs-small.fs-round.fs-on .fs-toggle{left:19px}.fs-switch-feedback{margin-left:10px}.fs-switch-feedback.success{color:#71ae00}.rtl .fs-switch-feedback{margin-left:0;margin-right:10px}#fs_frame{line-height:0;font-size:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media (max-width: 600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}
2
- .fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,0.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:bold;cursor:auto}div.fs-notice.updated,div.fs-notice.success,div.fs-notice.promotion{display:block !important}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;-moz-box-shadow:0 2px 2px rgba(6,113,6,0.3);-webkit-box-shadow:0 2px 2px rgba(6,113,6,0.3);box-shadow:0 2px 2px rgba(6,113,6,0.3);opacity:0.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 600px){.fs-secure-notice{display:none}}@media screen and (max-width: 500px){#fs_promo_tab{display:none}}@media screen and (max-width: 782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:'\21B3';padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:'\21B2'}.fs-submenu-item.pricing.upgrade-mode{color:greenyellow}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{border:0;width:20px;height:20px;margin-right:5px;vertical-align:sub;display:inline-block;background:url("/wp-admin/images/wpspin_light-2x.gif");background-size:contain;margin-bottom:-2px}.wrap.fs-section h2{text-align:left}.plugins p.fs-upgrade-notice{border:0;background-color:#d54e21;padding:10px;color:#f9f9f9;margin-top:10px}
1
  .fs-badge{position:absolute;top:10px;right:0;background:#71ae00;color:white;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);box-shadow:0 2px 1px -1px rgba(0,0,0,0.3)}.theme-browser .theme .fs-premium-theme-badge-container{position:absolute;right:0;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge{position:relative;top:0;margin-top:10px;text-align:center}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-premium-theme-badge{font-size:1.1em}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-beta-theme-badge{background:#00a0d2}.fs-switch{position:relative;display:inline-block;color:#ccc;text-shadow:0 1px 1px rgba(255,255,255,0.8);height:18px;padding:6px 6px 5px 6px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);background:#ececec;box-shadow:0 0 4px rgba(0,0,0,0.1),inset 0 1px 3px 0 rgba(0,0,0,0.1);cursor:pointer}.fs-switch span{display:inline-block;width:35px;text-transform:uppercase}.fs-switch .fs-toggle{position:absolute;top:1px;width:37px;height:25px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.3);border-radius:4px;background:#fff;background-color:#fff;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #ececec), color-stop(1, #fff));background-image:-webkit-linear-gradient(top, #ececec, #fff);background-image:-moz-linear-gradient(top, #ececec, #fff);background-image:-ms-linear-gradient(top, #ececec, #fff);background-image:-o-linear-gradient(top, #ececec, #fff);background-image:linear-gradient(top, bottom, #ececec, #fff);box-shadow:inset 0 1px 0 0 rgba(255,255,255,0.5);z-index:999;-moz-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);-o-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);-ms-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);-webkit-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1)}.fs-switch.fs-off .fs-toggle{left:2%}.fs-switch.fs-on .fs-toggle{left:54%}.fs-switch.fs-round{top:8px;padding:4px 25px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px}.fs-switch.fs-round .fs-toggle{top:0;width:24px;height:24px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px}.fs-switch.fs-round.fs-off .fs-toggle{left:-1px}.fs-switch.fs-round.fs-on{background:#0085ba}.fs-switch.fs-round.fs-on .fs-toggle{left:25px}.fs-switch.fs-small.fs-round{padding:1px 19px}.fs-switch.fs-small.fs-round .fs-toggle{top:0;width:18px;height:18px;-moz-border-radius:18px;-webkit-border-radius:18px;border-radius:18px}.fs-switch.fs-small.fs-round.fs-on .fs-toggle{left:19px}.fs-switch-feedback{margin-left:10px}.fs-switch-feedback.success{color:#71ae00}.rtl .fs-switch-feedback{margin-left:0;margin-right:10px}#fs_frame{line-height:0;font-size:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media (max-width: 600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}
2
+ .fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,0.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:bold;cursor:auto}div.fs-notice.updated,div.fs-notice.success,div.fs-notice.promotion{display:block !important}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;-moz-box-shadow:0 2px 2px rgba(6,113,6,0.3);-webkit-box-shadow:0 2px 2px rgba(6,113,6,0.3);box-shadow:0 2px 2px rgba(6,113,6,0.3);opacity:0.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 600px){.fs-secure-notice{display:none}}@media screen and (max-width: 1250px){#fs_promo_tab{display:none}}@media screen and (max-width: 782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:'\21B3';padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:'\21B2'}.fs-submenu-item.pricing.upgrade-mode{color:greenyellow}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{border:0;width:20px;height:20px;margin-right:5px;vertical-align:sub;display:inline-block;background:url("/wp-admin/images/wpspin_light-2x.gif");background-size:contain;margin-bottom:-2px}.wrap.fs-section h2{text-align:left}.plugins p.fs-upgrade-notice{border:0;background-color:#d54e21;padding:10px;color:#f9f9f9;margin-top:10px}
freemius/assets/css/admin/connect.css CHANGED
@@ -1 +1 @@
1
- #fs_connect{width:480px;-moz-box-shadow:0px 1px 2px rgba(0,0,0,0.3);-webkit-box-shadow:0px 1px 2px rgba(0,0,0,0.3);box-shadow:0px 1px 2px rgba(0,0,0,0.3);margin:20px 0}@media screen and (max-width: 479px){#fs_connect{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;width:auto;margin:0 0 0 -10px}}#fs_connect .fs-content{background:#fff;padding:15px 20px}#fs_connect .fs-content .fs-error{background:snow;color:#d3135a;border:1px solid #d3135a;-moz-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);text-align:center;padding:5px;margin-bottom:10px}#fs_connect .fs-content p{margin:0;padding:0;font-size:1.2em}#fs_connect .fs-license-key-container{position:relative;width:280px;margin:10px auto 0 auto}#fs_connect .fs-license-key-container input{width:100%}#fs_connect .fs-license-key-container .dashicons{position:absolute;top:5px;right:5px}#fs_connect.require-license-key .fs-sites-list-container td{cursor:pointer}#fs_connect #delegate_to_site_admins{margin-right:15px;float:right;height:26px;vertical-align:middle;line-height:37px;font-weight:bold;border-bottom:1px dashed;text-decoration:none}#fs_connect #delegate_to_site_admins.rtl{margin-left:15px;margin-right:0}#fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}#fs_connect .fs-actions .button{padding:0 10px 1px;line-height:35px;height:37px;font-size:16px;margin-bottom:0}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-right:15px;padding-left:15px}#fs_connect .fs-actions .button.button-primary:after{content:' \279C'}#fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-permissions{padding:10px 20px;background:#FEFEFE;-moz-transition:background 0.5s ease;-o-transition:background 0.5s ease;-ms-transition:background 0.5s ease;-webkit-transition:background 0.5s ease;transition:background 0.5s ease}#fs_connect .fs-permissions .fs-license-sync-disclaimer{text-align:center;margin-top:0}#fs_connect .fs-permissions .fs-trigger{font-size:0.9em;text-decoration:none;text-align:center;display:block}#fs_connect .fs-permissions ul{height:0;overflow:hidden;margin:0}#fs_connect .fs-permissions ul li{margin-bottom:12px}#fs_connect .fs-permissions ul li:last-child{margin-bottom:0}#fs_connect .fs-permissions ul li i.dashicons{float:left;font-size:40px;width:40px;height:40px}#fs_connect .fs-permissions ul li .fs-switch{float:right}#fs_connect .fs-permissions ul li .fs-permission-description{margin-left:55px}#fs_connect .fs-permissions ul li .fs-permission-description span{font-weight:bold;text-transform:uppercase;color:#23282d}#fs_connect .fs-permissions ul li .fs-permission-description p{margin:2px 0 0 0}#fs_connect .fs-permissions.fs-open{background:#fff}#fs_connect .fs-permissions.fs-open ul{height:auto;margin:20px 20px 10px 20px}@media screen and (max-width: 479px){#fs_connect .fs-permissions{background:#fff}#fs_connect .fs-permissions .fs-trigger{display:none}#fs_connect .fs-permissions ul{height:auto;margin:20px}}#fs_connect .fs-freemium-licensing{padding:8px;background:#777;color:#fff}#fs_connect .fs-freemium-licensing p{text-align:center;display:block;margin:0;padding:0}#fs_connect .fs-freemium-licensing a{color:#C2EEFF;text-decoration:underline}#fs_connect .fs-visual{padding:12px;line-height:0;background:#fafafa;height:80px;position:relative}#fs_connect .fs-visual .fs-site-icon{position:absolute;left:20px;top:10px}#fs_connect .fs-visual .fs-connect-logo{position:absolute;right:20px;top:10px}#fs_connect .fs-visual .fs-plugin-icon{position:absolute;top:10px;left:50%;margin-left:-40px}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon,#fs_connect .fs-visual img,#fs_connect .fs-visual object{width:80px;height:80px}#fs_connect .fs-visual .dashicons-wordpress{font-size:64px;background:#01749a;color:#fff;width:64px;height:64px;padding:8px}#fs_connect .fs-visual .dashicons-plus{position:absolute;top:50%;font-size:30px;margin-top:-10px;color:#bbb}#fs_connect .fs-visual .dashicons-plus.fs-first{left:28%}#fs_connect .fs-visual .dashicons-plus.fs-second{left:65%}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-connect-logo,#fs_connect .fs-visual .fs-site-icon{border:1px solid #ccc;padding:1px;background:#fff}#fs_connect .fs-terms{text-align:center;font-size:0.85em;padding:5px;background:rgba(0,0,0,0.05)}#fs_connect .fs-terms,#fs_connect .fs-terms a{color:#999}#fs_connect .fs-terms a{text-decoration:none}.fs-multisite-options-container{margin-top:10px;border:1px solid #ccc;padding:5px}.fs-multisite-options-container a{text-decoration:none}.fs-multisite-options-container a:focus{box-shadow:none}.fs-multisite-options-container a.selected{font-weight:bold}.fs-multisite-options-container.fs-apply-on-all-sites{border:0 none;padding:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options{border-spacing:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options td:not(:first-child){display:none}.fs-multisite-options-container .fs-sites-list-container{display:none;overflow:auto}.fs-multisite-options-container .fs-sites-list-container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .fs-tooltip{opacity:0;visibility:hidden;-moz-transition:opacity 0.3s ease-in-out;-o-transition:opacity 0.3s ease-in-out;-ms-transition:opacity 0.3s ease-in-out;-webkit-transition:opacity 0.3s ease-in-out;transition:opacity 0.3s ease-in-out;position:absolute;background:rgba(0,0,0,0.8);color:#fff;font-family:'arial', serif;font-size:12px;padding:10px;z-index:999999;bottom:100%;margin-bottom:5px;left:0;right:0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.2);box-shadow:1px 1px 1px rgba(0,0,0,0.2);line-height:1.3em;font-weight:bold;text-align:left}.rtl .fs-tooltip-trigger .fs-tooltip{text-align:right}.fs-tooltip-trigger .fs-tooltip::after{content:' ';display:block;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:rgba(0,0,0,0.8) transparent transparent transparent;position:absolute;top:100%;left:21px}.rtl .fs-tooltip-trigger .fs-tooltip::after{right:21px;left:auto}.fs-tooltip-trigger:hover .fs-tooltip{visibility:visible;opacity:1}#fs_marketing_optin{display:none;margin-top:10px;border:1px solid #ccc;padding:10px;line-height:1.5em}#fs_marketing_optin .fs-message{display:block;margin-bottom:5px;font-size:1.05em;font-weight:600}#fs_marketing_optin.error{border:1px solid #d3135a;background:#fee}#fs_marketing_optin.error .fs-message{color:#d3135a}#fs_marketing_optin .fs-input-container{margin-top:5px}#fs_marketing_optin .fs-input-container label{margin-top:5px;display:block}#fs_marketing_optin .fs-input-container label input{float:left;margin:1px 0 0 0}#fs_marketing_optin .fs-input-container label:first-child{display:block;margin-bottom:2px}#fs_marketing_optin .fs-input-label{display:block;margin-left:20px}#fs_marketing_optin .fs-input-label .underlined{text-decoration:underline}.rtl #fs_marketing_optin .fs-input-container label input{float:right}.rtl #fs_marketing_optin .fs-input-label{margin-left:0;margin-right:20px}.rtl #fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}.rtl #fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}.rtl #fs_connect .fs-actions .button.button-primary:after{content:' \000bb'}.rtl #fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}.rtl #fs_connect .fs-actions .button.button-secondary{float:left}.rtl #fs_connect .fs-permissions ul li .fs-permission-description{margin-right:55px;margin-left:0}.rtl #fs_connect .fs-permissions ul li .fs-switch{float:left}.rtl #fs_connect .fs-permissions ul li i.dashicons{float:right}.rtl #fs_connect .fs-visual .fs-site-icon{right:20px;left:auto}.rtl #fs_connect .fs-visual .fs-connect-logo{right:auto;left:20px}#fs_theme_connect_wrapper{position:fixed;top:0;height:100%;width:100%;z-index:99990;background:rgba(0,0,0,0.75);text-align:center;overflow-y:auto}#fs_theme_connect_wrapper:before{content:"";display:inline-block;vertical-align:middle;height:100%}#fs_theme_connect_wrapper>button.close{color:white;cursor:pointer;height:40px;width:40px;position:absolute;right:0;border:0;background-color:transparent;top:32px}#fs_theme_connect_wrapper #fs_connect{top:0;text-align:left;display:inline-block;vertical-align:middle;margin-top:52px;margin-bottom:20px}#fs_theme_connect_wrapper #fs_connect .fs-terms{background:rgba(140,140,140,0.64)}#fs_theme_connect_wrapper #fs_connect .fs-terms,#fs_theme_connect_wrapper #fs_connect .fs-terms a{color:#c5c5c5}.wp-pointer-content #fs_connect{margin:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.fs-opt-in-pointer .wp-pointer-content{padding:0}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow{border-bottom-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow-inner{border-bottom-color:#fafafa}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow{border-top-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow-inner{border-top-color:#fafafa}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow{border-right-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow-inner{border-right-color:#fafafa}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow{border-left-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow-inner{border-left-color:#fafafa}
1
+ #fs_connect{width:480px;-moz-box-shadow:0px 1px 2px rgba(0,0,0,0.3);-webkit-box-shadow:0px 1px 2px rgba(0,0,0,0.3);box-shadow:0px 1px 2px rgba(0,0,0,0.3);margin:20px 0}@media screen and (max-width: 479px){#fs_connect{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;width:auto;margin:0 0 0 -10px}}#fs_connect .fs-content{background:#fff;padding:15px 20px}#fs_connect .fs-content .fs-error{background:snow;color:#d3135a;border:1px solid #d3135a;-moz-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);text-align:center;padding:5px;margin-bottom:10px}#fs_connect .fs-content p{margin:0;padding:0;font-size:1.2em}#fs_connect .fs-license-key-container{position:relative;width:280px;margin:10px auto 0 auto}#fs_connect .fs-license-key-container input{width:100%}#fs_connect .fs-license-key-container .dashicons{position:absolute;top:5px;right:5px}#fs_connect.require-license-key .fs-sites-list-container td{cursor:pointer}#fs_connect #delegate_to_site_admins{margin-right:15px;float:right;height:26px;vertical-align:middle;line-height:37px;font-weight:bold;border-bottom:1px dashed;text-decoration:none}#fs_connect #delegate_to_site_admins.rtl{margin-left:15px;margin-right:0}#fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}#fs_connect .fs-actions .button{padding:0 10px 1px;line-height:35px;height:37px;font-size:16px;margin-bottom:0}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-right:15px;padding-left:15px}#fs_connect .fs-actions .button.button-primary:after{content:' \279C'}#fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-permissions{padding:10px 20px;background:#FEFEFE;-moz-transition:background 0.5s ease;-o-transition:background 0.5s ease;-ms-transition:background 0.5s ease;-webkit-transition:background 0.5s ease;transition:background 0.5s ease}#fs_connect .fs-permissions .fs-license-sync-disclaimer{text-align:center;margin-top:0}#fs_connect .fs-permissions>.fs-trigger{font-size:0.9em;text-decoration:none;text-align:center;display:block}#fs_connect .fs-permissions ul{height:0;overflow:hidden;margin:0}#fs_connect .fs-permissions ul li{margin-bottom:12px}#fs_connect .fs-permissions ul li:last-child{margin-bottom:0}#fs_connect .fs-permissions ul li>i.dashicons{float:left;font-size:40px;width:40px;height:40px}#fs_connect .fs-permissions ul li .fs-switch{float:right}#fs_connect .fs-permissions ul li .fs-permission-description{margin-left:55px}#fs_connect .fs-permissions ul li .fs-permission-description span{font-weight:bold;text-transform:uppercase;color:#23282d}#fs_connect .fs-permissions ul li .fs-permission-description p{margin:2px 0 0 0}#fs_connect .fs-permissions.fs-open{background:#fff}#fs_connect .fs-permissions.fs-open ul{overflow:initial;height:auto;margin:20px 20px 10px 20px}@media screen and (max-width: 479px){#fs_connect .fs-permissions{background:#fff}#fs_connect .fs-permissions .fs-trigger{display:none}#fs_connect .fs-permissions ul{height:auto;margin:20px}}#fs_connect .fs-freemium-licensing{padding:8px;background:#777;color:#fff}#fs_connect .fs-freemium-licensing p{text-align:center;display:block;margin:0;padding:0}#fs_connect .fs-freemium-licensing a{color:#C2EEFF;text-decoration:underline}#fs_connect .fs-visual{padding:12px;line-height:0;background:#fafafa;height:80px;position:relative}#fs_connect .fs-visual .fs-site-icon{position:absolute;left:20px;top:10px}#fs_connect .fs-visual .fs-connect-logo{position:absolute;right:20px;top:10px}#fs_connect .fs-visual .fs-plugin-icon{position:absolute;top:10px;left:50%;margin-left:-40px}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon,#fs_connect .fs-visual img,#fs_connect .fs-visual object{width:80px;height:80px}#fs_connect .fs-visual .dashicons-wordpress{font-size:64px;background:#01749a;color:#fff;width:64px;height:64px;padding:8px}#fs_connect .fs-visual .dashicons-plus{position:absolute;top:50%;font-size:30px;margin-top:-10px;color:#bbb}#fs_connect .fs-visual .dashicons-plus.fs-first{left:28%}#fs_connect .fs-visual .dashicons-plus.fs-second{left:65%}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-connect-logo,#fs_connect .fs-visual .fs-site-icon{border:1px solid #ccc;padding:1px;background:#fff}#fs_connect .fs-terms{text-align:center;font-size:0.85em;padding:5px;background:rgba(0,0,0,0.05)}#fs_connect .fs-terms,#fs_connect .fs-terms a{color:#999}#fs_connect .fs-terms a{text-decoration:none}.fs-multisite-options-container{margin-top:10px;border:1px solid #ccc;padding:5px}.fs-multisite-options-container a{text-decoration:none}.fs-multisite-options-container a:focus{box-shadow:none}.fs-multisite-options-container a.selected{font-weight:bold}.fs-multisite-options-container.fs-apply-on-all-sites{border:0 none;padding:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options{border-spacing:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options td:not(:first-child){display:none}.fs-multisite-options-container .fs-sites-list-container{display:none;overflow:auto}.fs-multisite-options-container .fs-sites-list-container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .fs-tooltip{opacity:0;visibility:hidden;-moz-transition:opacity 0.3s ease-in-out;-o-transition:opacity 0.3s ease-in-out;-ms-transition:opacity 0.3s ease-in-out;-webkit-transition:opacity 0.3s ease-in-out;transition:opacity 0.3s ease-in-out;position:absolute;background:rgba(0,0,0,0.8);color:#fff !important;font-family:'arial', serif;font-size:12px;padding:10px;z-index:999999;bottom:100%;margin-bottom:5px;left:-17px;right:0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.2);box-shadow:1px 1px 1px rgba(0,0,0,0.2);line-height:1.3em;font-weight:bold;text-align:left;text-transform:none !important}.rtl .fs-tooltip-trigger .fs-tooltip{text-align:right;left:auto;right:-17px}.fs-tooltip-trigger .fs-tooltip::after{content:' ';display:block;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:rgba(0,0,0,0.8) transparent transparent transparent;position:absolute;top:100%;left:21px}.rtl .fs-tooltip-trigger .fs-tooltip::after{right:21px;left:auto}.fs-tooltip-trigger:hover .fs-tooltip{visibility:visible;opacity:1}#fs_marketing_optin{display:none;margin-top:10px;border:1px solid #ccc;padding:10px;line-height:1.5em}#fs_marketing_optin .fs-message{display:block;margin-bottom:5px;font-size:1.05em;font-weight:600}#fs_marketing_optin.error{border:1px solid #d3135a;background:#fee}#fs_marketing_optin.error .fs-message{color:#d3135a}#fs_marketing_optin .fs-input-container{margin-top:5px}#fs_marketing_optin .fs-input-container label{margin-top:5px;display:block}#fs_marketing_optin .fs-input-container label input{float:left;margin:1px 0 0 0}#fs_marketing_optin .fs-input-container label:first-child{display:block;margin-bottom:2px}#fs_marketing_optin .fs-input-label{display:block;margin-left:20px}#fs_marketing_optin .fs-input-label .underlined{text-decoration:underline}.rtl #fs_marketing_optin .fs-input-container label input{float:right}.rtl #fs_marketing_optin .fs-input-label{margin-left:0;margin-right:20px}.rtl #fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}.rtl #fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}.rtl #fs_connect .fs-actions .button.button-primary:after{content:' \000bb'}.rtl #fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}.rtl #fs_connect .fs-actions .button.button-secondary{float:left}.rtl #fs_connect .fs-permissions ul li .fs-permission-description{margin-right:55px;margin-left:0}.rtl #fs_connect .fs-permissions ul li .fs-switch{float:left}.rtl #fs_connect .fs-permissions ul li i.dashicons{float:right}.rtl #fs_connect .fs-visual .fs-site-icon{right:20px;left:auto}.rtl #fs_connect .fs-visual .fs-connect-logo{right:auto;left:20px}#fs_theme_connect_wrapper{position:fixed;top:0;height:100%;width:100%;z-index:99990;background:rgba(0,0,0,0.75);text-align:center;overflow-y:auto}#fs_theme_connect_wrapper:before{content:"";display:inline-block;vertical-align:middle;height:100%}#fs_theme_connect_wrapper>button.close{color:white;cursor:pointer;height:40px;width:40px;position:absolute;right:0;border:0;background-color:transparent;top:32px}#fs_theme_connect_wrapper #fs_connect{top:0;text-align:left;display:inline-block;vertical-align:middle;margin-top:52px;margin-bottom:20px}#fs_theme_connect_wrapper #fs_connect .fs-terms{background:rgba(140,140,140,0.64)}#fs_theme_connect_wrapper #fs_connect .fs-terms,#fs_theme_connect_wrapper #fs_connect .fs-terms a{color:#c5c5c5}.wp-pointer-content #fs_connect{margin:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.fs-opt-in-pointer .wp-pointer-content{padding:0}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow{border-bottom-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow-inner{border-bottom-color:#fafafa}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow{border-top-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow-inner{border-top-color:#fafafa}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow{border-right-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow-inner{border-right-color:#fafafa}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow{border-left-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow-inner{border-left-color:#fafafa}#license_issues_link{display:block;text-align:center;font-size:0.9em;margin-top:10px}
freemius/includes/class-freemius.php CHANGED
@@ -384,6 +384,13 @@
384
  * @var boolean|null
385
  */
386
  private $_use_external_pricing = null;
 
 
 
 
 
 
 
387
 
388
  #endregion
389
 
@@ -5484,7 +5491,7 @@
5484
  function is_extensions_tracking_allowed() {
5485
  return ( true === $this->apply_filters(
5486
  'is_extensions_tracking_allowed',
5487
- $this->_storage->get( 'is_extensions_tracking_allowed', true )
5488
  ) );
5489
  }
5490
 
@@ -5528,10 +5535,12 @@
5528
  * @author Leo Fajardo (@leorw)
5529
  * @since 2.3.2
5530
  *
5531
- * @param bool $is_enabled
5532
  */
5533
- private function update_extensions_tracking_flag( $is_enabled ) {
5534
- $this->_storage->store( 'is_extensions_tracking_allowed', $is_enabled );
 
 
5535
  }
5536
 
5537
  /**
@@ -6860,8 +6869,6 @@
6860
  */
6861
  function _sync_cron_method( array $blog_ids, $current_blog_id = null ) {
6862
  if ( $this->is_registered() ) {
6863
- $this->sync_user_beta_mode();
6864
-
6865
  if ( $this->has_paid_plan() ) {
6866
  // Initiate background plan sync.
6867
  $this->_sync_license( true, false, $current_blog_id );
@@ -7234,7 +7241,8 @@
7234
  }
7235
 
7236
  if ( $this->is_plugin_new_install() || $this->is_only_premium() ) {
7237
- if ( ! $this->_anonymous_mode ) {
 
7238
  // Show notice for new plugin installations.
7239
  $this->_admin_notices->add(
7240
  sprintf(
@@ -7285,6 +7293,10 @@
7285
  * @return bool
7286
  */
7287
  private function should_add_sticky_optin_notice() {
 
 
 
 
7288
  if ( fs_is_network_admin() ) {
7289
  if ( ! $this->_is_network_active ) {
7290
  return false;
@@ -13238,26 +13250,25 @@
13238
  self::shoot_ajax_failure();
13239
  }
13240
 
13241
- $user = $this->get_api_user_scope()->call(
13242
  '',
13243
  'put',
13244
  array(
13245
- 'plugin_id' => $this->get_id(),
13246
  'is_beta' => ( 'true' == $is_beta ),
13247
  'fields' => 'is_beta'
13248
  )
13249
  );
13250
 
13251
- if ( ! $this->is_api_result_entity( $user ) ) {
13252
  self::shoot_ajax_failure(
13253
- FS_Api::is_api_error_object( $user ) ?
13254
- $user->error->message :
13255
  fs_text_inline( "An unknown error has occurred while trying to set the user's beta mode.", 'unknown-error-occurred', $this->get_slug() )
13256
  );
13257
  }
13258
 
13259
- $this->_user->is_beta = $user->is_beta;
13260
- $this->_store_user();
13261
 
13262
  self::shoot_ajax_response( array( 'success' => true ) );
13263
  }
@@ -13292,7 +13303,7 @@
13292
  fs_request_get( 'blog_id', null ),
13293
  fs_request_get( 'module_id', null, 'post' ),
13294
  fs_request_get( 'user_id', null ),
13295
- fs_request_get_bool( 'is_extensions_tracking_allowed', true )
13296
  );
13297
 
13298
  if (
@@ -13482,7 +13493,31 @@
13482
  * @return string
13483
  */
13484
  function get_pricing_js_path() {
13485
- return $this->apply_filters( 'freemius_pricing_js_path', WP_FS__DIR_INCLUDES . '/freemius-pricing/freemius-pricing.js' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13486
  }
13487
 
13488
  /**
@@ -13527,7 +13562,7 @@
13527
  $blog_id = null,
13528
  $plugin_id = null,
13529
  $license_owner_id = null,
13530
- $is_extensions_tracking_allowed = true
13531
  ) {
13532
  $this->_logger->entrance();
13533
 
@@ -16448,19 +16483,6 @@
16448
  );
16449
  }
16450
 
16451
- /**
16452
- * @author Leo Fajardo (@leorw)
16453
- * @since 2.3.0
16454
- */
16455
- private function sync_user_beta_mode() {
16456
- $user = $this->get_api_user_scope()->get( '/?plugin_id=' . $this->get_id() . '&fields=is_beta' );
16457
-
16458
- if ( $this->is_api_result_entity( $user ) ) {
16459
- $this->_user->is_beta = $user->is_beta;
16460
- $this->_store_user();
16461
- }
16462
- }
16463
-
16464
  /**
16465
  * @author Vova Feldman (@svovaf)
16466
  * @since 1.1.7.4
@@ -17148,9 +17170,7 @@
17148
  $this->disable_opt_in_notice_and_lock_user();
17149
  }
17150
 
17151
- if ( ! is_null( $is_extensions_tracking_allowed ) ) {
17152
- $this->update_extensions_tracking_flag( $is_extensions_tracking_allowed );
17153
- }
17154
 
17155
  return $this->setup_account(
17156
  $this->_user,
@@ -17195,9 +17215,7 @@
17195
  $this->disable_opt_in_notice_and_lock_user();
17196
  }
17197
 
17198
- if ( ! is_null( $is_extensions_tracking_allowed ) ) {
17199
- $this->update_extensions_tracking_flag( $is_extensions_tracking_allowed );
17200
- }
17201
 
17202
  $sites = array();
17203
  foreach ( $site_ids as $site_id ) {
@@ -17240,9 +17258,7 @@
17240
  $this->disable_opt_in_notice_and_lock_user();
17241
  }
17242
 
17243
- if ( ! is_null( $is_extensions_tracking_allowed ) ) {
17244
- $this->update_extensions_tracking_flag( $is_extensions_tracking_allowed );
17245
- }
17246
 
17247
  $install_ids = array();
17248
 
@@ -17353,7 +17369,7 @@
17353
  */
17354
  $license_key = fs_request_get( 'license_secret_key' );
17355
 
17356
- $this->update_extensions_tracking_flag( fs_request_get_bool( 'is_extensions_tracking_allowed', true ) );
17357
 
17358
  $this->install_with_current_user( $license_key );
17359
  }
@@ -20605,6 +20621,20 @@
20605
  }
20606
  }
20607
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20608
  if ( $this->is_addon() || $this->has_addons() ) {
20609
  /**
20610
  * Purge the valid user licenses cache so that when the "Account" or the "Add-Ons" page is loaded,
@@ -21298,7 +21328,7 @@
21298
 
21299
  if ( $this->has_secret_key() ) {
21300
  $endpoint = add_query_arg( 'type', 'all', $endpoint );
21301
- } else if ( $this->is_registered() && $this->_user->is_beta() ) {
21302
  $endpoint = add_query_arg( 'type', 'beta', $endpoint );
21303
  }
21304
 
@@ -23396,6 +23426,14 @@
23396
  return;
23397
  }
23398
 
 
 
 
 
 
 
 
 
23399
  if ( fs_is_network_admin() ) {
23400
  if ( ! $this->_is_network_active ) {
23401
  // Don't add tracking links when browsing the network WP Admin and the plugin is not network active.
384
  * @var boolean|null
385
  */
386
  private $_use_external_pricing = null;
387
+ /**
388
+ * @author Leo Fajardo (@leorw)
389
+ * @since 2.4.2
390
+ *
391
+ * @var string|null
392
+ */
393
+ private $_pricing_js_path = null;
394
 
395
  #endregion
396
 
5491
  function is_extensions_tracking_allowed() {
5492
  return ( true === $this->apply_filters(
5493
  'is_extensions_tracking_allowed',
5494
+ $this->_storage->get( 'is_extensions_tracking_allowed', null )
5495
  ) );
5496
  }
5497
 
5535
  * @author Leo Fajardo (@leorw)
5536
  * @since 2.3.2
5537
  *
5538
+ * @param bool|null $is_enabled
5539
  */
5540
+ function update_extensions_tracking_flag( $is_enabled ) {
5541
+ if ( is_bool( $is_enabled ) ) {
5542
+ $this->_storage->store( 'is_extensions_tracking_allowed', $is_enabled );
5543
+ }
5544
  }
5545
 
5546
  /**
6869
  */
6870
  function _sync_cron_method( array $blog_ids, $current_blog_id = null ) {
6871
  if ( $this->is_registered() ) {
 
 
6872
  if ( $this->has_paid_plan() ) {
6873
  // Initiate background plan sync.
6874
  $this->_sync_license( true, false, $current_blog_id );
7241
  }
7242
 
7243
  if ( $this->is_plugin_new_install() || $this->is_only_premium() ) {
7244
+ if ( ! $this->_anonymous_mode &&
7245
+ ( ! $this->is_addon() || ! $this->_parent->is_anonymous() ) ) {
7246
  // Show notice for new plugin installations.
7247
  $this->_admin_notices->add(
7248
  sprintf(
7293
  * @return bool
7294
  */
7295
  private function should_add_sticky_optin_notice() {
7296
+ if ( $this->is_addon() && $this->_parent->is_anonymous() ) {
7297
+ return false;
7298
+ }
7299
+
7300
  if ( fs_is_network_admin() ) {
7301
  if ( ! $this->_is_network_active ) {
7302
  return false;
13250
  self::shoot_ajax_failure();
13251
  }
13252
 
13253
+ $site = $this->get_api_site_scope()->call(
13254
  '',
13255
  'put',
13256
  array(
 
13257
  'is_beta' => ( 'true' == $is_beta ),
13258
  'fields' => 'is_beta'
13259
  )
13260
  );
13261
 
13262
+ if ( ! $this->is_api_result_entity( $site ) ) {
13263
  self::shoot_ajax_failure(
13264
+ FS_Api::is_api_error_object( $site ) ?
13265
+ $site->error->message :
13266
  fs_text_inline( "An unknown error has occurred while trying to set the user's beta mode.", 'unknown-error-occurred', $this->get_slug() )
13267
  );
13268
  }
13269
 
13270
+ $this->_site->is_beta = $site->is_beta;
13271
+ $this->_store_site();
13272
 
13273
  self::shoot_ajax_response( array( 'success' => true ) );
13274
  }
13303
  fs_request_get( 'blog_id', null ),
13304
  fs_request_get( 'module_id', null, 'post' ),
13305
  fs_request_get( 'user_id', null ),
13306
+ fs_request_get_bool( 'is_extensions_tracking_allowed', null )
13307
  );
13308
 
13309
  if (
13493
  * @return string
13494
  */
13495
  function get_pricing_js_path() {
13496
+ if ( ! isset( $this->_pricing_js_path ) ) {
13497
+ $pricing_js_path = $this->apply_filters( 'freemius_pricing_js_path', '' );
13498
+
13499
+ if ( empty( $pricing_js_path ) ) {
13500
+ global $fs_active_plugins;
13501
+
13502
+ foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) {
13503
+ if ( $data->plugin_path == $this->get_plugin_basename() ) {
13504
+ $plugin_or_theme_root_dir = ( $this->is_plugin() ? WP_PLUGIN_DIR : get_theme_root( get_stylesheet() ) );
13505
+
13506
+ $pricing_js_path = $plugin_or_theme_root_dir
13507
+ . '/'
13508
+ // The basename will be `plugins`, `themes`, or the basename of a custom plugins or themes directory.
13509
+ . str_replace( '../' . basename( $plugin_or_theme_root_dir ) . '/', '', $sdk_path )
13510
+ . '/includes/freemius-pricing/freemius-pricing.js';
13511
+
13512
+ break;
13513
+ }
13514
+ }
13515
+ }
13516
+
13517
+ $this->_pricing_js_path = $pricing_js_path;
13518
+ }
13519
+
13520
+ return $this->_pricing_js_path;
13521
  }
13522
 
13523
  /**
13562
  $blog_id = null,
13563
  $plugin_id = null,
13564
  $license_owner_id = null,
13565
+ $is_extensions_tracking_allowed = null
13566
  ) {
13567
  $this->_logger->entrance();
13568
 
16483
  );
16484
  }
16485
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16486
  /**
16487
  * @author Vova Feldman (@svovaf)
16488
  * @since 1.1.7.4
17170
  $this->disable_opt_in_notice_and_lock_user();
17171
  }
17172
 
17173
+ $this->update_extensions_tracking_flag( $is_extensions_tracking_allowed );
 
 
17174
 
17175
  return $this->setup_account(
17176
  $this->_user,
17215
  $this->disable_opt_in_notice_and_lock_user();
17216
  }
17217
 
17218
+ $this->update_extensions_tracking_flag( $is_extensions_tracking_allowed );
 
 
17219
 
17220
  $sites = array();
17221
  foreach ( $site_ids as $site_id ) {
17258
  $this->disable_opt_in_notice_and_lock_user();
17259
  }
17260
 
17261
+ $this->update_extensions_tracking_flag( $is_extensions_tracking_allowed );
 
 
17262
 
17263
  $install_ids = array();
17264
 
17369
  */
17370
  $license_key = fs_request_get( 'license_secret_key' );
17371
 
17372
+ $this->update_extensions_tracking_flag( fs_request_get_bool( 'is_extensions_tracking_allowed', null ) );
17373
 
17374
  $this->install_with_current_user( $license_key );
17375
  }
20621
  }
20622
  }
20623
 
20624
+ if ( ! $this->is_addon() &&
20625
+ $this->_site->is_beta() !== $site->is_beta
20626
+ ) {
20627
+ // Beta flag updated.
20628
+ $this->_site = $site;
20629
+
20630
+ $this->_store_site(
20631
+ true,
20632
+ $is_site_level_sync ?
20633
+ null :
20634
+ $this->get_network_install_blog_id()
20635
+ );
20636
+ }
20637
+
20638
  if ( $this->is_addon() || $this->has_addons() ) {
20639
  /**
20640
  * Purge the valid user licenses cache so that when the "Account" or the "Add-Ons" page is loaded,
21328
 
21329
  if ( $this->has_secret_key() ) {
21330
  $endpoint = add_query_arg( 'type', 'all', $endpoint );
21331
+ } else if ( is_object( $this->_site ) && $this->_site->is_beta() ) {
21332
  $endpoint = add_query_arg( 'type', 'beta', $endpoint );
21333
  }
21334
 
23426
  return;
23427
  }
23428
 
23429
+ if (
23430
+ $this->is_addon() &&
23431
+ ! $this->is_only_premium() &&
23432
+ $this->_parent->is_anonymous()
23433
+ ) {
23434
+ return;
23435
+ }
23436
+
23437
  if ( fs_is_network_admin() ) {
23438
  if ( ! $this->_is_network_active ) {
23439
  // Don't add tracking links when browsing the network WP Admin and the plugin is not network active.
freemius/includes/class-fs-logger.php CHANGED
@@ -142,7 +142,7 @@
142
  return $this->_file_start;
143
  }
144
 
145
- private function _log( &$message, $type = 'log', $wrapper ) {
146
  if ( ! $this->is_on() ) {
147
  return;
148
  }
@@ -688,4 +688,4 @@ KEY `type` (`type` ASC))" );
688
  }
689
 
690
  #endregion
691
- }
142
  return $this->_file_start;
143
  }
144
 
145
+ private function _log( &$message, $type, $wrapper = false ) {
146
  if ( ! $this->is_on() ) {
147
  return;
148
  }
688
  }
689
 
690
  #endregion
691
+ }
freemius/includes/entities/class-fs-site.php CHANGED
@@ -102,6 +102,14 @@
102
  * @var bool
103
  */
104
  public $is_uninstalled = false;
 
 
 
 
 
 
 
 
105
 
106
  /**
107
  * @param stdClass|bool $site
@@ -233,4 +241,13 @@
233
  function is_tracking_prohibited() {
234
  return ! $this->is_tracking_allowed();
235
  }
 
 
 
 
 
 
 
 
 
236
  }
102
  * @var bool
103
  */
104
  public $is_uninstalled = false;
105
+ /**
106
+ * @author Edgar Melkonyan
107
+ *
108
+ * @since 2.4.2
109
+ *
110
+ * @var bool
111
+ */
112
+ public $is_beta;
113
 
114
  /**
115
  * @param stdClass|bool $site
241
  function is_tracking_prohibited() {
242
  return ! $this->is_tracking_allowed();
243
  }
244
+
245
+ /**
246
+ * @author Edgar Melkonyan
247
+ *
248
+ * @return bool
249
+ */
250
+ function is_beta() {
251
+ return ( isset( $this->is_beta ) && true === $this->is_beta );
252
+ }
253
  }
freemius/includes/entities/class-fs-user.php CHANGED
@@ -31,13 +31,6 @@
31
  */
32
  public $is_verified;
33
  /**
34
- * @author Leo Fajardo (@leorw)
35
- * @since 2.3.0
36
- *
37
- * @var bool
38
- */
39
- public $is_beta;
40
- /**
41
  * @var string|null
42
  */
43
  public $customer_id;
@@ -63,16 +56,6 @@
63
  return ( isset( $this->is_verified ) && true === $this->is_verified );
64
  }
65
 
66
- /**
67
- * @author Leo Fajardo (@leorw)
68
- * @since 2.3.0
69
- *
70
- * @return bool
71
- */
72
- function is_beta() {
73
- return ( isset( $this->is_beta ) && true === $this->is_beta );
74
- }
75
-
76
  static function get_type() {
77
  return 'user';
78
  }
31
  */
32
  public $is_verified;
33
  /**
 
 
 
 
 
 
 
34
  * @var string|null
35
  */
36
  public $customer_id;
56
  return ( isset( $this->is_verified ) && true === $this->is_verified );
57
  }
58
 
 
 
 
 
 
 
 
 
 
 
59
  static function get_type() {
60
  return 'user';
61
  }
freemius/languages/freemius-cs_CZ.mo CHANGED
Binary file
freemius/languages/freemius-da_DK.mo CHANGED
Binary file
freemius/languages/freemius-en.mo CHANGED
Binary file
freemius/languages/freemius-es_ES.mo CHANGED
Binary file
freemius/languages/freemius-fr_FR.mo CHANGED
Binary file
freemius/languages/freemius-he_IL.mo CHANGED
Binary file
freemius/languages/freemius-hu_HU.mo CHANGED
Binary file
freemius/languages/freemius-it_IT.mo CHANGED
Binary file
freemius/languages/freemius-ja.mo CHANGED
Binary file
freemius/languages/freemius-nl_NL.mo CHANGED
Binary file
freemius/languages/freemius-ru_RU.mo CHANGED
Binary file
freemius/languages/freemius-ta.mo CHANGED
Binary file
freemius/languages/freemius-zh_CN.mo CHANGED
Binary file
freemius/languages/freemius.pot CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2020 freemius
2
  # This file is distributed under the same license as the freemius package.
3
  msgid ""
4
  msgstr ""
@@ -16,795 +16,795 @@ msgstr ""
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
 
19
- #: includes/class-freemius.php:1912, templates/account.php:910
20
  msgid "An update to a Beta version will replace your installed version of %s with the latest Beta release - use with caution, and not on production sites. You have been warned."
21
  msgstr ""
22
 
23
- #: includes/class-freemius.php:1919
24
  msgid "Would you like to proceed with the update?"
25
  msgstr ""
26
 
27
- #: includes/class-freemius.php:2131
28
  msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
29
  msgstr ""
30
 
31
- #: includes/class-freemius.php:2133
32
  msgid "Error"
33
  msgstr ""
34
 
35
- #: includes/class-freemius.php:2533
36
  msgid "I found a better %s"
37
  msgstr ""
38
 
39
- #: includes/class-freemius.php:2535
40
  msgid "What's the %s's name?"
41
  msgstr ""
42
 
43
- #: includes/class-freemius.php:2541
44
  msgid "It's a temporary %s. I'm just debugging an issue."
45
  msgstr ""
46
 
47
- #: includes/class-freemius.php:2543
48
  msgid "Deactivation"
49
  msgstr ""
50
 
51
- #: includes/class-freemius.php:2544
52
  msgid "Theme Switch"
53
  msgstr ""
54
 
55
- #: includes/class-freemius.php:2553, templates/forms/resend-key.php:24, templates/forms/user-change.php:29
56
  msgid "Other"
57
  msgstr ""
58
 
59
- #: includes/class-freemius.php:2561
60
  msgid "I no longer need the %s"
61
  msgstr ""
62
 
63
- #: includes/class-freemius.php:2568
64
  msgid "I only needed the %s for a short period"
65
  msgstr ""
66
 
67
- #: includes/class-freemius.php:2574
68
  msgid "The %s broke my site"
69
  msgstr ""
70
 
71
- #: includes/class-freemius.php:2581
72
  msgid "The %s suddenly stopped working"
73
  msgstr ""
74
 
75
- #: includes/class-freemius.php:2591
76
  msgid "I can't pay for it anymore"
77
  msgstr ""
78
 
79
- #: includes/class-freemius.php:2593
80
  msgid "What price would you feel comfortable paying?"
81
  msgstr ""
82
 
83
- #: includes/class-freemius.php:2599
84
  msgid "I don't like to share my information with you"
85
  msgstr ""
86
 
87
- #: includes/class-freemius.php:2620
88
  msgid "The %s didn't work"
89
  msgstr ""
90
 
91
- #: includes/class-freemius.php:2630
92
  msgid "I couldn't understand how to make it work"
93
  msgstr ""
94
 
95
- #: includes/class-freemius.php:2638
96
  msgid "The %s is great, but I need specific feature that you don't support"
97
  msgstr ""
98
 
99
- #: includes/class-freemius.php:2640
100
  msgid "What feature?"
101
  msgstr ""
102
 
103
- #: includes/class-freemius.php:2644
104
  msgid "The %s is not working"
105
  msgstr ""
106
 
107
- #: includes/class-freemius.php:2646
108
  msgid "Kindly share what didn't work so we can fix it for future users..."
109
  msgstr ""
110
 
111
- #: includes/class-freemius.php:2650
112
  msgid "It's not what I was looking for"
113
  msgstr ""
114
 
115
- #: includes/class-freemius.php:2652
116
  msgid "What you've been looking for?"
117
  msgstr ""
118
 
119
- #: includes/class-freemius.php:2656
120
  msgid "The %s didn't work as expected"
121
  msgstr ""
122
 
123
- #: includes/class-freemius.php:2658
124
  msgid "What did you expect?"
125
  msgstr ""
126
 
127
- #: includes/class-freemius.php:3513, templates/debug.php:20
128
  msgid "Freemius Debug"
129
  msgstr ""
130
 
131
- #: includes/class-freemius.php:4265
132
  msgid "I don't know what is cURL or how to install it, help me!"
133
  msgstr ""
134
 
135
- #: includes/class-freemius.php:4267
136
  msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
137
  msgstr ""
138
 
139
- #: includes/class-freemius.php:4274
140
  msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
141
  msgstr ""
142
 
143
- #: includes/class-freemius.php:4379
144
  msgid "Yes - do your thing"
145
  msgstr ""
146
 
147
- #: includes/class-freemius.php:4384
148
  msgid "No - just deactivate"
149
  msgstr ""
150
 
151
- #: includes/class-freemius.php:4429, includes/class-freemius.php:4923, includes/class-freemius.php:6182, includes/class-freemius.php:13357, includes/class-freemius.php:14075, includes/class-freemius.php:17526, includes/class-freemius.php:17631, includes/class-freemius.php:17806, includes/class-freemius.php:20040, includes/class-freemius.php:20398, includes/class-freemius.php:20408, includes/class-freemius.php:21079, includes/class-freemius.php:21985, includes/class-freemius.php:22118, includes/class-freemius.php:22274, templates/add-ons.php:57
152
  msgctxt "exclamation"
153
  msgid "Oops"
154
  msgstr ""
155
 
156
- #: includes/class-freemius.php:4498
157
  msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
158
  msgstr ""
159
 
160
- #: includes/class-freemius.php:4920
161
  msgctxt "addonX cannot run without pluginY"
162
  msgid "%s cannot run without %s."
163
  msgstr ""
164
 
165
- #: includes/class-freemius.php:4921
166
  msgctxt "addonX cannot run..."
167
  msgid "%s cannot run without the plugin."
168
  msgstr ""
169
 
170
- #: includes/class-freemius.php:5120, includes/class-freemius.php:5145, includes/class-freemius.php:21150
171
  msgid "Unexpected API error. Please contact the %s's author with the following error."
172
  msgstr ""
173
 
174
- #: includes/class-freemius.php:5848
175
  msgid "Premium %s version was successfully activated."
176
  msgstr ""
177
 
178
- #: includes/class-freemius.php:5860, includes/class-freemius.php:7762
179
  msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
180
  msgid "W00t"
181
  msgstr ""
182
 
183
- #: includes/class-freemius.php:5875
184
  msgid "You have a %s license."
185
  msgstr ""
186
 
187
- #: includes/class-freemius.php:5879, includes/class-freemius.php:16925, includes/class-freemius.php:16936, includes/class-freemius.php:20309, includes/class-freemius.php:20659, includes/class-freemius.php:20728, includes/class-freemius.php:20900
188
  msgctxt "interjection expressing joy or exuberance"
189
  msgid "Yee-haw"
190
  msgstr ""
191
 
192
- #: includes/class-freemius.php:6165
193
  msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
194
  msgstr ""
195
 
196
- #: includes/class-freemius.php:6169
197
  msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
198
  msgstr ""
199
 
200
- #: includes/class-freemius.php:6178, templates/add-ons.php:186, templates/account/partials/addon.php:381
201
  msgid "More information about %s"
202
  msgstr ""
203
 
204
- #: includes/class-freemius.php:6179
205
  msgid "Purchase License"
206
  msgstr ""
207
 
208
- #: includes/class-freemius.php:7118, templates/connect.php:171
209
  msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
210
  msgstr ""
211
 
212
- #: includes/class-freemius.php:7122
213
  msgid "start the trial"
214
  msgstr ""
215
 
216
- #: includes/class-freemius.php:7123, templates/connect.php:175
217
  msgid "complete the install"
218
  msgstr ""
219
 
220
- #: includes/class-freemius.php:7241
221
  msgid "You are just one step away - %s"
222
  msgstr ""
223
 
224
- #: includes/class-freemius.php:7244
225
  msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
226
  msgid "Complete \"%s\" Activation Now"
227
  msgstr ""
228
 
229
- #: includes/class-freemius.php:7322
230
  msgid "We made a few tweaks to the %s, %s"
231
  msgstr ""
232
 
233
- #: includes/class-freemius.php:7326
234
  msgid "Opt in to make \"%s\" better!"
235
  msgstr ""
236
 
237
- #: includes/class-freemius.php:7761
238
  msgid "The upgrade of %s was successfully completed."
239
  msgstr ""
240
 
241
- #: includes/class-freemius.php:10243, includes/class-fs-plugin-updater.php:1099, includes/class-fs-plugin-updater.php:1294, includes/class-fs-plugin-updater.php:1301, templates/auto-installation.php:32
242
  msgid "Add-On"
243
  msgstr ""
244
 
245
- #: includes/class-freemius.php:10245, templates/account.php:392, templates/account.php:400, templates/debug.php:358, templates/debug.php:549
246
  msgid "Plugin"
247
  msgstr ""
248
 
249
- #: includes/class-freemius.php:10246, templates/account.php:393, templates/account.php:401, templates/debug.php:358, templates/debug.php:549, templates/forms/deactivation/form.php:71
250
  msgid "Theme"
251
  msgstr ""
252
 
253
- #: includes/class-freemius.php:13176
254
  msgid "An unknown error has occurred while trying to toggle the license's white-label mode."
255
  msgstr ""
256
 
257
- #: includes/class-freemius.php:13190
258
  msgid "Your %s license was flagged as white-labeled to hide sensitive information from the WP Admin (e.g. your email, license key, prices, billing address & invoices). If you ever wish to revert it back, you can easily do it through your %s. If this was a mistake you can also %s."
259
  msgstr ""
260
 
261
- #: includes/class-freemius.php:13195
262
  msgid "User Dashboard"
263
  msgstr ""
264
 
265
- #: includes/class-freemius.php:13196
266
  msgid "revert it now"
267
  msgstr ""
268
 
269
- #: includes/class-freemius.php:13255
270
  msgid "An unknown error has occurred while trying to set the user's beta mode."
271
  msgstr ""
272
 
273
- #: includes/class-freemius.php:13328
274
  msgid "Invalid new user ID or email address."
275
  msgstr ""
276
 
277
- #: includes/class-freemius.php:13358, includes/class-freemius.php:22229
278
  msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
279
  msgstr ""
280
 
281
- #: includes/class-freemius.php:13359, includes/class-freemius.php:22230
282
  msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
283
  msgstr ""
284
 
285
- #: includes/class-freemius.php:13366, includes/class-freemius.php:22237
286
  msgid "Change Ownership"
287
  msgstr ""
288
 
289
- #: includes/class-freemius.php:13942
290
  msgid "Invalid site details collection."
291
  msgstr ""
292
 
293
- #: includes/class-freemius.php:14062
294
  msgid "We couldn't find your email address in the system, are you sure it's the right address?"
295
  msgstr ""
296
 
297
- #: includes/class-freemius.php:14064
298
  msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
299
  msgstr ""
300
 
301
- #: includes/class-freemius.php:14338
302
  msgid "Account is pending activation."
303
  msgstr ""
304
 
305
- #: includes/class-freemius.php:14450, templates/forms/premium-versions-upgrade-handler.php:47
306
  msgid "Buy a license now"
307
  msgstr ""
308
 
309
- #: includes/class-freemius.php:14462, templates/forms/premium-versions-upgrade-handler.php:46
310
  msgid "Renew your license now"
311
  msgstr ""
312
 
313
- #: includes/class-freemius.php:14466
314
  msgid "%s to access version %s security & feature updates, and support."
315
  msgstr ""
316
 
317
- #: includes/class-freemius.php:16907
318
  msgid "%s activation was successfully completed."
319
  msgstr ""
320
 
321
- #: includes/class-freemius.php:16921
322
  msgid "Your account was successfully activated with the %s plan."
323
  msgstr ""
324
 
325
- #: includes/class-freemius.php:16932, includes/class-freemius.php:20724
326
  msgid "Your trial has been successfully started."
327
  msgstr ""
328
 
329
- #: includes/class-freemius.php:17524, includes/class-freemius.php:17629, includes/class-freemius.php:17804
330
  msgid "Couldn't activate %s."
331
  msgstr ""
332
 
333
- #: includes/class-freemius.php:17525, includes/class-freemius.php:17630, includes/class-freemius.php:17805
334
  msgid "Please contact us with the following message:"
335
  msgstr ""
336
 
337
- #: includes/class-freemius.php:17626, templates/forms/data-debug-mode.php:162
338
  msgid "An unknown error has occurred."
339
  msgstr ""
340
 
341
- #: includes/class-freemius.php:18162, includes/class-freemius.php:23310
342
  msgid "Upgrade"
343
  msgstr ""
344
 
345
- #: includes/class-freemius.php:18168
346
  msgid "Start Trial"
347
  msgstr ""
348
 
349
- #: includes/class-freemius.php:18170
350
  msgid "Pricing"
351
  msgstr ""
352
 
353
- #: includes/class-freemius.php:18250, includes/class-freemius.php:18252
354
  msgid "Affiliation"
355
  msgstr ""
356
 
357
- #: includes/class-freemius.php:18280, includes/class-freemius.php:18282, templates/account.php:240, templates/debug.php:324
358
  msgid "Account"
359
  msgstr ""
360
 
361
- #: includes/class-freemius.php:18296, includes/class-freemius.php:18298, includes/customizer/class-fs-customizer-support-section.php:60
362
  msgid "Contact Us"
363
  msgstr ""
364
 
365
- #: includes/class-freemius.php:18309, includes/class-freemius.php:18311, includes/class-freemius.php:23324, templates/account.php:119, templates/account/partials/addon.php:44
366
  msgid "Add-Ons"
367
  msgstr ""
368
 
369
- #: includes/class-freemius.php:18345
370
  msgctxt "ASCII arrow left icon"
371
  msgid "←"
372
  msgstr ""
373
 
374
- #: includes/class-freemius.php:18345
375
  msgctxt "ASCII arrow right icon"
376
  msgid "➤"
377
  msgstr ""
378
 
379
- #: includes/class-freemius.php:18347, templates/pricing.php:109
380
  msgctxt "noun"
381
  msgid "Pricing"
382
  msgstr ""
383
 
384
- #: includes/class-freemius.php:18560, includes/customizer/class-fs-customizer-support-section.php:67
385
  msgid "Support Forum"
386
  msgstr ""
387
 
388
- #: includes/class-freemius.php:19534
389
  msgid "Your email has been successfully verified - you are AWESOME!"
390
  msgstr ""
391
 
392
- #: includes/class-freemius.php:19535
393
  msgctxt "a positive response"
394
  msgid "Right on"
395
  msgstr ""
396
 
397
- #: includes/class-freemius.php:20041
398
  msgid "seems like the key you entered doesn't match our records."
399
  msgstr ""
400
 
401
- #: includes/class-freemius.php:20065
402
  msgid "Debug mode was successfully enabled and will be automatically disabled in 60 min. You can also disable it earlier by clicking the \"Stop Debug\" link."
403
  msgstr ""
404
 
405
- #: includes/class-freemius.php:20300
406
  msgid "Your %s Add-on plan was successfully upgraded."
407
  msgstr ""
408
 
409
- #: includes/class-freemius.php:20302
410
  msgid "%s Add-on was successfully purchased."
411
  msgstr ""
412
 
413
- #: includes/class-freemius.php:20305
414
  msgid "Download the latest version"
415
  msgstr ""
416
 
417
- #: includes/class-freemius.php:20391
418
  msgid "Your server is blocking the access to Freemius' API, which is crucial for %1$s synchronization. Please contact your host to whitelist %2$s"
419
  msgstr ""
420
 
421
- #: includes/class-freemius.php:20397, includes/class-freemius.php:20407, includes/class-freemius.php:20859, includes/class-freemius.php:20948
422
  msgid "Error received from the server:"
423
  msgstr ""
424
 
425
- #: includes/class-freemius.php:20407
426
  msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
427
  msgstr ""
428
 
429
- #: includes/class-freemius.php:20621, includes/class-freemius.php:20864, includes/class-freemius.php:20919, includes/class-freemius.php:21026
430
  msgctxt "something somebody says when they are thinking about what you have just said."
431
  msgid "Hmm"
432
  msgstr ""
433
 
434
- #: includes/class-freemius.php:20634
435
  msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
436
  msgstr ""
437
 
438
- #: includes/class-freemius.php:20635, templates/account.php:121, templates/add-ons.php:250, templates/account/partials/addon.php:46
439
  msgctxt "trial period"
440
  msgid "Trial"
441
  msgstr ""
442
 
443
- #: includes/class-freemius.php:20640
444
  msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
445
  msgstr ""
446
 
447
- #: includes/class-freemius.php:20644, includes/class-freemius.php:20703
448
  msgid "Please contact us here"
449
  msgstr ""
450
 
451
- #: includes/class-freemius.php:20655
452
  msgid "Your plan was successfully activated."
453
  msgstr ""
454
 
455
- #: includes/class-freemius.php:20656
456
  msgid "Your plan was successfully upgraded."
457
  msgstr ""
458
 
459
- #: includes/class-freemius.php:20673
460
  msgid "Your plan was successfully changed to %s."
461
  msgstr ""
462
 
463
- #: includes/class-freemius.php:20689
464
  msgid "Your license has expired. You can still continue using the free %s forever."
465
  msgstr ""
466
 
467
- #: includes/class-freemius.php:20691
468
  msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
469
  msgstr ""
470
 
471
- #: includes/class-freemius.php:20699
472
  msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
473
  msgstr ""
474
 
475
- #: includes/class-freemius.php:20712
476
  msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
477
  msgstr ""
478
 
479
- #: includes/class-freemius.php:20738
480
  msgid "Your free trial has expired. You can still continue using all our free features."
481
  msgstr ""
482
 
483
- #: includes/class-freemius.php:20740
484
  msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
485
  msgstr ""
486
 
487
- #: includes/class-freemius.php:20855
488
  msgid "It looks like the license could not be activated."
489
  msgstr ""
490
 
491
- #: includes/class-freemius.php:20897
492
  msgid "Your license was successfully activated."
493
  msgstr ""
494
 
495
- #: includes/class-freemius.php:20923
496
  msgid "It looks like your site currently doesn't have an active license."
497
  msgstr ""
498
 
499
- #: includes/class-freemius.php:20947
500
  msgid "It looks like the license deactivation failed."
501
  msgstr ""
502
 
503
- #: includes/class-freemius.php:20976
504
  msgid "Your %s license was successfully deactivated."
505
  msgstr ""
506
 
507
- #: includes/class-freemius.php:20977
508
  msgid "Your license was successfully deactivated, you are back to the %s plan."
509
  msgstr ""
510
 
511
- #: includes/class-freemius.php:20980
512
  msgid "O.K"
513
  msgstr ""
514
 
515
- #: includes/class-freemius.php:21033
516
  msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
517
  msgstr ""
518
 
519
- #: includes/class-freemius.php:21042
520
  msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
521
  msgstr ""
522
 
523
- #: includes/class-freemius.php:21084
524
  msgid "You are already running the %s in a trial mode."
525
  msgstr ""
526
 
527
- #: includes/class-freemius.php:21095
528
  msgid "You already utilized a trial before."
529
  msgstr ""
530
 
531
- #: includes/class-freemius.php:21109
532
  msgid "Plan %s do not exist, therefore, can't start a trial."
533
  msgstr ""
534
 
535
- #: includes/class-freemius.php:21120
536
  msgid "Plan %s does not support a trial period."
537
  msgstr ""
538
 
539
- #: includes/class-freemius.php:21131
540
  msgid "None of the %s's plans supports a trial period."
541
  msgstr ""
542
 
543
- #: includes/class-freemius.php:21181
544
  msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
545
  msgstr ""
546
 
547
- #: includes/class-freemius.php:21217
548
  msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
549
  msgstr ""
550
 
551
- #: includes/class-freemius.php:21236
552
  msgid "Your %s free trial was successfully cancelled."
553
  msgstr ""
554
 
555
- #: includes/class-freemius.php:21552
556
  msgid "Version %s was released."
557
  msgstr ""
558
 
559
- #: includes/class-freemius.php:21552
560
  msgid "Please download %s."
561
  msgstr ""
562
 
563
- #: includes/class-freemius.php:21559
564
  msgid "the latest %s version here"
565
  msgstr ""
566
 
567
- #: includes/class-freemius.php:21564
568
  msgid "New"
569
  msgstr ""
570
 
571
- #: includes/class-freemius.php:21569
572
  msgid "Seems like you got the latest release."
573
  msgstr ""
574
 
575
- #: includes/class-freemius.php:21570
576
  msgid "You are all good!"
577
  msgstr ""
578
 
579
- #: includes/class-freemius.php:21873
580
  msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
581
  msgstr ""
582
 
583
- #: includes/class-freemius.php:22013
584
  msgid "Site successfully opted in."
585
  msgstr ""
586
 
587
- #: includes/class-freemius.php:22014, includes/class-freemius.php:23020
588
  msgid "Awesome"
589
  msgstr ""
590
 
591
- #: includes/class-freemius.php:22030, templates/forms/optout.php:41
592
  msgid "We appreciate your help in making the %s better by letting us track some usage data."
593
  msgstr ""
594
 
595
- #: includes/class-freemius.php:22031
596
  msgid "Thank you!"
597
  msgstr ""
598
 
599
- #: includes/class-freemius.php:22038
600
  msgid "We will no longer be sending any usage data of %s on %s to %s."
601
  msgstr ""
602
 
603
- #: includes/class-freemius.php:22196
604
  msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
605
  msgstr ""
606
 
607
- #: includes/class-freemius.php:22202
608
  msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
609
  msgstr ""
610
 
611
- #: includes/class-freemius.php:22207
612
  msgid "%s is the new owner of the account."
613
  msgstr ""
614
 
615
- #: includes/class-freemius.php:22209
616
  msgctxt "as congratulations"
617
  msgid "Congrats"
618
  msgstr ""
619
 
620
- #: includes/class-freemius.php:22245
621
  msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
622
  msgstr ""
623
 
624
- #: includes/class-freemius.php:22257
625
  msgid "Please provide your full name."
626
  msgstr ""
627
 
628
- #: includes/class-freemius.php:22262
629
  msgid "Your name was successfully updated."
630
  msgstr ""
631
 
632
- #: includes/class-freemius.php:22323
633
  msgid "You have successfully updated your %s."
634
  msgstr ""
635
 
636
- #: includes/class-freemius.php:22382
637
  msgid "Is this your client's site? %s if you wish to hide sensitive info like your email, license key, prices, billing address & invoices from the WP Admin."
638
  msgstr ""
639
 
640
- #: includes/class-freemius.php:22385
641
  msgid "Click here"
642
  msgstr ""
643
 
644
- #: includes/class-freemius.php:22483
645
  msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
646
  msgstr ""
647
 
648
- #: includes/class-freemius.php:22484
649
  msgctxt "advance notice of something that will need attention."
650
  msgid "Heads up"
651
  msgstr ""
652
 
653
- #: includes/class-freemius.php:23060
654
  msgctxt "exclamation"
655
  msgid "Hey"
656
  msgstr ""
657
 
658
- #: includes/class-freemius.php:23060
659
  msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
660
  msgstr ""
661
 
662
- #: includes/class-freemius.php:23068
663
  msgid "No commitment for %s days - cancel anytime!"
664
  msgstr ""
665
 
666
- #: includes/class-freemius.php:23069
667
  msgid "No credit card required"
668
  msgstr ""
669
 
670
- #: includes/class-freemius.php:23076, templates/forms/trial-start.php:53
671
  msgctxt "call to action"
672
  msgid "Start free trial"
673
  msgstr ""
674
 
675
- #: includes/class-freemius.php:23153
676
  msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
677
  msgstr ""
678
 
679
- #: includes/class-freemius.php:23162
680
  msgid "Learn more"
681
  msgstr ""
682
 
683
- #: includes/class-freemius.php:23348, templates/account.php:556, templates/account.php:706, templates/connect.php:179, templates/connect.php:456, templates/forms/license-activation.php:27, templates/account/partials/addon.php:321
684
  msgid "Activate License"
685
  msgstr ""
686
 
687
- #: includes/class-freemius.php:23349, templates/account.php:650, templates/account.php:705, templates/account/partials/addon.php:322, templates/account/partials/site.php:271
688
  msgid "Change License"
689
  msgstr ""
690
 
691
- #: includes/class-freemius.php:23462, templates/account/partials/site.php:169
692
  msgid "Opt Out"
693
  msgstr ""
694
 
695
- #: includes/class-freemius.php:23464, includes/class-freemius.php:23470, templates/account/partials/site.php:49, templates/account/partials/site.php:169
696
  msgid "Opt In"
697
  msgstr ""
698
 
699
- #: includes/class-freemius.php:23700
700
  msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s"
701
  msgstr ""
702
 
703
- #: includes/class-freemius.php:23708
704
  msgid "Activate %s features"
705
  msgstr ""
706
 
707
- #: includes/class-freemius.php:23721
708
  msgid "Please follow these steps to complete the upgrade"
709
  msgstr ""
710
 
711
- #: includes/class-freemius.php:23725
712
  msgid "Download the latest %s version"
713
  msgstr ""
714
 
715
- #: includes/class-freemius.php:23729
716
  msgid "Upload and activate the downloaded version"
717
  msgstr ""
718
 
719
- #: includes/class-freemius.php:23731
720
  msgid "How to upload and activate?"
721
  msgstr ""
722
 
723
- #: includes/class-freemius.php:23865
724
  msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
725
  msgstr ""
726
 
727
- #: includes/class-freemius.php:24034
728
  msgid "Auto installation only works for opted-in users."
729
  msgstr ""
730
 
731
- #: includes/class-freemius.php:24044, includes/class-freemius.php:24077, includes/class-fs-plugin-updater.php:1273, includes/class-fs-plugin-updater.php:1287
732
  msgid "Invalid module ID."
733
  msgstr ""
734
 
735
- #: includes/class-freemius.php:24053, includes/class-fs-plugin-updater.php:1309
736
  msgid "Premium version already active."
737
  msgstr ""
738
 
739
- #: includes/class-freemius.php:24060
740
  msgid "You do not have a valid license to access the premium version."
741
  msgstr ""
742
 
743
- #: includes/class-freemius.php:24067
744
  msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
745
  msgstr ""
746
 
747
- #: includes/class-freemius.php:24085, includes/class-fs-plugin-updater.php:1308
748
  msgid "Premium add-on version already installed."
749
  msgstr ""
750
 
751
- #: includes/class-freemius.php:24435
752
  msgid "View paid features"
753
  msgstr ""
754
 
755
- #: includes/class-freemius.php:24757
756
  msgid "Thank you so much for using %s and its add-ons!"
757
  msgstr ""
758
 
759
- #: includes/class-freemius.php:24758
760
  msgid "Thank you so much for using %s!"
761
  msgstr ""
762
 
763
- #: includes/class-freemius.php:24764
764
  msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
765
  msgstr ""
766
 
767
- #: includes/class-freemius.php:24768
768
  msgid "Thank you so much for using our products!"
769
  msgstr ""
770
 
771
- #: includes/class-freemius.php:24769
772
  msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
773
  msgstr ""
774
 
775
- #: includes/class-freemius.php:24788
776
  msgid "%s and its add-ons"
777
  msgstr ""
778
 
779
- #: includes/class-freemius.php:24797
780
  msgid "Products"
781
  msgstr ""
782
 
783
- #: includes/class-freemius.php:24804, templates/connect.php:280
784
  msgid "Yes"
785
  msgstr ""
786
 
787
- #: includes/class-freemius.php:24805, templates/connect.php:281
788
  msgid "send me security & feature updates, educational content and offers."
789
  msgstr ""
790
 
791
- #: includes/class-freemius.php:24806, templates/connect.php:286
792
  msgid "No"
793
  msgstr ""
794
 
795
- #: includes/class-freemius.php:24808, templates/connect.php:288
796
  msgid "do %sNOT%s send me security & feature updates, educational content and offers."
797
  msgstr ""
798
 
799
- #: includes/class-freemius.php:24818
800
  msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard :-)"
801
  msgstr ""
802
 
803
- #: includes/class-freemius.php:24820, templates/connect.php:295
804
  msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
805
  msgstr ""
806
 
807
- #: includes/class-freemius.php:25102
808
  msgid "License key is empty."
809
  msgstr ""
810
 
@@ -832,15 +832,15 @@ msgstr ""
832
  msgid "Important Upgrade Notice:"
833
  msgstr ""
834
 
835
- #: includes/class-fs-plugin-updater.php:1338
836
  msgid "Installing plugin: %s"
837
  msgstr ""
838
 
839
- #: includes/class-fs-plugin-updater.php:1379
840
  msgid "Unable to connect to the filesystem. Please confirm your credentials."
841
  msgstr ""
842
 
843
- #: includes/class-fs-plugin-updater.php:1561
844
  msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
845
  msgstr ""
846
 
@@ -861,7 +861,7 @@ msgstr ""
861
  msgid "Install Free Version Update Now"
862
  msgstr ""
863
 
864
- #: includes/fs-plugin-info-dialog.php:745, templates/account.php:639
865
  msgid "Install Update Now"
866
  msgstr ""
867
 
@@ -878,7 +878,7 @@ msgctxt "as download latest version"
878
  msgid "Download Latest Free Version"
879
  msgstr ""
880
 
881
- #: includes/fs-plugin-info-dialog.php:772, templates/account.php:99, templates/add-ons.php:37, templates/account/partials/addon.php:25
882
  msgctxt "as download latest version"
883
  msgid "Download Latest"
884
  msgstr ""
@@ -887,11 +887,11 @@ msgstr ""
887
  msgid "Activate this add-on"
888
  msgstr ""
889
 
890
- #: includes/fs-plugin-info-dialog.php:789, templates/connect.php:453
891
  msgid "Activate Free Version"
892
  msgstr ""
893
 
894
- #: includes/fs-plugin-info-dialog.php:790, templates/account.php:123, templates/add-ons.php:330, templates/account/partials/addon.php:48
895
  msgid "Activate"
896
  msgstr ""
897
 
@@ -1020,7 +1020,7 @@ msgstr ""
1020
  msgid "Details"
1021
  msgstr ""
1022
 
1023
- #: includes/fs-plugin-info-dialog.php:1318, templates/account.php:110, templates/debug.php:201, templates/debug.php:238, templates/debug.php:455, templates/account/partials/addon.php:36
1024
  msgctxt "product version"
1025
  msgid "Version"
1026
  msgstr ""
@@ -1034,7 +1034,7 @@ msgstr ""
1034
  msgid "Last Updated"
1035
  msgstr ""
1036
 
1037
- #: includes/fs-plugin-info-dialog.php:1337, templates/account.php:525
1038
  msgctxt "x-ago"
1039
  msgid "%s ago"
1040
  msgstr ""
@@ -1143,293 +1143,293 @@ msgstr ""
1143
  msgid "Latest Free Version Installed"
1144
  msgstr ""
1145
 
1146
- #: templates/account.php:100, templates/forms/subscription-cancellation.php:96, templates/account/partials/addon.php:26, templates/account/partials/site.php:311
1147
  msgid "Downgrading your plan"
1148
  msgstr ""
1149
 
1150
- #: templates/account.php:101, templates/forms/subscription-cancellation.php:97, templates/account/partials/addon.php:27, templates/account/partials/site.php:312
1151
  msgid "Cancelling the subscription"
1152
  msgstr ""
1153
 
1154
  #. translators: %1$s: Either 'Downgrading your plan' or 'Cancelling the subscription'
1155
- #: templates/account.php:103, templates/forms/subscription-cancellation.php:99, templates/account/partials/site.php:314
1156
  msgid "%1$s will immediately stop all future recurring payments and your %2$s plan license will expire in %3$s."
1157
  msgstr ""
1158
 
1159
- #: templates/account.php:104, templates/forms/subscription-cancellation.php:100, templates/account/partials/addon.php:30, templates/account/partials/site.php:315
1160
  msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
1161
  msgstr ""
1162
 
1163
- #: templates/account.php:105, templates/forms/subscription-cancellation.php:106, templates/account/partials/addon.php:31
1164
  msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
1165
  msgstr ""
1166
 
1167
- #: templates/account.php:106, templates/forms/subscription-cancellation.php:101, templates/account/partials/addon.php:32, templates/account/partials/site.php:316
1168
  msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
1169
  msgstr ""
1170
 
1171
- #: templates/account.php:107, templates/forms/subscription-cancellation.php:102, templates/account/partials/addon.php:33, templates/account/partials/site.php:317
1172
  msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1173
  msgstr ""
1174
 
1175
  #. translators: %s: Plan title (e.g. "Professional")
1176
- #: templates/account.php:109, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:35
1177
  msgid "Activate %s Plan"
1178
  msgstr ""
1179
 
1180
  #. translators: %s: Time period (e.g. Auto renews in "2 months")
1181
- #: templates/account.php:112, templates/account/partials/addon.php:38, templates/account/partials/site.php:291
1182
  msgid "Auto renews in %s"
1183
  msgstr ""
1184
 
1185
  #. translators: %s: Time period (e.g. Expires in "2 months")
1186
- #: templates/account.php:114, templates/account/partials/addon.php:40, templates/account/partials/site.php:293
1187
  msgid "Expires in %s"
1188
  msgstr ""
1189
 
1190
- #: templates/account.php:115
1191
  msgctxt "as synchronize license"
1192
  msgid "Sync License"
1193
  msgstr ""
1194
 
1195
- #: templates/account.php:116, templates/account/partials/addon.php:41
1196
  msgid "Cancel Trial"
1197
  msgstr ""
1198
 
1199
- #: templates/account.php:117, templates/account/partials/addon.php:42
1200
  msgid "Change Plan"
1201
  msgstr ""
1202
 
1203
- #: templates/account.php:118, templates/account/partials/addon.php:43
1204
  msgctxt "verb"
1205
  msgid "Upgrade"
1206
  msgstr ""
1207
 
1208
- #: templates/account.php:120, templates/account/partials/addon.php:45, templates/account/partials/site.php:318
1209
  msgctxt "verb"
1210
  msgid "Downgrade"
1211
  msgstr ""
1212
 
1213
- #: templates/account.php:122, templates/add-ons.php:246, templates/plugin-info/features.php:72, templates/account/partials/addon.php:47, templates/account/partials/site.php:33
1214
  msgid "Free"
1215
  msgstr ""
1216
 
1217
- #: templates/account.php:124, templates/debug.php:371, includes/customizer/class-fs-customizer-upsell-control.php:110, templates/account/partials/addon.php:49
1218
  msgctxt "as product pricing plan"
1219
  msgid "Plan"
1220
  msgstr ""
1221
 
1222
- #: templates/account.php:125
1223
  msgid "Bundle Plan"
1224
  msgstr ""
1225
 
1226
- #: templates/account.php:248
1227
  msgid "Free Trial"
1228
  msgstr ""
1229
 
1230
- #: templates/account.php:259
1231
  msgid "Account Details"
1232
  msgstr ""
1233
 
1234
- #: templates/account.php:266, templates/forms/data-debug-mode.php:33
1235
  msgid "Start Debug"
1236
  msgstr ""
1237
 
1238
- #: templates/account.php:268
1239
  msgid "Stop Debug"
1240
  msgstr ""
1241
 
1242
- #: templates/account.php:275
1243
  msgid "Billing & Invoices"
1244
  msgstr ""
1245
 
1246
- #: templates/account.php:286
1247
  msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
1248
  msgstr ""
1249
 
1250
- #: templates/account.php:288
1251
  msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
1252
  msgstr ""
1253
 
1254
- #: templates/account.php:291
1255
  msgid "Delete Account"
1256
  msgstr ""
1257
 
1258
- #: templates/account.php:303, templates/account/partials/addon.php:231, templates/account/partials/deactivate-license-button.php:35
1259
  msgid "Deactivate License"
1260
  msgstr ""
1261
 
1262
- #: templates/account.php:326, templates/forms/subscription-cancellation.php:125
1263
  msgid "Are you sure you want to proceed?"
1264
  msgstr ""
1265
 
1266
- #: templates/account.php:326, templates/account/partials/addon.php:255
1267
  msgid "Cancel Subscription"
1268
  msgstr ""
1269
 
1270
- #: templates/account.php:355, templates/account/partials/addon.php:340
1271
  msgctxt "as synchronize"
1272
  msgid "Sync"
1273
  msgstr ""
1274
 
1275
- #: templates/account.php:370, templates/debug.php:505
1276
  msgid "Name"
1277
  msgstr ""
1278
 
1279
- #: templates/account.php:376, templates/debug.php:506
1280
  msgid "Email"
1281
  msgstr ""
1282
 
1283
- #: templates/account.php:383, templates/debug.php:369, templates/debug.php:555
1284
  msgid "User ID"
1285
  msgstr ""
1286
 
1287
- #: templates/account.php:401, templates/account.php:719, templates/account.php:752, templates/debug.php:236, templates/debug.php:363, templates/debug.php:452, templates/debug.php:504, templates/debug.php:553, templates/debug.php:632, templates/account/payments.php:35, templates/debug/logger.php:21
1288
  msgid "ID"
1289
  msgstr ""
1290
 
1291
- #: templates/account.php:408
1292
  msgid "Site ID"
1293
  msgstr ""
1294
 
1295
- #: templates/account.php:411
1296
  msgid "No ID"
1297
  msgstr ""
1298
 
1299
- #: templates/account.php:416, templates/debug.php:243, templates/debug.php:372, templates/debug.php:456, templates/debug.php:508, templates/account/partials/site.php:227
1300
  msgid "Public Key"
1301
  msgstr ""
1302
 
1303
- #: templates/account.php:422, templates/debug.php:373, templates/debug.php:457, templates/debug.php:509, templates/account/partials/site.php:239
1304
  msgid "Secret Key"
1305
  msgstr ""
1306
 
1307
- #: templates/account.php:425
1308
  msgctxt "as secret encryption key missing"
1309
  msgid "No Secret"
1310
  msgstr ""
1311
 
1312
- #: templates/account.php:452, templates/account/partials/site.php:120, templates/account/partials/site.php:122
1313
  msgid "Trial"
1314
  msgstr ""
1315
 
1316
- #: templates/account.php:479, templates/debug.php:561, templates/account/partials/site.php:260
1317
  msgid "License Key"
1318
  msgstr ""
1319
 
1320
- #: templates/account.php:510
1321
  msgid "Join the Beta program"
1322
  msgstr ""
1323
 
1324
- #: templates/account.php:516
1325
  msgid "not verified"
1326
  msgstr ""
1327
 
1328
- #: templates/account.php:525, templates/account/partials/addon.php:190
1329
  msgid "Expired"
1330
  msgstr ""
1331
 
1332
- #: templates/account.php:585
1333
  msgid "Premium version"
1334
  msgstr ""
1335
 
1336
- #: templates/account.php:587
1337
  msgid "Free version"
1338
  msgstr ""
1339
 
1340
- #: templates/account.php:599
1341
  msgid "Verify Email"
1342
  msgstr ""
1343
 
1344
- #: templates/account.php:613
1345
  msgid "Download %s Version"
1346
  msgstr ""
1347
 
1348
- #: templates/account.php:629
1349
  msgid "Download Paid Version"
1350
  msgstr ""
1351
 
1352
- #: templates/account.php:647, templates/account.php:890, templates/account/partials/site.php:248, templates/account/partials/site.php:270
1353
  msgctxt "verb"
1354
  msgid "Show"
1355
  msgstr ""
1356
 
1357
- #: templates/account.php:662
1358
  msgid "What is your %s?"
1359
  msgstr ""
1360
 
1361
- #: templates/account.php:670, templates/account/billing.php:21
1362
  msgctxt "verb"
1363
  msgid "Edit"
1364
  msgstr ""
1365
 
1366
- #: templates/account.php:674, templates/forms/user-change.php:27
1367
  msgid "Change User"
1368
  msgstr ""
1369
 
1370
- #: templates/account.php:698
1371
  msgid "Sites"
1372
  msgstr ""
1373
 
1374
- #: templates/account.php:711
1375
  msgid "Search by address"
1376
  msgstr ""
1377
 
1378
- #: templates/account.php:720, templates/debug.php:366
1379
  msgid "Address"
1380
  msgstr ""
1381
 
1382
- #: templates/account.php:721
1383
  msgid "License"
1384
  msgstr ""
1385
 
1386
- #: templates/account.php:722
1387
  msgid "Plan"
1388
  msgstr ""
1389
 
1390
- #: templates/account.php:755
1391
  msgctxt "as software license"
1392
  msgid "License"
1393
  msgstr ""
1394
 
1395
- #: templates/account.php:884
1396
  msgctxt "verb"
1397
  msgid "Hide"
1398
  msgstr ""
1399
 
1400
- #: templates/account.php:906, templates/forms/data-debug-mode.php:31
1401
  msgid "Processing"
1402
  msgstr ""
1403
 
1404
- #: templates/account.php:909
1405
  msgid "Get updates for bleeding edge Beta versions of %s."
1406
  msgstr ""
1407
 
1408
- #: templates/account.php:967
1409
  msgid "Cancelling %s"
1410
  msgstr ""
1411
 
1412
- #: templates/account.php:967, templates/account.php:984, templates/forms/subscription-cancellation.php:27, templates/forms/deactivation/form.php:133
1413
  msgid "trial"
1414
  msgstr ""
1415
 
1416
- #: templates/account.php:982, templates/forms/deactivation/form.php:150
1417
  msgid "Cancelling %s..."
1418
  msgstr ""
1419
 
1420
- #: templates/account.php:985, templates/forms/subscription-cancellation.php:28, templates/forms/deactivation/form.php:134
1421
  msgid "subscription"
1422
  msgstr ""
1423
 
1424
- #: templates/account.php:999
1425
  msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
1426
  msgstr ""
1427
 
1428
- #: templates/account.php:1073
1429
  msgid "Disabling white-label mode"
1430
  msgstr ""
1431
 
1432
- #: templates/account.php:1074
1433
  msgid "Enabling white-label mode"
1434
  msgstr ""
1435
 
@@ -1455,7 +1455,7 @@ msgctxt "installed add-on"
1455
  msgid "Installed"
1456
  msgstr ""
1457
 
1458
- #: templates/admin-notice.php:13, templates/forms/license-activation.php:220, templates/forms/resend-key.php:77
1459
  msgctxt "as close a window"
1460
  msgid "Dismiss"
1461
  msgstr ""
@@ -1510,84 +1510,92 @@ msgstr ""
1510
  msgid "Agree & Activate License"
1511
  msgstr ""
1512
 
1513
- #: templates/connect.php:189
1514
- msgid "Thanks for purchasing %s! To get started, please enter your license key:"
1515
  msgstr ""
1516
 
1517
- #: templates/connect.php:196
1518
  msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
1519
  msgstr ""
1520
 
1521
- #: templates/connect.php:197
1522
  msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1523
  msgstr ""
1524
 
1525
- #: templates/connect.php:203
1526
  msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1527
  msgstr ""
1528
 
1529
- #: templates/connect.php:204
1530
  msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1531
  msgstr ""
1532
 
1533
- #: templates/connect.php:238
1534
  msgid "We're excited to introduce the Freemius network-level integration."
1535
  msgstr ""
1536
 
1537
- #: templates/connect.php:241
1538
  msgid "During the update process we detected %d site(s) that are still pending license activation."
1539
  msgstr ""
1540
 
1541
- #: templates/connect.php:243
1542
  msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1543
  msgstr ""
1544
 
1545
- #: templates/connect.php:245
1546
  msgid "%s's paid features"
1547
  msgstr ""
1548
 
1549
- #: templates/connect.php:250
1550
  msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1551
  msgstr ""
1552
 
1553
- #: templates/connect.php:252
1554
  msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
1555
  msgstr ""
1556
 
1557
- #: templates/connect.php:261, templates/forms/data-debug-mode.php:35, templates/forms/license-activation.php:49
1558
  msgid "License key"
1559
  msgstr ""
1560
 
1561
- #: templates/connect.php:264, templates/forms/license-activation.php:22
1562
  msgid "Can't find your license key?"
1563
  msgstr ""
1564
 
1565
- #: templates/connect.php:323, templates/connect.php:695, templates/forms/deactivation/retry-skip.php:20
1566
  msgctxt "verb"
1567
  msgid "Skip"
1568
  msgstr ""
1569
 
1570
- #: templates/connect.php:326
1571
  msgid "Delegate to Site Admins"
1572
  msgstr ""
1573
 
1574
- #: templates/connect.php:326
1575
  msgid "If you click it, this decision will be delegated to the sites administrators."
1576
  msgstr ""
1577
 
1578
- #: templates/connect.php:364
 
 
 
 
1579
  msgid "Your Profile Overview"
1580
  msgstr ""
1581
 
1582
- #: templates/connect.php:365
1583
  msgid "Name and email address"
1584
  msgstr ""
1585
 
1586
- #: templates/connect.php:372
 
 
 
 
1587
  msgid "Your Site Overview"
1588
  msgstr ""
1589
 
1590
- #: templates/connect.php:373
1591
  msgid "Site URL, WP version, PHP info"
1592
  msgstr ""
1593
 
@@ -1595,64 +1603,84 @@ msgstr ""
1595
  msgid "Admin Notices"
1596
  msgstr ""
1597
 
1598
- #: templates/connect.php:380, templates/connect.php:396
1599
  msgid "Updates, announcements, marketing, no spam"
1600
  msgstr ""
1601
 
1602
- #: templates/connect.php:386
1603
- msgid "Current %s Events"
 
 
 
 
1604
  msgstr ""
1605
 
1606
- #: templates/connect.php:387
1607
- msgid "Activation, deactivation and uninstall"
1608
  msgstr ""
1609
 
1610
- #: templates/connect.php:395
1611
  msgid "Newsletter"
1612
  msgstr ""
1613
 
1614
- #: templates/connect.php:403
1615
  msgid "Plugins & Themes"
1616
  msgstr ""
1617
 
1618
- #: templates/connect.php:404
 
 
 
 
 
 
 
 
1619
  msgid "Title, slug, version, and is active"
1620
  msgstr ""
1621
 
1622
- #: templates/connect.php:421, templates/forms/license-activation.php:41
1623
- msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
1624
  msgstr ""
1625
 
1626
  #: templates/connect.php:426
 
 
 
 
 
 
 
 
1627
  msgid "What permissions are being granted?"
1628
  msgstr ""
1629
 
1630
- #: templates/connect.php:452
1631
  msgid "Don't have a license key?"
1632
  msgstr ""
1633
 
1634
- #: templates/connect.php:455
1635
  msgid "Have a license key?"
1636
  msgstr ""
1637
 
1638
- #: templates/connect.php:463
1639
  msgid "Privacy Policy"
1640
  msgstr ""
1641
 
1642
- #: templates/connect.php:465
1643
  msgid "License Agreement"
1644
  msgstr ""
1645
 
1646
- #: templates/connect.php:465
1647
  msgid "Terms of Service"
1648
  msgstr ""
1649
 
1650
- #: templates/connect.php:854
1651
  msgctxt "as in the process of sending an email"
1652
  msgid "Sending email"
1653
  msgstr ""
1654
 
1655
- #: templates/connect.php:855
1656
  msgctxt "as activating plugin"
1657
  msgid "Activating"
1658
  msgstr ""
@@ -2241,7 +2269,11 @@ msgstr ""
2241
  msgid "Update License"
2242
  msgstr ""
2243
 
2244
- #: templates/forms/license-activation.php:181
 
 
 
 
2245
  msgid "Associate with the license owner's account."
2246
  msgstr ""
2247
 
1
+ # Copyright (C) 2021 freemius
2
  # This file is distributed under the same license as the freemius package.
3
  msgid ""
4
  msgstr ""
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
 
19
+ #: includes/class-freemius.php:1919, templates/account.php:912
20
  msgid "An update to a Beta version will replace your installed version of %s with the latest Beta release - use with caution, and not on production sites. You have been warned."
21
  msgstr ""
22
 
23
+ #: includes/class-freemius.php:1926
24
  msgid "Would you like to proceed with the update?"
25
  msgstr ""
26
 
27
+ #: includes/class-freemius.php:2138
28
  msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
29
  msgstr ""
30
 
31
+ #: includes/class-freemius.php:2140
32
  msgid "Error"
33
  msgstr ""
34
 
35
+ #: includes/class-freemius.php:2540
36
  msgid "I found a better %s"
37
  msgstr ""
38
 
39
+ #: includes/class-freemius.php:2542
40
  msgid "What's the %s's name?"
41
  msgstr ""
42
 
43
+ #: includes/class-freemius.php:2548
44
  msgid "It's a temporary %s. I'm just debugging an issue."
45
  msgstr ""
46
 
47
+ #: includes/class-freemius.php:2550
48
  msgid "Deactivation"
49
  msgstr ""
50
 
51
+ #: includes/class-freemius.php:2551
52
  msgid "Theme Switch"
53
  msgstr ""
54
 
55
+ #: includes/class-freemius.php:2560, templates/forms/resend-key.php:24, templates/forms/user-change.php:29
56
  msgid "Other"
57
  msgstr ""
58
 
59
+ #: includes/class-freemius.php:2568
60
  msgid "I no longer need the %s"
61
  msgstr ""
62
 
63
+ #: includes/class-freemius.php:2575
64
  msgid "I only needed the %s for a short period"
65
  msgstr ""
66
 
67
+ #: includes/class-freemius.php:2581
68
  msgid "The %s broke my site"
69
  msgstr ""
70
 
71
+ #: includes/class-freemius.php:2588
72
  msgid "The %s suddenly stopped working"
73
  msgstr ""
74
 
75
+ #: includes/class-freemius.php:2598
76
  msgid "I can't pay for it anymore"
77
  msgstr ""
78
 
79
+ #: includes/class-freemius.php:2600
80
  msgid "What price would you feel comfortable paying?"
81
  msgstr ""
82
 
83
+ #: includes/class-freemius.php:2606
84
  msgid "I don't like to share my information with you"
85
  msgstr ""
86
 
87
+ #: includes/class-freemius.php:2627
88
  msgid "The %s didn't work"
89
  msgstr ""
90
 
91
+ #: includes/class-freemius.php:2637
92
  msgid "I couldn't understand how to make it work"
93
  msgstr ""
94
 
95
+ #: includes/class-freemius.php:2645
96
  msgid "The %s is great, but I need specific feature that you don't support"
97
  msgstr ""
98
 
99
+ #: includes/class-freemius.php:2647
100
  msgid "What feature?"
101
  msgstr ""
102
 
103
+ #: includes/class-freemius.php:2651
104
  msgid "The %s is not working"
105
  msgstr ""
106
 
107
+ #: includes/class-freemius.php:2653
108
  msgid "Kindly share what didn't work so we can fix it for future users..."
109
  msgstr ""
110
 
111
+ #: includes/class-freemius.php:2657
112
  msgid "It's not what I was looking for"
113
  msgstr ""
114
 
115
+ #: includes/class-freemius.php:2659
116
  msgid "What you've been looking for?"
117
  msgstr ""
118
 
119
+ #: includes/class-freemius.php:2663
120
  msgid "The %s didn't work as expected"
121
  msgstr ""
122
 
123
+ #: includes/class-freemius.php:2665
124
  msgid "What did you expect?"
125
  msgstr ""
126
 
127
+ #: includes/class-freemius.php:3520, templates/debug.php:20
128
  msgid "Freemius Debug"
129
  msgstr ""
130
 
131
+ #: includes/class-freemius.php:4272
132
  msgid "I don't know what is cURL or how to install it, help me!"
133
  msgstr ""
134
 
135
+ #: includes/class-freemius.php:4274
136
  msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
137
  msgstr ""
138
 
139
+ #: includes/class-freemius.php:4281
140
  msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
141
  msgstr ""
142
 
143
+ #: includes/class-freemius.php:4386
144
  msgid "Yes - do your thing"
145
  msgstr ""
146
 
147
+ #: includes/class-freemius.php:4391
148
  msgid "No - just deactivate"
149
  msgstr ""
150
 
151
+ #: includes/class-freemius.php:4436, includes/class-freemius.php:4930, includes/class-freemius.php:6191, includes/class-freemius.php:13368, includes/class-freemius.php:14110, includes/class-freemius.php:17542, includes/class-freemius.php:17647, includes/class-freemius.php:17822, includes/class-freemius.php:20056, includes/class-freemius.php:20414, includes/class-freemius.php:20424, includes/class-freemius.php:21109, includes/class-freemius.php:22015, includes/class-freemius.php:22148, includes/class-freemius.php:22304, templates/add-ons.php:57
152
  msgctxt "exclamation"
153
  msgid "Oops"
154
  msgstr ""
155
 
156
+ #: includes/class-freemius.php:4505
157
  msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
158
  msgstr ""
159
 
160
+ #: includes/class-freemius.php:4927
161
  msgctxt "addonX cannot run without pluginY"
162
  msgid "%s cannot run without %s."
163
  msgstr ""
164
 
165
+ #: includes/class-freemius.php:4928
166
  msgctxt "addonX cannot run..."
167
  msgid "%s cannot run without the plugin."
168
  msgstr ""
169
 
170
+ #: includes/class-freemius.php:5127, includes/class-freemius.php:5152, includes/class-freemius.php:21180
171
  msgid "Unexpected API error. Please contact the %s's author with the following error."
172
  msgstr ""
173
 
174
+ #: includes/class-freemius.php:5857
175
  msgid "Premium %s version was successfully activated."
176
  msgstr ""
177
 
178
+ #: includes/class-freemius.php:5869, includes/class-freemius.php:7774
179
  msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
180
  msgid "W00t"
181
  msgstr ""
182
 
183
+ #: includes/class-freemius.php:5884
184
  msgid "You have a %s license."
185
  msgstr ""
186
 
187
+ #: includes/class-freemius.php:5888, includes/class-freemius.php:16947, includes/class-freemius.php:16958, includes/class-freemius.php:20325, includes/class-freemius.php:20689, includes/class-freemius.php:20758, includes/class-freemius.php:20930
188
  msgctxt "interjection expressing joy or exuberance"
189
  msgid "Yee-haw"
190
  msgstr ""
191
 
192
+ #: includes/class-freemius.php:6174
193
  msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
194
  msgstr ""
195
 
196
+ #: includes/class-freemius.php:6178
197
  msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
198
  msgstr ""
199
 
200
+ #: includes/class-freemius.php:6187, templates/add-ons.php:186, templates/account/partials/addon.php:381
201
  msgid "More information about %s"
202
  msgstr ""
203
 
204
+ #: includes/class-freemius.php:6188
205
  msgid "Purchase License"
206
  msgstr ""
207
 
208
+ #: includes/class-freemius.php:7125, templates/connect.php:171
209
  msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
210
  msgstr ""
211
 
212
+ #: includes/class-freemius.php:7129
213
  msgid "start the trial"
214
  msgstr ""
215
 
216
+ #: includes/class-freemius.php:7130, templates/connect.php:175
217
  msgid "complete the install"
218
  msgstr ""
219
 
220
+ #: includes/class-freemius.php:7249
221
  msgid "You are just one step away - %s"
222
  msgstr ""
223
 
224
+ #: includes/class-freemius.php:7252
225
  msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
226
  msgid "Complete \"%s\" Activation Now"
227
  msgstr ""
228
 
229
+ #: includes/class-freemius.php:7334
230
  msgid "We made a few tweaks to the %s, %s"
231
  msgstr ""
232
 
233
+ #: includes/class-freemius.php:7338
234
  msgid "Opt in to make \"%s\" better!"
235
  msgstr ""
236
 
237
+ #: includes/class-freemius.php:7773
238
  msgid "The upgrade of %s was successfully completed."
239
  msgstr ""
240
 
241
+ #: includes/class-freemius.php:10255, includes/class-fs-plugin-updater.php:1087, includes/class-fs-plugin-updater.php:1282, includes/class-fs-plugin-updater.php:1289, templates/auto-installation.php:32
242
  msgid "Add-On"
243
  msgstr ""
244
 
245
+ #: includes/class-freemius.php:10257, templates/account.php:394, templates/account.php:402, templates/debug.php:358, templates/debug.php:549
246
  msgid "Plugin"
247
  msgstr ""
248
 
249
+ #: includes/class-freemius.php:10258, templates/account.php:395, templates/account.php:403, templates/debug.php:358, templates/debug.php:549, templates/forms/deactivation/form.php:71
250
  msgid "Theme"
251
  msgstr ""
252
 
253
+ #: includes/class-freemius.php:13188
254
  msgid "An unknown error has occurred while trying to toggle the license's white-label mode."
255
  msgstr ""
256
 
257
+ #: includes/class-freemius.php:13202
258
  msgid "Your %s license was flagged as white-labeled to hide sensitive information from the WP Admin (e.g. your email, license key, prices, billing address & invoices). If you ever wish to revert it back, you can easily do it through your %s. If this was a mistake you can also %s."
259
  msgstr ""
260
 
261
+ #: includes/class-freemius.php:13207
262
  msgid "User Dashboard"
263
  msgstr ""
264
 
265
+ #: includes/class-freemius.php:13208
266
  msgid "revert it now"
267
  msgstr ""
268
 
269
+ #: includes/class-freemius.php:13266
270
  msgid "An unknown error has occurred while trying to set the user's beta mode."
271
  msgstr ""
272
 
273
+ #: includes/class-freemius.php:13339
274
  msgid "Invalid new user ID or email address."
275
  msgstr ""
276
 
277
+ #: includes/class-freemius.php:13369, includes/class-freemius.php:22259
278
  msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
279
  msgstr ""
280
 
281
+ #: includes/class-freemius.php:13370, includes/class-freemius.php:22260
282
  msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
283
  msgstr ""
284
 
285
+ #: includes/class-freemius.php:13377, includes/class-freemius.php:22267
286
  msgid "Change Ownership"
287
  msgstr ""
288
 
289
+ #: includes/class-freemius.php:13977
290
  msgid "Invalid site details collection."
291
  msgstr ""
292
 
293
+ #: includes/class-freemius.php:14097
294
  msgid "We couldn't find your email address in the system, are you sure it's the right address?"
295
  msgstr ""
296
 
297
+ #: includes/class-freemius.php:14099
298
  msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
299
  msgstr ""
300
 
301
+ #: includes/class-freemius.php:14373
302
  msgid "Account is pending activation."
303
  msgstr ""
304
 
305
+ #: includes/class-freemius.php:14485, templates/forms/premium-versions-upgrade-handler.php:47
306
  msgid "Buy a license now"
307
  msgstr ""
308
 
309
+ #: includes/class-freemius.php:14497, templates/forms/premium-versions-upgrade-handler.php:46
310
  msgid "Renew your license now"
311
  msgstr ""
312
 
313
+ #: includes/class-freemius.php:14501
314
  msgid "%s to access version %s security & feature updates, and support."
315
  msgstr ""
316
 
317
+ #: includes/class-freemius.php:16929
318
  msgid "%s activation was successfully completed."
319
  msgstr ""
320
 
321
+ #: includes/class-freemius.php:16943
322
  msgid "Your account was successfully activated with the %s plan."
323
  msgstr ""
324
 
325
+ #: includes/class-freemius.php:16954, includes/class-freemius.php:20754
326
  msgid "Your trial has been successfully started."
327
  msgstr ""
328
 
329
+ #: includes/class-freemius.php:17540, includes/class-freemius.php:17645, includes/class-freemius.php:17820
330
  msgid "Couldn't activate %s."
331
  msgstr ""
332
 
333
+ #: includes/class-freemius.php:17541, includes/class-freemius.php:17646, includes/class-freemius.php:17821
334
  msgid "Please contact us with the following message:"
335
  msgstr ""
336
 
337
+ #: includes/class-freemius.php:17642, templates/forms/data-debug-mode.php:162
338
  msgid "An unknown error has occurred."
339
  msgstr ""
340
 
341
+ #: includes/class-freemius.php:18178, includes/class-freemius.php:23340
342
  msgid "Upgrade"
343
  msgstr ""
344
 
345
+ #: includes/class-freemius.php:18184
346
  msgid "Start Trial"
347
  msgstr ""
348
 
349
+ #: includes/class-freemius.php:18186
350
  msgid "Pricing"
351
  msgstr ""
352
 
353
+ #: includes/class-freemius.php:18266, includes/class-freemius.php:18268
354
  msgid "Affiliation"
355
  msgstr ""
356
 
357
+ #: includes/class-freemius.php:18296, includes/class-freemius.php:18298, templates/account.php:242, templates/debug.php:324
358
  msgid "Account"
359
  msgstr ""
360
 
361
+ #: includes/class-freemius.php:18312, includes/class-freemius.php:18314, includes/customizer/class-fs-customizer-support-section.php:60
362
  msgid "Contact Us"
363
  msgstr ""
364
 
365
+ #: includes/class-freemius.php:18325, includes/class-freemius.php:18327, includes/class-freemius.php:23354, templates/account.php:121, templates/account/partials/addon.php:44
366
  msgid "Add-Ons"
367
  msgstr ""
368
 
369
+ #: includes/class-freemius.php:18361
370
  msgctxt "ASCII arrow left icon"
371
  msgid "←"
372
  msgstr ""
373
 
374
+ #: includes/class-freemius.php:18361
375
  msgctxt "ASCII arrow right icon"
376
  msgid "➤"
377
  msgstr ""
378
 
379
+ #: includes/class-freemius.php:18363, templates/pricing.php:109
380
  msgctxt "noun"
381
  msgid "Pricing"
382
  msgstr ""
383
 
384
+ #: includes/class-freemius.php:18576, includes/customizer/class-fs-customizer-support-section.php:67
385
  msgid "Support Forum"
386
  msgstr ""
387
 
388
+ #: includes/class-freemius.php:19550
389
  msgid "Your email has been successfully verified - you are AWESOME!"
390
  msgstr ""
391
 
392
+ #: includes/class-freemius.php:19551
393
  msgctxt "a positive response"
394
  msgid "Right on"
395
  msgstr ""
396
 
397
+ #: includes/class-freemius.php:20057
398
  msgid "seems like the key you entered doesn't match our records."
399
  msgstr ""
400
 
401
+ #: includes/class-freemius.php:20081
402
  msgid "Debug mode was successfully enabled and will be automatically disabled in 60 min. You can also disable it earlier by clicking the \"Stop Debug\" link."
403
  msgstr ""
404
 
405
+ #: includes/class-freemius.php:20316
406
  msgid "Your %s Add-on plan was successfully upgraded."
407
  msgstr ""
408
 
409
+ #: includes/class-freemius.php:20318
410
  msgid "%s Add-on was successfully purchased."
411
  msgstr ""
412
 
413
+ #: includes/class-freemius.php:20321
414
  msgid "Download the latest version"
415
  msgstr ""
416
 
417
+ #: includes/class-freemius.php:20407
418
  msgid "Your server is blocking the access to Freemius' API, which is crucial for %1$s synchronization. Please contact your host to whitelist %2$s"
419
  msgstr ""
420
 
421
+ #: includes/class-freemius.php:20413, includes/class-freemius.php:20423, includes/class-freemius.php:20889, includes/class-freemius.php:20978
422
  msgid "Error received from the server:"
423
  msgstr ""
424
 
425
+ #: includes/class-freemius.php:20423
426
  msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
427
  msgstr ""
428
 
429
+ #: includes/class-freemius.php:20651, includes/class-freemius.php:20894, includes/class-freemius.php:20949, includes/class-freemius.php:21056
430
  msgctxt "something somebody says when they are thinking about what you have just said."
431
  msgid "Hmm"
432
  msgstr ""
433
 
434
+ #: includes/class-freemius.php:20664
435
  msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
436
  msgstr ""
437
 
438
+ #: includes/class-freemius.php:20665, templates/account.php:123, templates/add-ons.php:250, templates/account/partials/addon.php:46
439
  msgctxt "trial period"
440
  msgid "Trial"
441
  msgstr ""
442
 
443
+ #: includes/class-freemius.php:20670
444
  msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
445
  msgstr ""
446
 
447
+ #: includes/class-freemius.php:20674, includes/class-freemius.php:20733
448
  msgid "Please contact us here"
449
  msgstr ""
450
 
451
+ #: includes/class-freemius.php:20685
452
  msgid "Your plan was successfully activated."
453
  msgstr ""
454
 
455
+ #: includes/class-freemius.php:20686
456
  msgid "Your plan was successfully upgraded."
457
  msgstr ""
458
 
459
+ #: includes/class-freemius.php:20703
460
  msgid "Your plan was successfully changed to %s."
461
  msgstr ""
462
 
463
+ #: includes/class-freemius.php:20719
464
  msgid "Your license has expired. You can still continue using the free %s forever."
465
  msgstr ""
466
 
467
+ #: includes/class-freemius.php:20721
468
  msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
469
  msgstr ""
470
 
471
+ #: includes/class-freemius.php:20729
472
  msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
473
  msgstr ""
474
 
475
+ #: includes/class-freemius.php:20742
476
  msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
477
  msgstr ""
478
 
479
+ #: includes/class-freemius.php:20768
480
  msgid "Your free trial has expired. You can still continue using all our free features."
481
  msgstr ""
482
 
483
+ #: includes/class-freemius.php:20770
484
  msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
485
  msgstr ""
486
 
487
+ #: includes/class-freemius.php:20885
488
  msgid "It looks like the license could not be activated."
489
  msgstr ""
490
 
491
+ #: includes/class-freemius.php:20927
492
  msgid "Your license was successfully activated."
493
  msgstr ""
494
 
495
+ #: includes/class-freemius.php:20953
496
  msgid "It looks like your site currently doesn't have an active license."
497
  msgstr ""
498
 
499
+ #: includes/class-freemius.php:20977
500
  msgid "It looks like the license deactivation failed."
501
  msgstr ""
502
 
503
+ #: includes/class-freemius.php:21006
504
  msgid "Your %s license was successfully deactivated."
505
  msgstr ""
506
 
507
+ #: includes/class-freemius.php:21007
508
  msgid "Your license was successfully deactivated, you are back to the %s plan."
509
  msgstr ""
510
 
511
+ #: includes/class-freemius.php:21010
512
  msgid "O.K"
513
  msgstr ""
514
 
515
+ #: includes/class-freemius.php:21063
516
  msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
517
  msgstr ""
518
 
519
+ #: includes/class-freemius.php:21072
520
  msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
521
  msgstr ""
522
 
523
+ #: includes/class-freemius.php:21114
524
  msgid "You are already running the %s in a trial mode."
525
  msgstr ""
526
 
527
+ #: includes/class-freemius.php:21125
528
  msgid "You already utilized a trial before."
529
  msgstr ""
530
 
531
+ #: includes/class-freemius.php:21139
532
  msgid "Plan %s do not exist, therefore, can't start a trial."
533
  msgstr ""
534
 
535
+ #: includes/class-freemius.php:21150
536
  msgid "Plan %s does not support a trial period."
537
  msgstr ""
538
 
539
+ #: includes/class-freemius.php:21161
540
  msgid "None of the %s's plans supports a trial period."
541
  msgstr ""
542
 
543
+ #: includes/class-freemius.php:21211
544
  msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
545
  msgstr ""
546
 
547
+ #: includes/class-freemius.php:21247
548
  msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
549
  msgstr ""
550
 
551
+ #: includes/class-freemius.php:21266
552
  msgid "Your %s free trial was successfully cancelled."
553
  msgstr ""
554
 
555
+ #: includes/class-freemius.php:21582
556
  msgid "Version %s was released."
557
  msgstr ""
558
 
559
+ #: includes/class-freemius.php:21582
560
  msgid "Please download %s."
561
  msgstr ""
562
 
563
+ #: includes/class-freemius.php:21589
564
  msgid "the latest %s version here"
565
  msgstr ""
566
 
567
+ #: includes/class-freemius.php:21594
568
  msgid "New"
569
  msgstr ""
570
 
571
+ #: includes/class-freemius.php:21599
572
  msgid "Seems like you got the latest release."
573
  msgstr ""
574
 
575
+ #: includes/class-freemius.php:21600
576
  msgid "You are all good!"
577
  msgstr ""
578
 
579
+ #: includes/class-freemius.php:21903
580
  msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
581
  msgstr ""
582
 
583
+ #: includes/class-freemius.php:22043
584
  msgid "Site successfully opted in."
585
  msgstr ""
586
 
587
+ #: includes/class-freemius.php:22044, includes/class-freemius.php:23050
588
  msgid "Awesome"
589
  msgstr ""
590
 
591
+ #: includes/class-freemius.php:22060, templates/forms/optout.php:41
592
  msgid "We appreciate your help in making the %s better by letting us track some usage data."
593
  msgstr ""
594
 
595
+ #: includes/class-freemius.php:22061
596
  msgid "Thank you!"
597
  msgstr ""
598
 
599
+ #: includes/class-freemius.php:22068
600
  msgid "We will no longer be sending any usage data of %s on %s to %s."
601
  msgstr ""
602
 
603
+ #: includes/class-freemius.php:22226
604
  msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
605
  msgstr ""
606
 
607
+ #: includes/class-freemius.php:22232
608
  msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
609
  msgstr ""
610
 
611
+ #: includes/class-freemius.php:22237
612
  msgid "%s is the new owner of the account."
613
  msgstr ""
614
 
615
+ #: includes/class-freemius.php:22239
616
  msgctxt "as congratulations"
617
  msgid "Congrats"
618
  msgstr ""
619
 
620
+ #: includes/class-freemius.php:22275
621
  msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
622
  msgstr ""
623
 
624
+ #: includes/class-freemius.php:22287
625
  msgid "Please provide your full name."
626
  msgstr ""
627
 
628
+ #: includes/class-freemius.php:22292
629
  msgid "Your name was successfully updated."
630
  msgstr ""
631
 
632
+ #: includes/class-freemius.php:22353
633
  msgid "You have successfully updated your %s."
634
  msgstr ""
635
 
636
+ #: includes/class-freemius.php:22412
637
  msgid "Is this your client's site? %s if you wish to hide sensitive info like your email, license key, prices, billing address & invoices from the WP Admin."
638
  msgstr ""
639
 
640
+ #: includes/class-freemius.php:22415
641
  msgid "Click here"
642
  msgstr ""
643
 
644
+ #: includes/class-freemius.php:22513
645
  msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
646
  msgstr ""
647
 
648
+ #: includes/class-freemius.php:22514
649
  msgctxt "advance notice of something that will need attention."
650
  msgid "Heads up"
651
  msgstr ""
652
 
653
+ #: includes/class-freemius.php:23090
654
  msgctxt "exclamation"
655
  msgid "Hey"
656
  msgstr ""
657
 
658
+ #: includes/class-freemius.php:23090
659
  msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
660
  msgstr ""
661
 
662
+ #: includes/class-freemius.php:23098
663
  msgid "No commitment for %s days - cancel anytime!"
664
  msgstr ""
665
 
666
+ #: includes/class-freemius.php:23099
667
  msgid "No credit card required"
668
  msgstr ""
669
 
670
+ #: includes/class-freemius.php:23106, templates/forms/trial-start.php:53
671
  msgctxt "call to action"
672
  msgid "Start free trial"
673
  msgstr ""
674
 
675
+ #: includes/class-freemius.php:23183
676
  msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
677
  msgstr ""
678
 
679
+ #: includes/class-freemius.php:23192
680
  msgid "Learn more"
681
  msgstr ""
682
 
683
+ #: includes/class-freemius.php:23378, templates/account.php:558, templates/account.php:708, templates/connect.php:179, templates/connect.php:461, templates/forms/license-activation.php:27, templates/account/partials/addon.php:321
684
  msgid "Activate License"
685
  msgstr ""
686
 
687
+ #: includes/class-freemius.php:23379, templates/account.php:652, templates/account.php:707, templates/account/partials/addon.php:322, templates/account/partials/site.php:271
688
  msgid "Change License"
689
  msgstr ""
690
 
691
+ #: includes/class-freemius.php:23500, templates/account/partials/site.php:169
692
  msgid "Opt Out"
693
  msgstr ""
694
 
695
+ #: includes/class-freemius.php:23502, includes/class-freemius.php:23508, templates/account/partials/site.php:49, templates/account/partials/site.php:169
696
  msgid "Opt In"
697
  msgstr ""
698
 
699
+ #: includes/class-freemius.php:23738
700
  msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s"
701
  msgstr ""
702
 
703
+ #: includes/class-freemius.php:23746
704
  msgid "Activate %s features"
705
  msgstr ""
706
 
707
+ #: includes/class-freemius.php:23759
708
  msgid "Please follow these steps to complete the upgrade"
709
  msgstr ""
710
 
711
+ #: includes/class-freemius.php:23763
712
  msgid "Download the latest %s version"
713
  msgstr ""
714
 
715
+ #: includes/class-freemius.php:23767
716
  msgid "Upload and activate the downloaded version"
717
  msgstr ""
718
 
719
+ #: includes/class-freemius.php:23769
720
  msgid "How to upload and activate?"
721
  msgstr ""
722
 
723
+ #: includes/class-freemius.php:23903
724
  msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
725
  msgstr ""
726
 
727
+ #: includes/class-freemius.php:24072
728
  msgid "Auto installation only works for opted-in users."
729
  msgstr ""
730
 
731
+ #: includes/class-freemius.php:24082, includes/class-freemius.php:24115, includes/class-fs-plugin-updater.php:1261, includes/class-fs-plugin-updater.php:1275
732
  msgid "Invalid module ID."
733
  msgstr ""
734
 
735
+ #: includes/class-freemius.php:24091, includes/class-fs-plugin-updater.php:1297
736
  msgid "Premium version already active."
737
  msgstr ""
738
 
739
+ #: includes/class-freemius.php:24098
740
  msgid "You do not have a valid license to access the premium version."
741
  msgstr ""
742
 
743
+ #: includes/class-freemius.php:24105
744
  msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
745
  msgstr ""
746
 
747
+ #: includes/class-freemius.php:24123, includes/class-fs-plugin-updater.php:1296
748
  msgid "Premium add-on version already installed."
749
  msgstr ""
750
 
751
+ #: includes/class-freemius.php:24473
752
  msgid "View paid features"
753
  msgstr ""
754
 
755
+ #: includes/class-freemius.php:24795
756
  msgid "Thank you so much for using %s and its add-ons!"
757
  msgstr ""
758
 
759
+ #: includes/class-freemius.php:24796
760
  msgid "Thank you so much for using %s!"
761
  msgstr ""
762
 
763
+ #: includes/class-freemius.php:24802
764
  msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
765
  msgstr ""
766
 
767
+ #: includes/class-freemius.php:24806
768
  msgid "Thank you so much for using our products!"
769
  msgstr ""
770
 
771
+ #: includes/class-freemius.php:24807
772
  msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
773
  msgstr ""
774
 
775
+ #: includes/class-freemius.php:24826
776
  msgid "%s and its add-ons"
777
  msgstr ""
778
 
779
+ #: includes/class-freemius.php:24835
780
  msgid "Products"
781
  msgstr ""
782
 
783
+ #: includes/class-freemius.php:24842, templates/connect.php:275
784
  msgid "Yes"
785
  msgstr ""
786
 
787
+ #: includes/class-freemius.php:24843, templates/connect.php:276
788
  msgid "send me security & feature updates, educational content and offers."
789
  msgstr ""
790
 
791
+ #: includes/class-freemius.php:24844, templates/connect.php:281
792
  msgid "No"
793
  msgstr ""
794
 
795
+ #: includes/class-freemius.php:24846, templates/connect.php:283
796
  msgid "do %sNOT%s send me security & feature updates, educational content and offers."
797
  msgstr ""
798
 
799
+ #: includes/class-freemius.php:24856
800
  msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard :-)"
801
  msgstr ""
802
 
803
+ #: includes/class-freemius.php:24858, templates/connect.php:290
804
  msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
805
  msgstr ""
806
 
807
+ #: includes/class-freemius.php:25140
808
  msgid "License key is empty."
809
  msgstr ""
810
 
832
  msgid "Important Upgrade Notice:"
833
  msgstr ""
834
 
835
+ #: includes/class-fs-plugin-updater.php:1326
836
  msgid "Installing plugin: %s"
837
  msgstr ""
838
 
839
+ #: includes/class-fs-plugin-updater.php:1367
840
  msgid "Unable to connect to the filesystem. Please confirm your credentials."
841
  msgstr ""
842
 
843
+ #: includes/class-fs-plugin-updater.php:1549
844
  msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
845
  msgstr ""
846
 
861
  msgid "Install Free Version Update Now"
862
  msgstr ""
863
 
864
+ #: includes/fs-plugin-info-dialog.php:745, templates/account.php:641
865
  msgid "Install Update Now"
866
  msgstr ""
867
 
878
  msgid "Download Latest Free Version"
879
  msgstr ""
880
 
881
+ #: includes/fs-plugin-info-dialog.php:772, templates/account.php:101, templates/add-ons.php:37, templates/account/partials/addon.php:25
882
  msgctxt "as download latest version"
883
  msgid "Download Latest"
884
  msgstr ""
887
  msgid "Activate this add-on"
888
  msgstr ""
889
 
890
+ #: includes/fs-plugin-info-dialog.php:789, templates/connect.php:458
891
  msgid "Activate Free Version"
892
  msgstr ""
893
 
894
+ #: includes/fs-plugin-info-dialog.php:790, templates/account.php:125, templates/add-ons.php:330, templates/account/partials/addon.php:48
895
  msgid "Activate"
896
  msgstr ""
897
 
1020
  msgid "Details"
1021
  msgstr ""
1022
 
1023
+ #: includes/fs-plugin-info-dialog.php:1318, templates/account.php:112, templates/debug.php:201, templates/debug.php:238, templates/debug.php:455, templates/account/partials/addon.php:36
1024
  msgctxt "product version"
1025
  msgid "Version"
1026
  msgstr ""
1034
  msgid "Last Updated"
1035
  msgstr ""
1036
 
1037
+ #: includes/fs-plugin-info-dialog.php:1337, templates/account.php:527
1038
  msgctxt "x-ago"
1039
  msgid "%s ago"
1040
  msgstr ""
1143
  msgid "Latest Free Version Installed"
1144
  msgstr ""
1145
 
1146
+ #: templates/account.php:102, templates/forms/subscription-cancellation.php:96, templates/account/partials/addon.php:26, templates/account/partials/site.php:311
1147
  msgid "Downgrading your plan"
1148
  msgstr ""
1149
 
1150
+ #: templates/account.php:103, templates/forms/subscription-cancellation.php:97, templates/account/partials/addon.php:27, templates/account/partials/site.php:312
1151
  msgid "Cancelling the subscription"
1152
  msgstr ""
1153
 
1154
  #. translators: %1$s: Either 'Downgrading your plan' or 'Cancelling the subscription'
1155
+ #: templates/account.php:105, templates/forms/subscription-cancellation.php:99, templates/account/partials/site.php:314
1156
  msgid "%1$s will immediately stop all future recurring payments and your %2$s plan license will expire in %3$s."
1157
  msgstr ""
1158
 
1159
+ #: templates/account.php:106, templates/forms/subscription-cancellation.php:100, templates/account/partials/addon.php:30, templates/account/partials/site.php:315
1160
  msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
1161
  msgstr ""
1162
 
1163
+ #: templates/account.php:107, templates/forms/subscription-cancellation.php:106, templates/account/partials/addon.php:31
1164
  msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
1165
  msgstr ""
1166
 
1167
+ #: templates/account.php:108, templates/forms/subscription-cancellation.php:101, templates/account/partials/addon.php:32, templates/account/partials/site.php:316
1168
  msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
1169
  msgstr ""
1170
 
1171
+ #: templates/account.php:109, templates/forms/subscription-cancellation.php:102, templates/account/partials/addon.php:33, templates/account/partials/site.php:317
1172
  msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1173
  msgstr ""
1174
 
1175
  #. translators: %s: Plan title (e.g. "Professional")
1176
+ #: templates/account.php:111, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:35
1177
  msgid "Activate %s Plan"
1178
  msgstr ""
1179
 
1180
  #. translators: %s: Time period (e.g. Auto renews in "2 months")
1181
+ #: templates/account.php:114, templates/account/partials/addon.php:38, templates/account/partials/site.php:291
1182
  msgid "Auto renews in %s"
1183
  msgstr ""
1184
 
1185
  #. translators: %s: Time period (e.g. Expires in "2 months")
1186
+ #: templates/account.php:116, templates/account/partials/addon.php:40, templates/account/partials/site.php:293
1187
  msgid "Expires in %s"
1188
  msgstr ""
1189
 
1190
+ #: templates/account.php:117
1191
  msgctxt "as synchronize license"
1192
  msgid "Sync License"
1193
  msgstr ""
1194
 
1195
+ #: templates/account.php:118, templates/account/partials/addon.php:41
1196
  msgid "Cancel Trial"
1197
  msgstr ""
1198
 
1199
+ #: templates/account.php:119, templates/account/partials/addon.php:42
1200
  msgid "Change Plan"
1201
  msgstr ""
1202
 
1203
+ #: templates/account.php:120, templates/account/partials/addon.php:43
1204
  msgctxt "verb"
1205
  msgid "Upgrade"
1206
  msgstr ""
1207
 
1208
+ #: templates/account.php:122, templates/account/partials/addon.php:45, templates/account/partials/site.php:318
1209
  msgctxt "verb"
1210
  msgid "Downgrade"
1211
  msgstr ""
1212
 
1213
+ #: templates/account.php:124, templates/add-ons.php:246, templates/plugin-info/features.php:72, templates/account/partials/addon.php:47, templates/account/partials/site.php:33
1214
  msgid "Free"
1215
  msgstr ""
1216
 
1217
+ #: templates/account.php:126, templates/debug.php:371, includes/customizer/class-fs-customizer-upsell-control.php:110, templates/account/partials/addon.php:49
1218
  msgctxt "as product pricing plan"
1219
  msgid "Plan"
1220
  msgstr ""
1221
 
1222
+ #: templates/account.php:127
1223
  msgid "Bundle Plan"
1224
  msgstr ""
1225
 
1226
+ #: templates/account.php:250
1227
  msgid "Free Trial"
1228
  msgstr ""
1229
 
1230
+ #: templates/account.php:261
1231
  msgid "Account Details"
1232
  msgstr ""
1233
 
1234
+ #: templates/account.php:268, templates/forms/data-debug-mode.php:33
1235
  msgid "Start Debug"
1236
  msgstr ""
1237
 
1238
+ #: templates/account.php:270
1239
  msgid "Stop Debug"
1240
  msgstr ""
1241
 
1242
+ #: templates/account.php:277
1243
  msgid "Billing & Invoices"
1244
  msgstr ""
1245
 
1246
+ #: templates/account.php:288
1247
  msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
1248
  msgstr ""
1249
 
1250
+ #: templates/account.php:290
1251
  msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
1252
  msgstr ""
1253
 
1254
+ #: templates/account.php:293
1255
  msgid "Delete Account"
1256
  msgstr ""
1257
 
1258
+ #: templates/account.php:305, templates/account/partials/addon.php:231, templates/account/partials/deactivate-license-button.php:35
1259
  msgid "Deactivate License"
1260
  msgstr ""
1261
 
1262
+ #: templates/account.php:328, templates/forms/subscription-cancellation.php:125
1263
  msgid "Are you sure you want to proceed?"
1264
  msgstr ""
1265
 
1266
+ #: templates/account.php:328, templates/account/partials/addon.php:255
1267
  msgid "Cancel Subscription"
1268
  msgstr ""
1269
 
1270
+ #: templates/account.php:357, templates/account/partials/addon.php:340
1271
  msgctxt "as synchronize"
1272
  msgid "Sync"
1273
  msgstr ""
1274
 
1275
+ #: templates/account.php:372, templates/debug.php:505
1276
  msgid "Name"
1277
  msgstr ""
1278
 
1279
+ #: templates/account.php:378, templates/debug.php:506
1280
  msgid "Email"
1281
  msgstr ""
1282
 
1283
+ #: templates/account.php:385, templates/debug.php:369, templates/debug.php:555
1284
  msgid "User ID"
1285
  msgstr ""
1286
 
1287
+ #: templates/account.php:403, templates/account.php:721, templates/account.php:754, templates/debug.php:236, templates/debug.php:363, templates/debug.php:452, templates/debug.php:504, templates/debug.php:553, templates/debug.php:632, templates/account/payments.php:35, templates/debug/logger.php:21
1288
  msgid "ID"
1289
  msgstr ""
1290
 
1291
+ #: templates/account.php:410
1292
  msgid "Site ID"
1293
  msgstr ""
1294
 
1295
+ #: templates/account.php:413
1296
  msgid "No ID"
1297
  msgstr ""
1298
 
1299
+ #: templates/account.php:418, templates/debug.php:243, templates/debug.php:372, templates/debug.php:456, templates/debug.php:508, templates/account/partials/site.php:227
1300
  msgid "Public Key"
1301
  msgstr ""
1302
 
1303
+ #: templates/account.php:424, templates/debug.php:373, templates/debug.php:457, templates/debug.php:509, templates/account/partials/site.php:239
1304
  msgid "Secret Key"
1305
  msgstr ""
1306
 
1307
+ #: templates/account.php:427
1308
  msgctxt "as secret encryption key missing"
1309
  msgid "No Secret"
1310
  msgstr ""
1311
 
1312
+ #: templates/account.php:454, templates/account/partials/site.php:120, templates/account/partials/site.php:122
1313
  msgid "Trial"
1314
  msgstr ""
1315
 
1316
+ #: templates/account.php:481, templates/debug.php:561, templates/account/partials/site.php:260
1317
  msgid "License Key"
1318
  msgstr ""
1319
 
1320
+ #: templates/account.php:512
1321
  msgid "Join the Beta program"
1322
  msgstr ""
1323
 
1324
+ #: templates/account.php:518
1325
  msgid "not verified"
1326
  msgstr ""
1327
 
1328
+ #: templates/account.php:527, templates/account/partials/addon.php:190
1329
  msgid "Expired"
1330
  msgstr ""
1331
 
1332
+ #: templates/account.php:587
1333
  msgid "Premium version"
1334
  msgstr ""
1335
 
1336
+ #: templates/account.php:589
1337
  msgid "Free version"
1338
  msgstr ""
1339
 
1340
+ #: templates/account.php:601
1341
  msgid "Verify Email"
1342
  msgstr ""
1343
 
1344
+ #: templates/account.php:615
1345
  msgid "Download %s Version"
1346
  msgstr ""
1347
 
1348
+ #: templates/account.php:631
1349
  msgid "Download Paid Version"
1350
  msgstr ""
1351
 
1352
+ #: templates/account.php:649, templates/account.php:892, templates/account/partials/site.php:248, templates/account/partials/site.php:270
1353
  msgctxt "verb"
1354
  msgid "Show"
1355
  msgstr ""
1356
 
1357
+ #: templates/account.php:664
1358
  msgid "What is your %s?"
1359
  msgstr ""
1360
 
1361
+ #: templates/account.php:672, templates/account/billing.php:21
1362
  msgctxt "verb"
1363
  msgid "Edit"
1364
  msgstr ""
1365
 
1366
+ #: templates/account.php:676, templates/forms/user-change.php:27
1367
  msgid "Change User"
1368
  msgstr ""
1369
 
1370
+ #: templates/account.php:700
1371
  msgid "Sites"
1372
  msgstr ""
1373
 
1374
+ #: templates/account.php:713
1375
  msgid "Search by address"
1376
  msgstr ""
1377
 
1378
+ #: templates/account.php:722, templates/debug.php:366
1379
  msgid "Address"
1380
  msgstr ""
1381
 
1382
+ #: templates/account.php:723
1383
  msgid "License"
1384
  msgstr ""
1385
 
1386
+ #: templates/account.php:724
1387
  msgid "Plan"
1388
  msgstr ""
1389
 
1390
+ #: templates/account.php:757
1391
  msgctxt "as software license"
1392
  msgid "License"
1393
  msgstr ""
1394
 
1395
+ #: templates/account.php:886
1396
  msgctxt "verb"
1397
  msgid "Hide"
1398
  msgstr ""
1399
 
1400
+ #: templates/account.php:908, templates/forms/data-debug-mode.php:31
1401
  msgid "Processing"
1402
  msgstr ""
1403
 
1404
+ #: templates/account.php:911
1405
  msgid "Get updates for bleeding edge Beta versions of %s."
1406
  msgstr ""
1407
 
1408
+ #: templates/account.php:969
1409
  msgid "Cancelling %s"
1410
  msgstr ""
1411
 
1412
+ #: templates/account.php:969, templates/account.php:986, templates/forms/subscription-cancellation.php:27, templates/forms/deactivation/form.php:133
1413
  msgid "trial"
1414
  msgstr ""
1415
 
1416
+ #: templates/account.php:984, templates/forms/deactivation/form.php:150
1417
  msgid "Cancelling %s..."
1418
  msgstr ""
1419
 
1420
+ #: templates/account.php:987, templates/forms/subscription-cancellation.php:28, templates/forms/deactivation/form.php:134
1421
  msgid "subscription"
1422
  msgstr ""
1423
 
1424
+ #: templates/account.php:1001
1425
  msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
1426
  msgstr ""
1427
 
1428
+ #: templates/account.php:1075
1429
  msgid "Disabling white-label mode"
1430
  msgstr ""
1431
 
1432
+ #: templates/account.php:1076
1433
  msgid "Enabling white-label mode"
1434
  msgstr ""
1435
 
1455
  msgid "Installed"
1456
  msgstr ""
1457
 
1458
+ #: templates/admin-notice.php:13, templates/forms/license-activation.php:222, templates/forms/resend-key.php:77
1459
  msgctxt "as close a window"
1460
  msgid "Dismiss"
1461
  msgstr ""
1510
  msgid "Agree & Activate License"
1511
  msgstr ""
1512
 
1513
+ #: templates/connect.php:184
1514
+ msgid "Welcome to %s! To get started, please enter your license key:"
1515
  msgstr ""
1516
 
1517
+ #: templates/connect.php:191
1518
  msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
1519
  msgstr ""
1520
 
1521
+ #: templates/connect.php:192
1522
  msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1523
  msgstr ""
1524
 
1525
+ #: templates/connect.php:198
1526
  msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1527
  msgstr ""
1528
 
1529
+ #: templates/connect.php:199
1530
  msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1531
  msgstr ""
1532
 
1533
+ #: templates/connect.php:233
1534
  msgid "We're excited to introduce the Freemius network-level integration."
1535
  msgstr ""
1536
 
1537
+ #: templates/connect.php:236
1538
  msgid "During the update process we detected %d site(s) that are still pending license activation."
1539
  msgstr ""
1540
 
1541
+ #: templates/connect.php:238
1542
  msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1543
  msgstr ""
1544
 
1545
+ #: templates/connect.php:240
1546
  msgid "%s's paid features"
1547
  msgstr ""
1548
 
1549
+ #: templates/connect.php:245
1550
  msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1551
  msgstr ""
1552
 
1553
+ #: templates/connect.php:247
1554
  msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
1555
  msgstr ""
1556
 
1557
+ #: templates/connect.php:256, templates/forms/data-debug-mode.php:35, templates/forms/license-activation.php:49
1558
  msgid "License key"
1559
  msgstr ""
1560
 
1561
+ #: templates/connect.php:259, templates/forms/license-activation.php:22
1562
  msgid "Can't find your license key?"
1563
  msgstr ""
1564
 
1565
+ #: templates/connect.php:318, templates/connect.php:700, templates/forms/deactivation/retry-skip.php:20
1566
  msgctxt "verb"
1567
  msgid "Skip"
1568
  msgstr ""
1569
 
1570
+ #: templates/connect.php:321
1571
  msgid "Delegate to Site Admins"
1572
  msgstr ""
1573
 
1574
+ #: templates/connect.php:321
1575
  msgid "If you click it, this decision will be delegated to the sites administrators."
1576
  msgstr ""
1577
 
1578
+ #: templates/connect.php:346
1579
+ msgid "License issues?"
1580
+ msgstr ""
1581
+
1582
+ #: templates/connect.php:362
1583
  msgid "Your Profile Overview"
1584
  msgstr ""
1585
 
1586
+ #: templates/connect.php:363
1587
  msgid "Name and email address"
1588
  msgstr ""
1589
 
1590
+ #: templates/connect.php:370
1591
+ msgid "So you can manage and control your license remotely from the User Dashboard."
1592
+ msgstr ""
1593
+
1594
+ #: templates/connect.php:371
1595
  msgid "Your Site Overview"
1596
  msgstr ""
1597
 
1598
+ #: templates/connect.php:372
1599
  msgid "Site URL, WP version, PHP info"
1600
  msgstr ""
1601
 
1603
  msgid "Admin Notices"
1604
  msgstr ""
1605
 
1606
+ #: templates/connect.php:380, templates/connect.php:398
1607
  msgid "Updates, announcements, marketing, no spam"
1608
  msgstr ""
1609
 
1610
+ #: templates/connect.php:387
1611
+ msgid "So you can reuse the license when the %s is no longer active."
1612
+ msgstr ""
1613
+
1614
+ #: templates/connect.php:388
1615
+ msgid "Current %s Status"
1616
  msgstr ""
1617
 
1618
+ #: templates/connect.php:389
1619
+ msgid "Active, deactivated, or uninstalled"
1620
  msgstr ""
1621
 
1622
+ #: templates/connect.php:397
1623
  msgid "Newsletter"
1624
  msgstr ""
1625
 
1626
+ #: templates/connect.php:405
1627
  msgid "Plugins & Themes"
1628
  msgstr ""
1629
 
1630
+ #: templates/connect.php:405
1631
+ msgid "optional"
1632
+ msgstr ""
1633
+
1634
+ #: templates/connect.php:406
1635
+ msgid "To help us troubleshoot any potential issues that may arise from other plugin or theme conflicts."
1636
+ msgstr ""
1637
+
1638
+ #: templates/connect.php:407
1639
  msgid "Title, slug, version, and is active"
1640
  msgstr ""
1641
 
1642
+ #: templates/connect.php:424
1643
+ msgid "The %1$s will periodically send %2$s to %3$s for security & feature updates delivery, and license management."
1644
  msgstr ""
1645
 
1646
  #: templates/connect.php:426
1647
+ msgid "diagnostic data"
1648
+ msgstr ""
1649
+
1650
+ #: templates/connect.php:427
1651
+ msgid "Freemius is our licensing and software updates engine"
1652
+ msgstr ""
1653
+
1654
+ #: templates/connect.php:430
1655
  msgid "What permissions are being granted?"
1656
  msgstr ""
1657
 
1658
+ #: templates/connect.php:457
1659
  msgid "Don't have a license key?"
1660
  msgstr ""
1661
 
1662
+ #: templates/connect.php:460
1663
  msgid "Have a license key?"
1664
  msgstr ""
1665
 
1666
+ #: templates/connect.php:468
1667
  msgid "Privacy Policy"
1668
  msgstr ""
1669
 
1670
+ #: templates/connect.php:470
1671
  msgid "License Agreement"
1672
  msgstr ""
1673
 
1674
+ #: templates/connect.php:470
1675
  msgid "Terms of Service"
1676
  msgstr ""
1677
 
1678
+ #: templates/connect.php:866
1679
  msgctxt "as in the process of sending an email"
1680
  msgid "Sending email"
1681
  msgstr ""
1682
 
1683
+ #: templates/connect.php:867
1684
  msgctxt "as activating plugin"
1685
  msgid "Activating"
1686
  msgstr ""
2269
  msgid "Update License"
2270
  msgstr ""
2271
 
2272
+ #: templates/forms/license-activation.php:41
2273
+ msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
2274
+ msgstr ""
2275
+
2276
+ #: templates/forms/license-activation.php:183
2277
  msgid "Associate with the license owner's account."
2278
  msgstr ""
2279
 
freemius/start.php CHANGED
@@ -15,7 +15,7 @@
15
  *
16
  * @var string
17
  */
18
- $this_sdk_version = '2.4.1';
19
 
20
  #region SDK Selection Logic --------------------------------------------------------------------
21
 
@@ -512,7 +512,7 @@
512
  }
513
 
514
  /**
515
- * @param array <string,string> $module Plugin or Theme details.
516
  *
517
  * @return Freemius
518
  * @throws Freemius_Exception
@@ -527,4 +527,4 @@
527
  function fs_dump_log() {
528
  FS_Logger::dump();
529
  }
530
- }
15
  *
16
  * @var string
17
  */
18
+ $this_sdk_version = '2.4.2';
19
 
20
  #region SDK Selection Logic --------------------------------------------------------------------
21
 
512
  }
513
 
514
  /**
515
+ * @param array <string,string|bool|array> $module Plugin or Theme details.
516
  *
517
  * @return Freemius
518
  * @throws Freemius_Exception
527
  function fs_dump_log() {
528
  FS_Logger::dump();
529
  }
530
+ }
freemius/templates/account.php CHANGED
@@ -21,7 +21,9 @@
21
  /**
22
  * @var FS_Plugin_Tag $update
23
  */
24
- $update = $fs->get_update( false, false, WP_FS__TIME_24_HOURS_IN_SEC / 24 );
 
 
25
 
26
  if ( is_object($update) ) {
27
  /**
@@ -433,11 +435,11 @@
433
  'value' => $fs->get_plugin_version()
434
  );
435
 
436
- if ( $is_premium && ! $is_whitelabeled ) {
437
  $profile[] = array(
438
  'id' => 'beta_program',
439
  'title' => '',
440
- 'value' => $user->is_beta
441
  );
442
  }
443
 
21
  /**
22
  * @var FS_Plugin_Tag $update
23
  */
24
+ $update = $fs->has_release_on_freemius() ?
25
+ $fs->get_update( false, false, WP_FS__TIME_24_HOURS_IN_SEC / 24 ) :
26
+ null;
27
 
28
  if ( is_object($update) ) {
29
  /**
435
  'value' => $fs->get_plugin_version()
436
  );
437
 
438
+ if ( ! fs_is_network_admin() && $is_premium && ! $is_whitelabeled ) {
439
  $profile[] = array(
440
  'id' => 'beta_program',
441
  'title' => '',
442
+ 'value' => $site->is_beta
443
  );
444
  }
445
 
freemius/templates/connect.php CHANGED
@@ -181,12 +181,7 @@
181
 
182
  $message = $fs->apply_filters(
183
  'connect-message_on-premium',
184
- ($is_network_upgrade_mode ?
185
- '' :
186
- /* translators: %s: name (e.g. Hey John,) */
187
- $hey_x_text . '<br>'
188
- ) .
189
- sprintf( fs_text_inline( 'Thanks for purchasing %s! To get started, please enter your license key:', 'thanks-for-purchasing', $slug ), '<b>' . $fs->get_plugin_name() . '</b>' ),
190
  $first_name,
191
  $fs->get_plugin_name()
192
  );
@@ -347,6 +342,9 @@
347
  } ?>><?php echo esc_html( $button_label ) ?></button>
348
  </form>
349
  <?php endif ?>
 
 
 
350
  </div><?php
351
 
352
  // Set core permission list items.
@@ -367,26 +365,30 @@
367
  );
368
  }
369
 
370
- $permissions['site'] = array(
371
- 'icon-class' => 'dashicons dashicons-admin-settings',
372
- 'label' => $fs->get_text_inline( 'Your Site Overview', 'permissions-site' ),
373
- 'desc' => $fs->get_text_inline( 'Site URL, WP version, PHP info', 'permissions-site_desc' ),
374
- 'priority' => 10,
375
- );
376
-
377
- $permissions['notices'] = array(
378
- 'icon-class' => 'dashicons dashicons-testimonial',
379
- 'label' => $fs->get_text_inline( 'Admin Notices', 'permissions-admin-notices' ),
380
- 'desc' => $fs->get_text_inline( 'Updates, announcements, marketing, no spam', 'permissions-newsletter_desc' ),
381
- 'priority' => 13,
382
- );
 
 
 
383
 
384
- $permissions['events'] = array(
385
- 'icon-class' => 'dashicons dashicons-admin-' . ( $fs->is_plugin() ? 'plugins' : 'appearance' ),
386
- 'label' => sprintf( $fs->get_text_inline( 'Current %s Events', 'permissions-events' ), ucfirst( $fs->get_module_type() ) ),
387
- 'desc' => $fs->get_text_inline( 'Activation, deactivation and uninstall', 'permissions-events_desc' ),
388
- 'priority' => 20,
389
- );
 
390
 
391
  // Add newsletter permissions if enabled.
392
  if ( $is_gdpr_required || $fs->is_permission_requested( 'newsletter' ) ) {
@@ -398,14 +400,15 @@
398
  );
399
  }
400
 
401
- $permissions['extensions'] = array(
402
  'icon-class' => 'dashicons dashicons-menu',
403
- 'label' => $fs->get_text_inline( 'Plugins & Themes', 'permissions-extensions' ),
 
404
  'desc' => $fs->get_text_inline( 'Title, slug, version, and is active', 'permissions-extensions_desc' ),
405
  'priority' => 25,
406
  'optional' => true,
407
- 'default' => $fs->apply_filters( 'permission_extensions_default', true )
408
- );
409
 
410
  // Allow filtering of the permissions list.
411
  $permissions = $fs->apply_filters( 'permission_list', $permissions );
@@ -417,13 +420,15 @@
417
  <div class="fs-permissions">
418
  <?php if ( $require_license_key ) : ?>
419
  <p class="fs-license-sync-disclaimer"><?php
420
- echo sprintf(
421
- fs_esc_html_inline( 'The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license.', 'license-sync-disclaimer', $slug ),
422
  $fs->get_module_label( true ),
423
- $freemius_link
 
424
  ) ?></p>
425
- <?php endif ?>
426
  <a class="fs-trigger" href="#" tabindex="1"><?php fs_esc_html_echo_inline( 'What permissions are being granted?', 'what-permissions', $slug ) ?></a>
 
427
  <ul><?php
428
  foreach ( $permissions as $id => $permission ) : ?>
429
  <li id="fs-permission-<?php echo esc_attr( $id ); ?>"
@@ -436,7 +441,7 @@
436
  <?php endif ?>
437
 
438
  <div class="fs-permission-description">
439
- <span><?php echo esc_html( $permission['label'] ); ?></span>
440
 
441
  <p><?php echo esc_html( $permission['desc'] ); ?></p>
442
  </div>
@@ -702,9 +707,16 @@
702
  var ajaxOptin = ( requireLicenseKey || isNetworkActive );
703
 
704
  $form.on('submit', function () {
705
- var isExtensionsTrackingAllowed = $( '#fs-permission-extensions .fs-switch' ).hasClass( 'fs-on' );
706
-
707
- $( 'input[name=is_extensions_tracking_allowed]' ).val( isExtensionsTrackingAllowed ? 1 : 0 );
 
 
 
 
 
 
 
708
 
709
  /**
710
  * @author Vova Feldman (@svovaf)
181
 
182
  $message = $fs->apply_filters(
183
  'connect-message_on-premium',
184
+ sprintf( fs_text_inline( 'Welcome to %s! To get started, please enter your license key:', 'thanks-for-purchasing', $slug ), '<b>' . $fs->get_plugin_name() . '</b>' ),
 
 
 
 
 
185
  $first_name,
186
  $fs->get_plugin_name()
187
  );
342
  } ?>><?php echo esc_html( $button_label ) ?></button>
343
  </form>
344
  <?php endif ?>
345
+ <?php if ( $require_license_key ) : ?>
346
+ <a id="license_issues_link" href="<?php echo $fs->apply_filters( 'known_license_issues_url', 'https://freemius.com/help/documentation/wordpress-sdk/license-activation-issues/' ) ?>" target="_blank"><?php fs_esc_html_echo_inline( 'License issues?', 'license-issues', $slug ) ?></a>
347
+ <?php endif ?>
348
  </div><?php
349
 
350
  // Set core permission list items.
365
  );
366
  }
367
 
368
+ $permissions['site'] = array(
369
+ 'icon-class' => 'dashicons dashicons-admin-settings',
370
+ 'tooltip' => ( $require_license_key ? sprintf( $fs->get_text_inline( 'So you can manage and control your license remotely from the User Dashboard.', 'permissions-site_tooltip' ), $fs->get_module_type() ) : '' ),
371
+ 'label' => $fs->get_text_inline( 'Your Site Overview', 'permissions-site' ),
372
+ 'desc' => $fs->get_text_inline( 'Site URL, WP version, PHP info', 'permissions-site_desc' ),
373
+ 'priority' => 10,
374
+ );
375
+
376
+ if ( ! $require_license_key ) {
377
+ $permissions['notices'] = array(
378
+ 'icon-class' => 'dashicons dashicons-testimonial',
379
+ 'label' => $fs->get_text_inline( 'Admin Notices', 'permissions-admin-notices' ),
380
+ 'desc' => $fs->get_text_inline( 'Updates, announcements, marketing, no spam', 'permissions-newsletter_desc' ),
381
+ 'priority' => 13,
382
+ );
383
+ }
384
 
385
+ $permissions['events'] = array(
386
+ 'icon-class' => 'dashicons dashicons-admin-' . ( $fs->is_plugin() ? 'plugins' : 'appearance' ),
387
+ 'tooltip' => ( $require_license_key ? sprintf( $fs->get_text_inline( 'So you can reuse the license when the %s is no longer active.', 'permissions-events_tooltip' ), $fs->get_module_type() ) : '' ),
388
+ 'label' => sprintf( $fs->get_text_inline( 'Current %s Status', 'permissions-events' ), ucfirst( $fs->get_module_type() ) ),
389
+ 'desc' => $fs->get_text_inline( 'Active, deactivated, or uninstalled', 'permissions-events_desc' ),
390
+ 'priority' => 20,
391
+ );
392
 
393
  // Add newsletter permissions if enabled.
394
  if ( $is_gdpr_required || $fs->is_permission_requested( 'newsletter' ) ) {
400
  );
401
  }
402
 
403
+ $permissions['extensions'] = array(
404
  'icon-class' => 'dashicons dashicons-menu',
405
+ 'label' => $fs->get_text_inline( 'Plugins & Themes', 'permissions-extensions' ) . ( $require_license_key ? ' (' . $fs->get_text_inline( 'optional' ) . ')' : '' ),
406
+ 'tooltip' => $fs->get_text_inline( 'To help us troubleshoot any potential issues that may arise from other plugin or theme conflicts.', 'permissions-events_tooltip' ),
407
  'desc' => $fs->get_text_inline( 'Title, slug, version, and is active', 'permissions-extensions_desc' ),
408
  'priority' => 25,
409
  'optional' => true,
410
+ 'default' => $fs->apply_filters( 'permission_extensions_default', ! $require_license_key )
411
+ );
412
 
413
  // Allow filtering of the permissions list.
414
  $permissions = $fs->apply_filters( 'permission_list', $permissions );
420
  <div class="fs-permissions">
421
  <?php if ( $require_license_key ) : ?>
422
  <p class="fs-license-sync-disclaimer"><?php
423
+ echo sprintf(
424
+ fs_esc_html_inline( 'The %1$s will periodically send %2$s to %3$s for security & feature updates delivery, and license management.', 'license-sync-disclaimer', $slug ),
425
  $fs->get_module_label( true ),
426
+ sprintf('<a class="fs-trigger" href="#" tabindex="1">%s</a>', fs_esc_html_inline('diagnostic data', 'send-data')),
427
+ '<a class="fs-tooltip-trigger' . (is_rtl() ? ' rtl' : '') . '" href="' . $freemius_site_url . '" target="_blank" rel="noopener" tabindex="1">freemius.com <i class="dashicons dashicons-editor-help" style="text-decoration: none;"><span class="fs-tooltip" style="width: 170px">' . $fs->get_text_inline( 'Freemius is our licensing and software updates engine', 'permissions-extensions_desc' ) . '</span></i></a>'
428
  ) ?></p>
429
+ <?php else : ?>
430
  <a class="fs-trigger" href="#" tabindex="1"><?php fs_esc_html_echo_inline( 'What permissions are being granted?', 'what-permissions', $slug ) ?></a>
431
+ <?php endif ?>
432
  <ul><?php
433
  foreach ( $permissions as $id => $permission ) : ?>
434
  <li id="fs-permission-<?php echo esc_attr( $id ); ?>"
441
  <?php endif ?>
442
 
443
  <div class="fs-permission-description">
444
+ <span<?php if ( ! empty($permission['tooltip']) ) : ?> class="fs-tooltip-trigger"<?php endif ?>><?php echo esc_html( $permission['label'] ); ?><?php if ( ! empty($permission['tooltip']) ) : ?><i class="dashicons dashicons-editor-help"><span class="fs-tooltip" style="width: 200px"><?php echo $permission['tooltip'] ?></span></i><?php endif ?></span>
445
 
446
  <p><?php echo esc_html( $permission['desc'] ); ?></p>
447
  </div>
707
  var ajaxOptin = ( requireLicenseKey || isNetworkActive );
708
 
709
  $form.on('submit', function () {
710
+ var $extensionsPermission = $('#fs-permission-extensions .fs-switch'),
711
+ isExtensionsTrackingAllowed = ($extensionsPermission.length > 0) ?
712
+ $extensionsPermission.hasClass('fs-on') :
713
+ null;
714
+
715
+ if (null === isExtensionsTrackingAllowed) {
716
+ $('input[name=is_extensions_tracking_allowed]').remove();
717
+ } else {
718
+ $('input[name=is_extensions_tracking_allowed]').val(isExtensionsTrackingAllowed ? 1 : 0);
719
+ }
720
 
721
  /**
722
  * @author Vova Feldman (@svovaf)
freemius/templates/forms/license-activation.php CHANGED
@@ -115,13 +115,15 @@ HTML;
115
  * @var FS_Plugin_License $license
116
  */
117
  foreach ( $available_licenses as $license ) {
 
 
118
  $label = sprintf(
119
  "%s-Site %s License - %s",
120
  ( 1 == $license->quota ?
121
  'Single' :
122
  ( $license->is_unlimited() ? 'Unlimited' : $license->quota )
123
  ),
124
- $fs->_get_plan_by_id( $license->plan_id )->title,
125
  $license->get_html_escaped_masked_secret_key()
126
  );
127
 
115
  * @var FS_Plugin_License $license
116
  */
117
  foreach ( $available_licenses as $license ) {
118
+ $plan = $fs->_get_plan_by_id( $license->plan_id );
119
+
120
  $label = sprintf(
121
  "%s-Site %s License - %s",
122
  ( 1 == $license->quota ?
123
  'Single' :
124
  ( $license->is_unlimited() ? 'Unlimited' : $license->quota )
125
  ),
126
+ ( is_object( $plan ) ? $plan->title : '' ),
127
  $license->get_html_escaped_masked_secret_key()
128
  );
129
 
includes/class-wp-mobile-menu-core.php CHANGED
@@ -556,7 +556,7 @@ class WP_Mobile_Menu_Core
556
  $current_menu = '';
557
  }
558
 
559
- if ( has_nav_menu( $menu . '-wp-mobile-menu' ) ) {
560
  $current_menu = $menu . '-wp-mobile-menu';
561
  $menu_param = 'theme_location';
562
  } else {
@@ -667,7 +667,7 @@ class WP_Mobile_Menu_Core
667
  }
668
 
669
  /**
670
- * Load the Find elements tool.
671
  */
672
  public function find_elements_mobmenu()
673
  {
556
  $current_menu = '';
557
  }
558
 
559
+ if ( has_nav_menu( $menu . '-wp-mobile-menu' ) && $current_menu === '' ) {
560
  $current_menu = $menu . '-wp-mobile-menu';
561
  $menu_param = 'theme_location';
562
  } else {
667
  }
668
 
669
  /**
670
+ * Load the Finde elements tool.
671
  */
672
  public function find_elements_mobmenu()
673
  {
includes/class-wp-mobile-menu-options.php CHANGED
@@ -44,23 +44,6 @@ class WP_Mobile_Menu_Options
44
  add_action( 'tf_create_options', array( $this, 'create_plugin_options' ) );
45
  }
46
 
47
- private function scan_alert()
48
- {
49
- // For sample purposes, we set this to 1. But typically, you should have another
50
- // area in your plugin that increments this number to display a notification on the menu.
51
- $num_notifications = 0;
52
- // Do all processment to find issues and create alerts
53
- if ( $num_notifications > 0 ) {
54
- return sprintf(
55
- '<span class="update-plugins count-%s"><span class="plugin-count" aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></span>',
56
- $num_notifications,
57
- $num_notifications,
58
- sprintf( _n( '%s notification', '%s notifications', $num_notifications ), $num_notifications )
59
- );
60
- }
61
- return '';
62
- }
63
-
64
  /**
65
  *
66
  * Create Plugin options.
@@ -70,6 +53,7 @@ class WP_Mobile_Menu_Options
70
  public function create_plugin_options()
71
  {
72
  global $mm_fs ;
 
73
  $prefix = '';
74
  $menus = get_terms( 'nav_menu', array(
75
  'hide_empty' => true,
@@ -106,95 +90,51 @@ class WP_Mobile_Menu_Options
106
  'search' => 'Search',
107
  'left-menu' => 'Left Menu',
108
  );
 
109
  // Create my admin options panel.
110
  $panel = $titan->createAdminPanel( array(
111
  'name' => 'Mobile Menu Options',
112
- 'title' => __( 'Mobile Menu Options', 'mobile-menu' ) . $this->scan_alert(),
113
  'icon' => 'dashicons-smartphone',
114
  ) );
115
- // Premium options.
116
- // Create options in My Meta Box.
117
- $mobmenu_metabox = $titan->createMetaBox( array(
118
- 'name' => __( 'WP Mobile Menu Meta options', 'mobile-menu' ),
119
- 'post_type' => array( 'page', 'post' ),
120
- ) );
121
- global $mm_fs ;
122
- // Create WP Mobile Menu Meta Box options.
123
- $custom_html = '<style>.dashicons-yes {color:#008000;font-size: 3em;padding-right: 20px;margin-top: -10px;}';
124
- $custom_html .= '.mm-button-business-upgrade {margin-top: 20px!important;background-color: #FF015C!important;border-color: #fff;color: #fff!important;margin: 20px 10px 20px 10px;text-transform: uppercase;min-height: 35px;padding-top: 5px;border-radius: 6px;}';
125
- $custom_html .= '</style><p>The features below are available in the Premium versions of WP Mobile Menu.</p>';
126
- $custom_html .= '<p><span class="dashicons dashicons-yes"></span><strong>' . __( 'Alternative Left Menu', 'mobile-menu' ) . '</strong></p>';
127
- $custom_html .= '<p><span class="dashicons dashicons-yes"></span><strong>' . __( 'Alternative Right Menu', 'mobile-menu' ) . '</strong></p>';
128
- $custom_html .= '<p><span class="dashicons dashicons-yes"></span><strong>' . __( 'Alternative Footer Menu', 'mobile-menu' ) . '</strong></p>';
129
- $custom_html .= '<p><span class="dashicons dashicons-yes"></span><strong>' . __( 'Use page title', 'mobile-menu' ) . '</strong></p>';
130
- $custom_html .= '<p><a href="' . $mm_fs->get_upgrade_url() . '&cta=metabox-settings" class="button mm-button-business-upgrade">' . __( 'Upgrade Now!', 'mobile-menu' ) . '</a></p>';
131
- $custom_html .= '</div></div>';
132
- // Page Metabox Upgrade Content.
133
- $mobmenu_metabox->createOption( array(
134
- 'name' => '',
135
- 'type' => 'custom',
136
- 'custom' => $custom_html,
137
- ) );
138
  // Only proceed if we are in the plugin page.
139
 
140
  if ( !is_admin() || isset( $_GET['page'] ) && 'mobile-menu-options' === sanitize_text_field( $_GET['page'] ) ) {
141
  // Create General Options panel.
142
- $general_tab = $panel->createTab( array(
143
  'name' => __( 'General Options', 'mobile-menu' ),
144
  ) );
145
- // Create Header Options panel.
146
- $header_tab = $panel->createTab( array(
147
  'name' => __( 'Header', 'mobile-menu' ),
148
  ) );
149
- $this->create_footer_options_upsell( $panel, $titan );
150
- // Create Left Menu Options panel.
151
- $left_menu_tab = $panel->createTab( array(
 
152
  'name' => __( 'Left Menu', 'mobile-menu' ),
153
  ) );
154
- // Create Right Menu Options panel.
155
- $right_menu_tab = $panel->createTab( array(
156
  'name' => __( 'Right Menu', 'mobile-menu' ),
157
  ) );
158
- // Create Woocommerce options upsell.
159
- $this->create_woocommerce_options_upsell( $panel, $titan );
160
- // Create Color Options panel.
161
- $colors_tab = $panel->createTab( array(
162
- 'name' => __( 'Colors', 'mobile-menu' ),
163
- ) );
164
- // Create Fonts panel.
165
- $fonts_tab = $panel->createTab( array(
166
- 'name' => __( 'Fonts', 'mobile-menu' ),
167
- ) );
168
- // Create Documentation panel.
169
- $documentation_tab = $panel->createTab( array(
170
- 'name' => __( 'Documentation', 'mobile-menu' ),
171
- ) );
172
- // Check if it's HTTPS.
173
-
174
- if ( is_ssl() ) {
175
- $doc_url = 'https://wpmobilemenu.com/documentation-iframe/';
176
- } else {
177
- $doc_url = 'http://wpmobilemenu.com/documentation-iframe/';
178
- }
179
-
180
- // Documentation IFrame.
181
- $documentation_tab->createOption( array(
182
- 'type' => 'iframe',
183
- 'url' => $doc_url,
184
  ) );
185
- $general_tab->createOption( array(
186
- 'name' => __( 'Main Options', 'mobile-menu' ),
187
- 'type' => 'heading',
188
  ) );
 
 
 
 
189
  // Enable/Disable Left Header Menu.
190
  $general_tab->createOption( array(
191
  'name' => __( 'Enable Left Menu', 'mobile-menu' ),
192
  'id' => 'enable_left_menu',
193
  'type' => 'enable',
194
  'default' => true,
195
- 'desc' => __( 'Enable or disable the WP Mobile Menu Left Menu.', 'mobile-menu' ),
196
- 'enabled' => __( 'On', 'mobile-menu' ),
197
- 'disabled' => __( 'Off', 'mobile-menu' ),
198
  ) );
199
  // Left Menu.
200
  $general_tab->createOption( array(
@@ -204,6 +144,7 @@ class WP_Mobile_Menu_Options
204
  'desc' => __( 'Select the menu that will open in the left side.', 'mobile-menu' ),
205
  'options' => $menus_options,
206
  'default' => $titan->getOption( 'left_menu' ),
 
207
  ) );
208
  // Enable/Disable Right Header Menu.
209
  $general_tab->createOption( array(
@@ -211,9 +152,9 @@ class WP_Mobile_Menu_Options
211
  'id' => 'enable_right_menu',
212
  'type' => 'enable',
213
  'default' => false,
214
- 'desc' => __( 'Enable or disable the WP Mobile Menu without deactivate the plugin.', 'mobile-menu' ),
215
- 'enabled' => __( 'On', 'mobile-menu' ),
216
- 'disabled' => __( 'Off', 'mobile-menu' ),
217
  ) );
218
  // Right Menu.
219
  $general_tab->createOption( array(
@@ -223,10 +164,7 @@ class WP_Mobile_Menu_Options
223
  'desc' => __( 'Select the menu that will open in the right side.', 'mobile-menu' ),
224
  'options' => $menus_options,
225
  'default' => $titan->getOption( 'right_menu' ),
226
- ) );
227
- $general_tab->createOption( array(
228
- 'name' => __( 'Visibility Options', 'mobile-menu' ),
229
- 'type' => 'heading',
230
  ) );
231
  // Width trigger.
232
  $general_tab->createOption( array(
@@ -238,10 +176,12 @@ class WP_Mobile_Menu_Options
238
  'max' => '5000',
239
  'min' => '479',
240
  'unit' => 'px',
 
241
  ) );
242
  $general_tab->createOption( array(
243
- 'type' => 'note',
244
- 'desc' => __( 'The Width trigger field is very important because it determines the width that will show the Mobile Menu. If you want it always visible set it to 5000px', 'mobile-menu' ),
 
245
  ) );
246
  // Enable/Disable only in Mobile Devices.
247
  $general_tab->createOption( array(
@@ -252,6 +192,7 @@ class WP_Mobile_Menu_Options
252
  'desc' => __( 'Enable only in Mobiles devices. This will disable the Mobile Menu Visibilty option above (using resolution width trigger).', 'mobile-menu' ),
253
  'enabled' => __( 'On', 'mobile-menu' ),
254
  'disabled' => __( 'Off', 'mobile-menu' ),
 
255
  ) );
256
  // Enable/Disable Testing Mode.
257
  $general_tab->createOption( array(
@@ -262,10 +203,7 @@ class WP_Mobile_Menu_Options
262
  'desc' => __( 'Enable only for admin users. This will disable the Mobile Menu for all the visitors of your site except the administrator users.', 'mobile-menu' ),
263
  'enabled' => __( 'On', 'mobile-menu' ),
264
  'disabled' => __( 'Off', 'mobile-menu' ),
265
- ) );
266
- $general_tab->createOption( array(
267
- 'name' => __( 'Hide Original Theme Menu', 'mobile-menu' ),
268
- 'type' => 'heading',
269
  ) );
270
  // Hide Html Elements.
271
  $general_tab->createOption( array(
@@ -273,11 +211,13 @@ class WP_Mobile_Menu_Options
273
  'id' => 'hide_elements',
274
  'type' => 'text',
275
  'default' => '',
276
- 'desc' => __( '<p>Use the Find element button and click in the elements you want to hide. When you are done hit the Save Changes button.<p> Example: .menu , #nav</p>', 'mobile-menu' ),
 
277
  ) );
278
  $general_tab->createOption( array(
279
- 'type' => 'note',
280
- 'desc' => __( 'If you somehow couldn\'t find the necessary elements using the visual tool to pick elements just create a new ticket in our <a href="https://www.wpmobilemenu.com/support-contact/?utm_source=wprepo-dash&utm_medium=user%20website&utm_campaign=hide_original_menu_help" target="_blank">support page</a> with your site url and a screenshot of the element you want to hide. We reply fast.', 'mobile-menu' ),
 
281
  ) );
282
  $general_tab->createOption( array(
283
  'name' => __( 'Hide elements by default', 'mobile-menu' ),
@@ -322,10 +262,7 @@ class WP_Mobile_Menu_Options
322
  '16',
323
  '17'
324
  ),
325
- ) );
326
- $general_tab->createOption( array(
327
- 'name' => __( 'Miscelaneous Options', 'mobile-menu' ),
328
- 'type' => 'heading',
329
  ) );
330
  // Menu Display Type.
331
  $general_tab->createOption( array(
@@ -335,6 +272,7 @@ class WP_Mobile_Menu_Options
335
  'desc' => __( 'Choose the display type for the mobile menu.', 'mobile-menu' ),
336
  'options' => $display_type,
337
  'default' => 'slideout-over',
 
338
  ) );
339
  // Automatically Close Sub Menus.
340
  $general_tab->createOption( array(
@@ -345,6 +283,7 @@ class WP_Mobile_Menu_Options
345
  'default' => false,
346
  'enabled' => __( 'On', 'mobile-menu' ),
347
  'disabled' => __( 'Off', 'mobile-menu' ),
 
348
  ) );
349
  // Menu Border Style.
350
  $general_tab->createOption( array(
@@ -356,6 +295,7 @@ class WP_Mobile_Menu_Options
356
  'max' => '5',
357
  'min' => '0',
358
  'unit' => 'px',
 
359
  ) );
360
  // Close Menu Icon Font.
361
  $general_tab->createOption( array(
@@ -364,6 +304,7 @@ class WP_Mobile_Menu_Options
364
  'type' => 'text',
365
  'desc' => __( '<div class="mobmenu-icon-holder"></div><a href="#" class="mobmenu-icon-picker button">Select menu icon</a>', 'mobile-menu' ),
366
  'default' => 'cancel-1',
 
367
  ) );
368
  // Close Menu Icon Font Size.
369
  $general_tab->createOption( array(
@@ -375,6 +316,7 @@ class WP_Mobile_Menu_Options
375
  'max' => '100',
376
  'min' => '5',
377
  'unit' => 'px',
 
378
  ) );
379
  // Submenu Open Icon Font.
380
  $general_tab->createOption( array(
@@ -383,6 +325,7 @@ class WP_Mobile_Menu_Options
383
  'type' => 'text',
384
  'desc' => __( '<div class="mobmenu-icon-holder"></div><a href="#" class="mobmenu-icon-picker button">Select menu icon</a>', 'mobile-menu' ),
385
  'default' => 'down-open',
 
386
  ) );
387
  // Submenu Close Icon Font.
388
  $general_tab->createOption( array(
@@ -391,6 +334,7 @@ class WP_Mobile_Menu_Options
391
  'type' => 'text',
392
  'desc' => __( '<div class="mobmenu-icon-holder"></div><a href="#" class="mobmenu-icon-picker button">Select menu icon</a>', 'mobile-menu' ),
393
  'default' => 'up-open',
 
394
  ) );
395
  // Submenu Icon Font Size.
396
  $general_tab->createOption( array(
@@ -402,10 +346,7 @@ class WP_Mobile_Menu_Options
402
  'max' => '100',
403
  'min' => '0',
404
  'unit' => 'px',
405
- ) );
406
- $general_tab->createOption( array(
407
- 'name' => __( 'Advanced Options', 'mobile-menu' ),
408
- 'type' => 'heading',
409
  ) );
410
  // Automatically Close Sub Menus.
411
  $general_tab->createOption( array(
@@ -416,6 +357,7 @@ class WP_Mobile_Menu_Options
416
  'default' => false,
417
  'enabled' => __( 'On', 'mobile-menu' ),
418
  'disabled' => __( 'Off', 'mobile-menu' ),
 
419
  ) );
420
  // Sticky Html Elements.
421
  $general_tab->createOption( array(
@@ -424,46 +366,42 @@ class WP_Mobile_Menu_Options
424
  'type' => 'text',
425
  'default' => '',
426
  'desc' => __( '<p>If you are having issues with sticky elements that dont assume a sticky behaviour, enter the ids or class name that identify that element.</p>', 'mobile-menu' ),
 
427
  ) );
428
  // Custom css.
429
  $general_tab->createOption( array(
430
- 'name' => __( 'Custom CSS', 'mobile-menu' ),
431
- 'id' => 'custom_css',
432
- 'type' => 'code',
433
- 'desc' => __( 'Put your custom CSS rules here', 'mobile-menu' ),
434
- 'lang' => 'css',
 
435
  ) );
436
  // Custom js.
437
  $general_tab->createOption( array(
438
- 'name' => __( 'Custom JS', 'mobile-menu' ),
439
- 'id' => 'custom_js',
440
- 'type' => 'code',
441
- 'desc' => __( 'Put your custom JS rules here', 'mobile-menu' ),
442
- 'lang' => 'javascript',
443
- ) );
444
- $general_tab->createOption( array(
445
- 'name' => __( 'Import and Export', 'mobile-menu' ),
446
- 'type' => 'heading',
447
  ) );
448
  // Export settings.
449
  $general_tab->createOption( array(
450
  'name' => __( 'Export Settings', 'mobile-menu' ),
451
  'type' => 'custom',
452
  'custom' => '<button class="button button-secondary export-mobile-menu-settings">' . __( 'Export', 'mobile-menu' ) . '</button>',
 
453
  ) );
454
  // Import settings.
455
  $general_tab->createOption( array(
456
  'name' => __( 'Import Settings', 'mobile-menu' ),
457
  'type' => 'custom',
458
  'custom' => '<button class="button button-secondary import-mobile-menu-settings">' . __( 'Import', 'mobile-menu' ) . '</button>',
459
- ) );
460
- // Header Main Options.
461
- $header_tab->createOption( array(
462
- 'name' => __( 'Main options', 'mobile-menu' ),
463
- 'type' => 'heading',
464
  ) );
465
  // Enable/Disable Sticky Header.
466
- $header_tab->createOption( array(
467
  'name' => __( 'Sticky Header', 'mobile-menu' ),
468
  'id' => 'enabled_sticky_header',
469
  'type' => 'enable',
@@ -471,9 +409,10 @@ class WP_Mobile_Menu_Options
471
  'desc' => __( 'Choose if you want to have the Header Fixed or scrolling with the content.', 'mobile-menu' ),
472
  'enabled' => __( 'Yes', 'mobile-menu' ),
473
  'disabled' => __( 'No', 'mobile-menu' ),
 
474
  ) );
475
  // Enable/Disable Naked Header.
476
- $header_tab->createOption( array(
477
  'name' => __( 'Naked Header', 'mobile-menu' ),
478
  'id' => 'enabled_naked_header',
479
  'type' => 'enable',
@@ -481,9 +420,10 @@ class WP_Mobile_Menu_Options
481
  'desc' => __( 'Choose if you want to display a naked header with no background color(transparent).', 'mobile-menu' ),
482
  'enabled' => __( 'Yes', 'mobile-menu' ),
483
  'disabled' => __( 'No', 'mobile-menu' ),
 
484
  ) );
485
  // Enable/Disable Logo Url.
486
- $header_tab->createOption( array(
487
  'name' => __( 'Disable Logo/Text', 'mobile-menu' ),
488
  'id' => 'disabled_logo_text',
489
  'type' => 'enable',
@@ -491,13 +431,10 @@ class WP_Mobile_Menu_Options
491
  'desc' => __( 'Choose if you want to disable the logo/text so it will only display the menu icons in the header.', 'mobile-menu' ),
492
  'enabled' => __( 'Yes', 'mobile-menu' ),
493
  'disabled' => __( 'No', 'mobile-menu' ),
494
- ) );
495
- $header_tab->createOption( array(
496
- 'name' => __( 'Header options', 'mobile-menu' ),
497
- 'type' => 'heading',
498
  ) );
499
  // Header Shadow.
500
- $header_tab->createOption( array(
501
  'name' => __( 'Header Shadow.', 'mobile-menu' ),
502
  'id' => 'header_shadow',
503
  'type' => 'enable',
@@ -505,9 +442,10 @@ class WP_Mobile_Menu_Options
505
  'desc' => __( 'Choose if you want to enable the header shadow at the bottom of the header.', 'mobile-menu' ),
506
  'enabled' => __( 'Yes', 'mobile-menu' ),
507
  'disabled' => __( 'No', 'mobile-menu' ),
 
508
  ) );
509
  // Header Height.
510
- $header_tab->createOption( array(
511
  'name' => __( 'Header Height', 'mobile-menu' ),
512
  'id' => 'header_height',
513
  'type' => 'number',
@@ -516,17 +454,19 @@ class WP_Mobile_Menu_Options
516
  'max' => '500',
517
  'min' => '20',
518
  'unit' => 'px',
 
519
  ) );
520
  // Header Text.
521
- $header_tab->createOption( array(
522
  'name' => __( 'Header Text', 'mobile-menu' ),
523
  'id' => 'header_text',
524
  'type' => 'text',
525
  'desc' => __( 'Enter the desired text for the Mobile Header. If not specified it will use the site title.', 'mobile-menu' ),
526
  'default' => '',
 
527
  ) );
528
  // Header Text Font Size.
529
- $fonts_tab->createOption( array(
530
  'name' => __( 'Header Text Font Size', 'mobile-menu' ),
531
  'id' => 'header_font_size',
532
  'type' => 'number',
@@ -535,9 +475,10 @@ class WP_Mobile_Menu_Options
535
  'max' => '100',
536
  'min' => '5',
537
  'unit' => 'px',
 
538
  ) );
539
  // Header Logo/Text Alignment.
540
- $header_tab->createOption( array(
541
  'name' => 'Header Logo/Text Alignment',
542
  'id' => 'header_text_align',
543
  'type' => 'select',
@@ -548,9 +489,10 @@ class WP_Mobile_Menu_Options
548
  'right' => __( 'Right', 'mobile-menu' ),
549
  ),
550
  'default' => 'center',
 
551
  ) );
552
  // Header Logo/Text Left Margin.
553
- $header_tab->createOption( array(
554
  'name' => __( 'Header Logo/Text Left Margin', 'mobile-menu' ),
555
  'id' => 'header_text_left_margin',
556
  'type' => 'number',
@@ -559,9 +501,10 @@ class WP_Mobile_Menu_Options
559
  'max' => '200',
560
  'min' => '0',
561
  'unit' => 'px',
 
562
  ) );
563
  // Header Logo/Text Right Margin.
564
- $header_tab->createOption( array(
565
  'name' => __( 'Header Logo/Text Right Margin', 'mobile-menu' ),
566
  'id' => 'header_text_right_margin',
567
  'type' => 'number',
@@ -570,20 +513,7 @@ class WP_Mobile_Menu_Options
570
  'max' => '200',
571
  'min' => '0',
572
  'unit' => 'px',
573
- ) );
574
- $header_tab->createOption( array(
575
- 'name' => __( 'Logo options', 'mobile-menu' ),
576
- 'type' => 'heading',
577
- ) );
578
- // Enable/Disable Site Logo.
579
- $header_tab->createOption( array(
580
- 'name' => __( 'Site Logo', 'mobile-menu' ),
581
- 'id' => 'enabled_logo',
582
- 'type' => 'enable',
583
- 'default' => false,
584
- 'desc' => __( 'Choose if you want to display an image has logo or text instead.', 'mobile-menu' ),
585
- 'enabled' => __( 'Logo', 'mobile-menu' ),
586
- 'disabled' => __( 'Text', 'mobile-menu' ),
587
  ) );
588
  $header_branding = array(
589
  'logo' => __( 'Logo', 'mobile-menu' ),
@@ -597,24 +527,26 @@ class WP_Mobile_Menu_Options
597
  }
598
 
599
  // Use the page title in the Header or Header Banner(global Option).
600
- $header_tab->createOption( array(
601
  'name' => __( 'Site Logo', 'mobile-menu' ),
602
  'id' => 'header_branding',
603
  'type' => 'select',
604
  'desc' => __( 'Chose the Header Branding ( Logo/Text ).', 'mobile-menu' ),
605
  'options' => $header_branding,
606
  'default' => $default_header_branding,
 
607
  ) );
608
  // Site Logo Image.
609
- $header_tab->createOption( array(
610
  'name' => __( 'Logo', 'mobile-menu' ),
611
  'id' => 'logo_img',
612
  'type' => 'upload',
613
  'desc' => __( 'Upload your logo image', 'mobile-menu' ),
614
  'default' => '',
 
615
  ) );
616
  // Header Height.
617
- $header_tab->createOption( array(
618
  'name' => __( 'Logo Height', 'mobile-menu' ),
619
  'id' => 'logo_height',
620
  'type' => 'number',
@@ -623,17 +555,19 @@ class WP_Mobile_Menu_Options
623
  'max' => '500',
624
  'min' => '0',
625
  'unit' => 'px',
 
626
  ) );
627
  // Site Logo Retina Image.
628
- $header_tab->createOption( array(
629
  'name' => __( 'Retina Logo', 'mobile-menu' ),
630
  'id' => 'logo_img_retina',
631
  'type' => 'upload',
632
  'desc' => __( 'Upload your logo image for retina devices', 'mobile-menu' ),
633
  'default' => '',
 
634
  ) );
635
  // Enable/Disable Logo Url.
636
- $header_tab->createOption( array(
637
  'name' => __( 'Disable Logo URL ', 'mobile-menu' ),
638
  'id' => 'disabled_logo_url',
639
  'type' => 'enable',
@@ -641,17 +575,19 @@ class WP_Mobile_Menu_Options
641
  'desc' => __( 'Choose if you want to disable the logo url to avoid being redirect to the homepage or alternative home url when touching the header logo.', 'mobile-menu' ),
642
  'enabled' => __( 'Yes', 'mobile-menu' ),
643
  'disabled' => __( 'No', 'mobile-menu' ),
 
644
  ) );
645
  // Alternative Site URL.
646
- $header_tab->createOption( array(
647
  'name' => __( 'Alternative Logo URL', 'mobile-menu' ),
648
  'id' => 'logo_url',
649
  'type' => 'text',
650
  'desc' => __( 'Enter you alternative logo URL. If you leave it blank it will use the Site URL.', 'mobile-menu' ),
651
  'default' => '',
 
652
  ) );
653
  // Logo/text Top Margin.
654
- $header_tab->createOption( array(
655
  'name' => __( 'Logo/Text Top Margin', 'mobile-menu' ),
656
  'id' => 'logo_top_margin',
657
  'type' => 'number',
@@ -660,6 +596,7 @@ class WP_Mobile_Menu_Options
660
  'max' => '450',
661
  'min' => '0',
662
  'unit' => 'px',
 
663
  ) );
664
  $def_value = $titan->getOption( 'header_font_size' );
665
 
@@ -669,7 +606,7 @@ class WP_Mobile_Menu_Options
669
  $def_value = '';
670
  }
671
 
672
- $fonts_tab->createOption( array(
673
  'name' => __( 'Header Menu Font', 'mobile-menu' ),
674
  'id' => 'header_menu_font',
675
  'type' => 'font',
@@ -686,13 +623,10 @@ class WP_Mobile_Menu_Options
686
  'font-family' => 'Dosis',
687
  'font-size' => $def_value,
688
  ),
689
- ) );
690
- $left_menu_tab->createOption( array(
691
- 'name' => __( 'Menu Icon', 'mobile-menu' ),
692
- 'type' => 'heading',
693
  ) );
694
  // Click Menu Parent link to open Sub menu.
695
- $left_menu_tab->createOption( array(
696
  'name' => __( 'Parent Link open submenu', 'mobile-menu' ),
697
  'id' => 'left_menu_parent_link_submenu',
698
  'type' => 'enable',
@@ -700,6 +634,7 @@ class WP_Mobile_Menu_Options
700
  'desc' => __( 'Choose if you want to open the submenu by click in the Parent Menu item.', 'mobile-menu' ),
701
  'enabled' => __( 'Yes', 'mobile-menu' ),
702
  'disabled' => __( 'No', 'mobile-menu' ),
 
703
  ) );
704
 
705
  if ( true === $titan->getOption( 'left_menu_icon_opt' ) ) {
@@ -709,24 +644,26 @@ class WP_Mobile_Menu_Options
709
  }
710
 
711
  // Icon Image/text Option.
712
- $left_menu_tab->createOption( array(
713
  'name' => __( 'Icon Type', 'mobile-menu' ),
714
  'id' => 'left_menu_icon_new',
715
  'type' => 'select',
716
  'default' => $icon_type,
717
  'desc' => __( 'Choose if you want to display an image, icon or an animated icon.', 'mobile-menu' ),
718
  'options' => $icon_types,
 
719
  ) );
720
  // Left Menu Icon Font.
721
- $left_menu_tab->createOption( array(
722
  'name' => __( 'Icon Font', 'mobile-menu' ),
723
  'id' => 'left_menu_icon_font',
724
  'type' => 'text',
725
  'desc' => __( '<div class="mobmenu-icon-holder"></div><a href="#" class="mobmenu-icon-picker button">Select menu icon</a>', 'mobile-menu' ),
726
  'default' => 'menu',
 
727
  ) );
728
  // Left Menu Icon Font Size.
729
- $left_menu_tab->createOption( array(
730
  'name' => __( 'Icon Font Size', 'mobile-menu' ),
731
  'id' => 'left_icon_font_size',
732
  'type' => 'number',
@@ -735,26 +672,29 @@ class WP_Mobile_Menu_Options
735
  'max' => '100',
736
  'min' => '0',
737
  'unit' => 'px',
 
738
  ) );
739
  // Left Menu Icon.
740
- $left_menu_tab->createOption( array(
741
  'name' => __( 'Icon Image', 'mobile-menu' ),
742
  'id' => 'left_menu_icon',
743
  'type' => 'upload',
744
  'placeholder' => 'Click here to select the icon',
745
  'desc' => __( 'Upload your left menu icon image', 'mobile-menu' ),
746
  'default' => 'menu',
 
747
  ) );
748
  // Text After Left Icon.
749
- $left_menu_tab->createOption( array(
750
  'name' => __( 'Text After Icon', 'mobile-menu' ),
751
  'id' => 'left_menu_text',
752
  'type' => 'text',
753
  'desc' => __( 'Enter the text that will appear after the Icon.', 'mobile-menu' ),
754
  'default' => '',
 
755
  ) );
756
  // Text After Left Icon Font Options.
757
- $fonts_tab->createOption( array(
758
  'name' => __( 'Text After Icon Font', 'mobile-menu' ),
759
  'id' => 'text_after_left_icon_font',
760
  'type' => 'font',
@@ -771,9 +711,10 @@ class WP_Mobile_Menu_Options
771
  'line-height' => '1.5em',
772
  'font-family' => 'Dosis',
773
  ),
 
774
  ) );
775
  // Icon Action Option.
776
- $left_menu_tab->createOption( array(
777
  'name' => __( 'Icon Action', 'mobile-menu' ),
778
  'id' => 'left_menu_icon_action',
779
  'type' => 'enable',
@@ -781,17 +722,19 @@ class WP_Mobile_Menu_Options
781
  'desc' => __( 'Open the Left Menu Panel or open a Link url.', 'mobile-menu' ),
782
  'enabled' => __( 'Open Menu', 'mobile-menu' ),
783
  'disabled' => __( 'Open Link Url', 'mobile-menu' ),
 
784
  ) );
785
  // Icon URL.
786
- $left_menu_tab->createOption( array(
787
  'name' => __( 'Icon Link URL', 'mobile-menu' ),
788
  'id' => 'left_icon_url',
789
  'type' => 'text',
790
  'desc' => __( 'Enter the Icon Link Url.', 'mobile-menu' ),
791
  'default' => '',
 
792
  ) );
793
  // Icon URL Target.
794
- $left_menu_tab->createOption( array(
795
  'name' => __( 'Icon Link Url Target', 'mobile-menu' ),
796
  'id' => 'left_icon_url_target',
797
  'type' => 'enable',
@@ -799,9 +742,10 @@ class WP_Mobile_Menu_Options
799
  'desc' => __( 'Choose it the link will open in the same window or in the new window.', 'mobile-menu' ),
800
  'enabled' => 'Self',
801
  'disabled' => 'Blank',
 
802
  ) );
803
  // Left Menu Icon Top Margin.
804
- $left_menu_tab->createOption( array(
805
  'name' => __( 'Icon Top Margin', 'mobile-menu' ),
806
  'id' => 'left_icon_top_margin',
807
  'type' => 'number',
@@ -810,9 +754,10 @@ class WP_Mobile_Menu_Options
810
  'max' => '450',
811
  'min' => '0',
812
  'unit' => 'px',
 
813
  ) );
814
  // Left Menu Icon Left Margin.
815
- $left_menu_tab->createOption( array(
816
  'name' => __( 'Icon Left Margin', 'mobile-menu' ),
817
  'id' => 'left_icon_left_margin',
818
  'type' => 'number',
@@ -821,20 +766,18 @@ class WP_Mobile_Menu_Options
821
  'max' => '450',
822
  'min' => '0',
823
  'unit' => 'px',
824
- ) );
825
- $left_menu_tab->createOption( array(
826
- 'name' => __( 'Left Panel options', 'mobile-menu' ),
827
- 'type' => 'heading',
828
  ) );
829
  // Left Menu Background Image.
830
- $left_menu_tab->createOption( array(
831
- 'name' => __( 'Panel Background Image', 'mobile-menu' ),
832
- 'id' => 'left_menu_bg_image',
833
- 'type' => 'upload',
834
- 'desc' => __( 'Upload your left menu background image(this will override the Background color option)', 'mobile-menu' ),
 
835
  ) );
836
  // Left Menu Background Image Opacity.
837
- $left_menu_tab->createOption( array(
838
  'name' => __( 'Panel Background Image Opacity', 'mobile-menu' ),
839
  'id' => 'left_menu_bg_opacity',
840
  'type' => 'number',
@@ -844,9 +787,10 @@ class WP_Mobile_Menu_Options
844
  'min' => '10',
845
  'step' => '10',
846
  'unit' => '%',
 
847
  ) );
848
  // Left Menu Background Image Size.
849
- $left_menu_tab->createOption( array(
850
  'name' => __( 'Panel Background Image Size', 'mobile-menu' ),
851
  'id' => 'left_menu_bg_image_size',
852
  'type' => 'upload',
@@ -861,17 +805,19 @@ class WP_Mobile_Menu_Options
861
  'unset' => __( 'Unset', 'mobile-menu' ),
862
  ),
863
  'default' => 'cover',
 
864
  ) );
865
  // Left Menu Gradient css.
866
- $left_menu_tab->createOption( array(
867
  'name' => __( 'Panel Background Gradient Css', 'mobile-menu' ),
868
  'id' => 'left_menu_bg_gradient',
869
  'type' => 'text',
870
  'desc' => __( '<a href="https://webgradients.com/" target="_blank">Click here</a> to get your desired Gradient, just press the copy button and paste in this field.', 'mobile-menu' ),
871
  'default' => '',
 
872
  ) );
873
  // Left Menu Panel Width Units.
874
- $left_menu_tab->createOption( array(
875
  'name' => __( 'Menu Panel Width Units', 'mobile-menu' ),
876
  'id' => 'left_menu_width_units',
877
  'type' => 'enable',
@@ -879,9 +825,10 @@ class WP_Mobile_Menu_Options
879
  'desc' => __( 'Choose the width units.', 'mobile-menu' ),
880
  'enabled' => 'Pixels',
881
  'disabled' => __( 'Percentage', 'mobile-menu' ),
 
882
  ) );
883
  // Left Menu Panel Width.
884
- $left_menu_tab->createOption( array(
885
  'name' => __( 'Menu Panel Width(Pixels)', 'mobile-menu' ),
886
  'id' => 'left_menu_width',
887
  'type' => 'number',
@@ -890,9 +837,10 @@ class WP_Mobile_Menu_Options
890
  'max' => '1000',
891
  'min' => '50',
892
  'unit' => 'px',
 
893
  ) );
894
  // Left Menu Panel Width.
895
- $left_menu_tab->createOption( array(
896
  'name' => __( 'Menu Panel Width(Percentage)', 'mobile-menu' ),
897
  'id' => 'left_menu_width_percentage',
898
  'type' => 'number',
@@ -901,9 +849,10 @@ class WP_Mobile_Menu_Options
901
  'max' => '90',
902
  'min' => '0',
903
  'unit' => '%',
 
904
  ) );
905
  // Left Menu Content Padding.
906
- $left_menu_tab->createOption( array(
907
  'name' => __( 'Left Menu Content Padding', 'mobile-menu' ),
908
  'id' => 'left_menu_content_padding',
909
  'type' => 'number',
@@ -913,9 +862,10 @@ class WP_Mobile_Menu_Options
913
  'min' => '0',
914
  'step' => '1',
915
  'unit' => '%',
 
916
  ) );
917
  // Left Menu Font.
918
- $fonts_tab->createOption( array(
919
  'name' => __( 'Left Menu Font', 'mobile-menu' ),
920
  'id' => 'left_menu_font',
921
  'type' => 'font',
@@ -932,14 +882,10 @@ class WP_Mobile_Menu_Options
932
  'line-height' => '1.5em',
933
  'font-family' => 'Dosis',
934
  ),
935
- ) );
936
- // Icon Heading.
937
- $right_menu_tab->createOption( array(
938
- 'name' => __( 'Menu Icon', 'mobile-menu' ),
939
- 'type' => 'heading',
940
  ) );
941
  // Click Menu Parent link to open Sub menu.
942
- $right_menu_tab->createOption( array(
943
  'name' => __( 'Parent Link open submenu', 'mobile-menu' ),
944
  'id' => 'right_menu_parent_link_submenu',
945
  'type' => 'enable',
@@ -947,6 +893,7 @@ class WP_Mobile_Menu_Options
947
  'desc' => __( 'Choose if you want to open the submenu by click in the Parent Menu item.', 'mobile-menu' ),
948
  'enabled' => __( 'Yes', 'mobile-menu' ),
949
  'disabled' => __( 'No', 'mobile-menu' ),
 
950
  ) );
951
 
952
  if ( true === $titan->getOption( 'right_menu_icon_opt' ) ) {
@@ -956,24 +903,26 @@ class WP_Mobile_Menu_Options
956
  }
957
 
958
  // Icon Image/text Option.
959
- $right_menu_tab->createOption( array(
960
  'name' => __( 'Icon Type', 'mobile-menu' ),
961
  'id' => 'right_menu_icon_new',
962
  'type' => 'select',
963
  'default' => $icon_type,
964
  'desc' => __( 'Choose if you want to display an image, icon or an animated icon.', 'mobile-menu' ),
965
  'options' => $icon_types,
 
966
  ) );
967
  // Right Menu Icon Font.
968
- $right_menu_tab->createOption( array(
969
  'name' => __( 'Icon Font', 'mobile-menu' ),
970
  'id' => 'right_menu_icon_font',
971
  'type' => 'text',
972
  'desc' => __( '<div class="mobmenu-icon-holder"></div><a href="#" class="mobmenu-icon-picker button">Select menu icon</a>', 'mobile-menu' ),
973
  'default' => 'menu',
 
974
  ) );
975
  // Right Menu Icon Font Size.
976
- $right_menu_tab->createOption( array(
977
  'name' => __( 'Icon Font Size', 'mobile-menu' ),
978
  'id' => 'right_icon_font_size',
979
  'type' => 'number',
@@ -982,25 +931,19 @@ class WP_Mobile_Menu_Options
982
  'max' => '100',
983
  'min' => '0',
984
  'unit' => 'px',
 
985
  ) );
986
  // Right Menu Icon.
987
- $right_menu_tab->createOption( array(
988
  'name' => __( 'Icon Image', 'mobile-menu' ),
989
  'id' => 'right_menu_icon',
990
  'type' => 'upload',
991
  'desc' => __( 'Upload your right menu icon image', 'mobile-menu' ),
992
  'default' => 'menu',
993
- ) );
994
- // Text Before Right Icon.
995
- $right_menu_tab->createOption( array(
996
- 'name' => __( 'Text Before Icon', 'mobile-menu' ),
997
- 'id' => 'right_menu_text',
998
- 'type' => 'text',
999
- 'desc' => __( 'Enter the text that will appear before the Icon.', 'mobile-menu' ),
1000
- 'default' => '',
1001
  ) );
1002
  // Icon Action Option.
1003
- $right_menu_tab->createOption( array(
1004
  'name' => __( 'Icon Action', 'mobile-menu' ),
1005
  'id' => 'right_menu_icon_action',
1006
  'type' => 'enable',
@@ -1008,9 +951,19 @@ class WP_Mobile_Menu_Options
1008
  'desc' => __( 'Open the Right Menu Panel or open a Link url.', 'mobile-menu' ),
1009
  'enabled' => __( 'Open Menu', 'mobile-menu' ),
1010
  'disabled' => __( 'Open Link Url', 'mobile-menu' ),
 
 
 
 
 
 
 
 
 
 
1011
  ) );
1012
  // Text Before Right Icon Font Options.
1013
- $fonts_tab->createOption( array(
1014
  'name' => __( 'Text Before Icon Font', 'mobile-menu' ),
1015
  'id' => 'text_before_right_icon_font',
1016
  'type' => 'font',
@@ -1028,17 +981,19 @@ class WP_Mobile_Menu_Options
1028
  'line-height' => '1.5em',
1029
  'font-family' => 'Dosis',
1030
  ),
 
1031
  ) );
1032
  // Icon URL.
1033
- $right_menu_tab->createOption( array(
1034
  'name' => __( 'Icon Link URL', 'mobile-menu' ),
1035
  'id' => 'right_icon_url',
1036
  'type' => 'text',
1037
  'desc' => __( 'Enter the Icon Link Url.', 'mobile-menu' ),
1038
  'default' => '',
 
1039
  ) );
1040
  // Icon URL Target.
1041
- $right_menu_tab->createOption( array(
1042
  'name' => __( 'Icon Link Url Target', 'mobile-menu' ),
1043
  'id' => 'right_icon_url_target',
1044
  'type' => 'enable',
@@ -1046,9 +1001,10 @@ class WP_Mobile_Menu_Options
1046
  'desc' => __( 'Choose it the link will open in the same window or in the new window.', 'mobile-menu' ),
1047
  'enabled' => 'Self',
1048
  'disabled' => 'Blank',
 
1049
  ) );
1050
  // Right Menu Icon Top Margin.
1051
- $right_menu_tab->createOption( array(
1052
  'name' => __( 'Icon Top Margin', 'mobile-menu' ),
1053
  'id' => 'right_icon_top_margin',
1054
  'type' => 'number',
@@ -1057,9 +1013,10 @@ class WP_Mobile_Menu_Options
1057
  'max' => '450',
1058
  'min' => '0',
1059
  'unit' => 'px',
 
1060
  ) );
1061
  // Right Menu Icon Right Margin.
1062
- $right_menu_tab->createOption( array(
1063
  'name' => __( 'Icon Right Margin', 'mobile-menu' ),
1064
  'id' => 'right_icon_right_margin',
1065
  'type' => 'number',
@@ -1068,21 +1025,18 @@ class WP_Mobile_Menu_Options
1068
  'max' => '450',
1069
  'min' => '0',
1070
  'unit' => 'px',
1071
- ) );
1072
- // Background Heading.
1073
- $right_menu_tab->createOption( array(
1074
- 'name' => __( 'Right Panel options', 'mobile-menu' ),
1075
- 'type' => 'heading',
1076
  ) );
1077
  // Right Menu Background Image.
1078
- $right_menu_tab->createOption( array(
1079
- 'name' => __( 'Panel Background Image', 'mobile-menu' ),
1080
- 'id' => 'right_menu_bg_image',
1081
- 'type' => 'upload',
1082
- 'desc' => __( 'upload your right menu background image(this will override the Background color option)', 'mobile-menu' ),
 
1083
  ) );
1084
  // Right Menu Background Image Opacity.
1085
- $right_menu_tab->createOption( array(
1086
  'name' => __( 'Panel Background Image Opacity', 'mobile-menu' ),
1087
  'id' => 'right_menu_bg_opacity',
1088
  'type' => 'number',
@@ -1092,9 +1046,10 @@ class WP_Mobile_Menu_Options
1092
  'min' => '10',
1093
  'step' => '10',
1094
  'unit' => '%',
 
1095
  ) );
1096
  // Left Menu Background Image Size.
1097
- $right_menu_tab->createOption( array(
1098
  'name' => __( 'Panel Background Image Size', 'mobile-menu' ),
1099
  'id' => 'right_menu_bg_image_size',
1100
  'type' => 'select',
@@ -1108,17 +1063,19 @@ class WP_Mobile_Menu_Options
1108
  'unset' => __( 'Unset', 'mobile-menu' ),
1109
  ),
1110
  'default' => 'cover',
 
1111
  ) );
1112
  // Right Menu Gradient css.
1113
- $right_menu_tab->createOption( array(
1114
  'name' => __( 'Panel Background Gradient Css', 'mobile-menu' ),
1115
  'id' => 'right_menu_bg_gradient',
1116
  'type' => 'text',
1117
  'desc' => __( '<a href="https://webgradients.com/" target="_blank">Click here</a> to get your desired Gradient, just press the copy button and paste in this field.', 'mobile-menu' ),
1118
  'default' => '',
 
1119
  ) );
1120
  // Right Menu Panel Width Units.
1121
- $right_menu_tab->createOption( array(
1122
  'name' => __( 'Menu Panel Width Units', 'mobile-menu' ),
1123
  'id' => 'right_menu_width_units',
1124
  'type' => 'enable',
@@ -1126,9 +1083,10 @@ class WP_Mobile_Menu_Options
1126
  'desc' => __( 'Choose the width units.', 'mobile-menu' ),
1127
  'enabled' => __( 'Pixels', 'mobile-menu' ),
1128
  'disabled' => __( 'Percentage', 'mobile-menu' ),
 
1129
  ) );
1130
  // Right Menu Panel Width.
1131
- $right_menu_tab->createOption( array(
1132
  'name' => __( 'Menu Panel Width(Pixels)', 'mobile-menu' ),
1133
  'id' => 'right_menu_width',
1134
  'type' => 'number',
@@ -1137,9 +1095,10 @@ class WP_Mobile_Menu_Options
1137
  'max' => '450',
1138
  'min' => '50',
1139
  'unit' => 'px',
 
1140
  ) );
1141
  // Right Menu Panel Width.
1142
- $right_menu_tab->createOption( array(
1143
  'name' => __( 'Menu Panel Width(Percentage)', 'mobile-menu' ),
1144
  'id' => 'right_menu_width_percentage',
1145
  'type' => 'number',
@@ -1148,9 +1107,10 @@ class WP_Mobile_Menu_Options
1148
  'max' => '90',
1149
  'min' => '0',
1150
  'unit' => '%',
 
1151
  ) );
1152
  // Right Menu Content Padding.
1153
- $right_menu_tab->createOption( array(
1154
  'name' => __( 'Right Menu Content Padding', 'mobile-menu' ),
1155
  'id' => 'right_menu_content_padding',
1156
  'type' => 'number',
@@ -1160,9 +1120,10 @@ class WP_Mobile_Menu_Options
1160
  'min' => '0',
1161
  'step' => '1',
1162
  'unit' => '%',
 
1163
  ) );
1164
  // Right Menu Font.
1165
- $fonts_tab->createOption( array(
1166
  'name' => __( 'Right Menu Font', 'mobile-menu' ),
1167
  'id' => 'right_menu_font',
1168
  'type' => 'font',
@@ -1180,301 +1141,312 @@ class WP_Mobile_Menu_Options
1180
  'line-height' => '1.5em',
1181
  'font-family' => 'Dosis',
1182
  ),
1183
- ) );
1184
- // Header Left Menu Section.
1185
- $colors_tab->createOption( array(
1186
- 'name' => __( 'General', 'mobile-menu' ),
1187
- 'type' => 'heading',
1188
  ) );
1189
  // Overlay Background color.
1190
- $colors_tab->createOption( array(
1191
  'name' => __( 'Overlay Background Color', 'mobile-menu' ),
1192
  'id' => 'overlay_bg_color',
1193
  'type' => 'color',
1194
  'desc' => '',
1195
  'alpha' => true,
1196
  'default' => 'rgba(0, 0, 0, 0.83)',
 
1197
  ) );
1198
  // Menu Items Border color.
1199
- $colors_tab->createOption( array(
1200
  'name' => __( 'Menu Items Border Color', 'mobile-menu' ),
1201
  'id' => 'menu_items_border_color',
1202
  'type' => 'color',
1203
  'desc' => '',
1204
  'alpha' => true,
1205
  'default' => 'rgba(0, 0, 0, 0.83)',
1206
- ) );
1207
- // Header Left Menu Section.
1208
- $colors_tab->createOption( array(
1209
- 'name' => __( 'Header', 'mobile-menu' ),
1210
- 'type' => 'heading',
1211
  ) );
1212
  // Header Background color.
1213
- $colors_tab->createOption( array(
1214
  'name' => __( 'Header Background Color', 'mobile-menu' ),
1215
  'id' => 'header_bg_color',
1216
  'type' => 'color',
1217
  'desc' => '',
1218
  'alpha' => true,
1219
  'default' => '#111111',
 
1220
  ) );
1221
  // Header Text color.
1222
- $colors_tab->createOption( array(
1223
  'name' => __( 'Header Text Color', 'mobile-menu' ),
1224
  'id' => 'header_text_color',
1225
  'type' => 'color',
1226
  'desc' => '',
1227
  'alpha' => true,
1228
  'default' => '#FFF',
 
1229
  ) );
1230
- // Header Left Menu Section.
1231
- $colors_tab->createOption( array(
1232
- 'name' => __( 'Left Menu', 'mobile-menu' ),
1233
- 'type' => 'heading',
1234
  ) );
1235
  // Left Menu Icon color.
1236
- $colors_tab->createOption( array(
1237
  'name' => __( 'Left Menu Icon Color', 'mobile-menu' ),
1238
  'id' => 'left_menu_icon_color',
1239
  'type' => 'color',
1240
  'desc' => '',
1241
  'alpha' => true,
1242
  'default' => '#FFF',
 
1243
  ) );
1244
  // Header Text After Left Icon.
1245
- $colors_tab->createOption( array(
1246
  'name' => __( 'Text After Left Icon', 'mobile-menu' ),
1247
  'id' => 'header_text_after_icon',
1248
  'type' => 'color',
1249
  'desc' => '',
1250
  'alpha' => true,
1251
  'default' => '#222',
 
1252
  ) );
1253
  // Left Panel Background color.
1254
- $colors_tab->createOption( array(
1255
  'name' => __( 'Background Color', 'mobile-menu' ),
1256
  'id' => 'left_panel_bg_color',
1257
  'type' => 'color',
1258
  'desc' => '',
1259
  'alpha' => true,
1260
  'default' => '#F7F7F7',
 
1261
  ) );
1262
  // Left Panel Text color.
1263
- $colors_tab->createOption( array(
1264
  'name' => __( 'Text Color', 'mobile-menu' ),
1265
  'id' => 'left_panel_text_color',
1266
  'type' => 'color',
1267
  'desc' => '',
1268
  'alpha' => true,
1269
  'default' => '#666',
 
1270
  ) );
1271
  // Left Panel Background Hover Color.
1272
- $colors_tab->createOption( array(
1273
  'name' => __( 'Background Hover Color', 'mobile-menu' ),
1274
  'id' => 'left_panel_hover_bgcolor',
1275
  'type' => 'color',
1276
  'desc' => '',
1277
  'alpha' => true,
1278
  'default' => '#666',
 
1279
  ) );
1280
  // Left Panel Text color Hover.
1281
- $colors_tab->createOption( array(
1282
  'name' => __( 'Hover Text Color', 'mobile-menu' ),
1283
  'id' => 'left_panel_hover_text_color',
1284
  'type' => 'color',
1285
  'desc' => '',
1286
  'alpha' => true,
1287
  'default' => '#FFF',
 
1288
  ) );
1289
  // Left Panel Sub-menu Background Color.
1290
- $colors_tab->createOption( array(
1291
  'name' => __( 'Submenu Background Color', 'mobile-menu' ),
1292
  'id' => 'left_panel_submenu_bgcolor',
1293
  'type' => 'color',
1294
  'desc' => '',
1295
  'alpha' => true,
1296
  'default' => '#3a3a3a',
 
1297
  ) );
1298
  // Left Panel Sub-menu Text Color.
1299
- $colors_tab->createOption( array(
1300
  'name' => __( 'Submenu Text Color', 'mobile-menu' ),
1301
  'id' => 'left_panel_submenu_text_color',
1302
  'type' => 'color',
1303
  'desc' => '',
1304
  'alpha' => true,
1305
  'default' => '#fff',
 
1306
  ) );
1307
  // Left Panel Cancel Button Color.
1308
- $colors_tab->createOption( array(
1309
  'name' => __( 'Cancel Button Color', 'mobile-menu' ),
1310
  'id' => 'left_panel_cancel_button_color',
1311
  'type' => 'color',
1312
  'desc' => '',
1313
  'alpha' => true,
1314
  'default' => '#666',
1315
- ) );
1316
- // Header Right Menu Section.
1317
- $colors_tab->createOption( array(
1318
- 'name' => __( 'Right Menu', 'mobile-menu' ),
1319
- 'type' => 'heading',
1320
  ) );
1321
  // Right Menu Icon color.
1322
- $colors_tab->createOption( array(
1323
  'name' => __( 'Right Menu Icon Color', 'mobile-menu' ),
1324
  'id' => 'right_menu_icon_color',
1325
  'type' => 'color',
1326
  'desc' => '',
1327
  'alpha' => true,
1328
  'default' => '#FFF',
 
1329
  ) );
1330
  // Header Text Before Right Icon.
1331
- $colors_tab->createOption( array(
1332
  'name' => __( 'Text Before Right Icon', 'mobile-menu' ),
1333
  'id' => 'header_text_before_icon',
1334
  'type' => 'color',
1335
  'desc' => '',
1336
  'alpha' => true,
1337
  'default' => '#222',
 
1338
  ) );
1339
  // Right Panel Background color.
1340
- $colors_tab->createOption( array(
1341
  'name' => __( 'Background Color', 'mobile-menu' ),
1342
  'id' => 'right_panel_bg_color',
1343
  'type' => 'color',
1344
  'desc' => '',
1345
  'alpha' => true,
1346
  'default' => '#F7F7F7',
 
1347
  ) );
1348
  // Right Panel Text color.
1349
- $colors_tab->createOption( array(
1350
  'name' => __( 'Text Color', 'mobile-menu' ),
1351
  'id' => 'right_panel_text_color',
1352
  'type' => 'color',
1353
  'desc' => '',
1354
  'alpha' => true,
1355
  'default' => '#666',
 
1356
  ) );
1357
  // Right Panel Background Hover Color.
1358
- $colors_tab->createOption( array(
1359
  'name' => __( 'Background Hover Color', 'mobile-menu' ),
1360
  'id' => 'right_panel_hover_bgcolor',
1361
  'type' => 'color',
1362
  'desc' => '',
1363
  'alpha' => true,
1364
  'default' => '#666',
 
1365
  ) );
1366
  // Right Panel Text color Hover.
1367
- $colors_tab->createOption( array(
1368
  'name' => __( 'Hover Text Color', 'mobile-menu' ),
1369
  'id' => 'right_panel_hover_text_color',
1370
  'type' => 'color',
1371
  'desc' => '',
1372
  'alpha' => true,
1373
  'default' => '#FFF',
 
1374
  ) );
1375
  // Right Panel Sub-menu Background Color.
1376
- $colors_tab->createOption( array(
1377
  'name' => __( 'Submenu Background Color', 'mobile-menu' ),
1378
  'id' => 'right_panel_submenu_bgcolor',
1379
  'type' => 'color',
1380
  'desc' => '',
1381
  'alpha' => true,
1382
  'default' => '#3a3a3a',
 
1383
  ) );
1384
  // Right Panel Sub-menu Text Color.
1385
- $colors_tab->createOption( array(
1386
  'name' => __( 'Submenu Text Color', 'mobile-menu' ),
1387
  'id' => 'right_panel_submenu_text_color',
1388
  'type' => 'color',
1389
  'desc' => '',
1390
  'alpha' => true,
1391
  'default' => '#fff',
 
1392
  ) );
1393
  // Right Panel Cancel Button Color.
1394
- $colors_tab->createOption( array(
1395
  'name' => __( 'Cancel Button Color', 'mobile-menu' ),
1396
  'id' => 'right_panel_cancel_button_color',
1397
  'type' => 'color',
1398
  'desc' => '',
1399
  'alpha' => true,
1400
  'default' => '#666',
1401
- ) );
1402
- // 3rd Level Right Menu Section.
1403
- $colors_tab->createOption( array(
1404
- 'name' => __( '3rd Level Menu Colors', 'mobile-menu' ),
1405
- 'type' => 'heading',
1406
  ) );
1407
  // Left Panel 3rd Level Left Menu Items Text color.
1408
- $colors_tab->createOption( array(
1409
  'name' => __( 'Left Menu Text Color', 'mobile-menu' ),
1410
  'id' => 'left_panel_3rd_menu_text_color',
1411
  'type' => 'color',
1412
  'desc' => '',
1413
  'alpha' => true,
1414
  'default' => '#fff',
 
1415
  ) );
1416
  // Left Panel 3rd Level Left Menu Items Text color Hover.
1417
- $colors_tab->createOption( array(
1418
  'name' => __( 'Left Menu Text Color Hover', 'mobile-menu' ),
1419
  'id' => 'left_panel_3rd_menu_text_color_hover',
1420
  'type' => 'color',
1421
  'desc' => '',
1422
  'alpha' => true,
1423
  'default' => '#ccc',
 
1424
  ) );
1425
  // Left Panel 3rd Level Left Menu Items Background color.
1426
- $colors_tab->createOption( array(
1427
  'name' => __( 'Left Menu Background Color', 'mobile-menu' ),
1428
  'id' => 'left_panel_3rd_menu_bg_color',
1429
  'type' => 'color',
1430
  'desc' => '',
1431
  'alpha' => true,
1432
  'default' => '#222',
 
1433
  ) );
1434
  // Left Panel 3rd Level Left Menu Items Background color Hover.
1435
- $colors_tab->createOption( array(
1436
  'name' => __( 'Left Menu Background Color Hover', 'mobile-menu' ),
1437
  'id' => 'left_panel_3rd_menu_bg_color_hover',
1438
  'type' => 'color',
1439
  'desc' => '',
1440
  'alpha' => true,
1441
  'default' => '#666',
 
1442
  ) );
1443
  // Right Panel 3rd Level Right Menu Items Text color.
1444
- $colors_tab->createOption( array(
1445
  'name' => __( 'Right Menu Text Color', 'mobile-menu' ),
1446
  'id' => 'right_panel_3rd_menu_text_color',
1447
  'type' => 'color',
1448
  'desc' => '',
1449
  'alpha' => true,
1450
  'default' => '#fff',
 
1451
  ) );
1452
  // Right Panel 3rd Level Right Menu Items Text color Hover.
1453
- $colors_tab->createOption( array(
1454
  'name' => __( 'Right Menu Text Color Hover', 'mobile-menu' ),
1455
  'id' => 'right_panel_3rd_menu_text_color_hover',
1456
  'type' => 'color',
1457
  'desc' => '',
1458
  'alpha' => true,
1459
  'default' => '#ccc',
 
1460
  ) );
1461
  // Right Panel 3rd Level Right Menu Items Background color.
1462
- $colors_tab->createOption( array(
1463
  'name' => __( 'Right Menu Background Color', 'mobile-menu' ),
1464
  'id' => 'right_panel_3rd_menu_bg_color',
1465
  'type' => 'color',
1466
  'desc' => '',
1467
  'alpha' => true,
1468
  'default' => '#222',
 
1469
  ) );
1470
  // Right Panel 3rd Level Right Menu Items Background color Hover.
1471
- $colors_tab->createOption( array(
1472
  'name' => __( 'Right Menu Background Color Hover', 'mobile-menu' ),
1473
  'id' => 'right_panel_3rd_menu_bg_color_hover',
1474
  'type' => 'color',
1475
  'desc' => '',
1476
  'alpha' => true,
1477
  'default' => '#666',
 
1478
  ) );
1479
  $panel->createOption( array(
1480
  'type' => 'save',
@@ -1495,10 +1467,7 @@ class WP_Mobile_Menu_Options
1495
  public function create_woocommerce_options_upsell( $panel, $titan )
1496
  {
1497
  global $mm_fs ;
1498
- // Create Woocommerce Options panel.
1499
- $mm_woo_tab = $panel->createTab( array(
1500
- 'name' => __( 'Woocommerce', 'mobile-menu' ),
1501
- ) );
1502
  $custom_html = '<div class="mm-business-features-holder"><div class="mm-bussiness-features"><h3>' . __( 'Increase your shop revenue (Business Version)', 'mobile-menu' ) . '</h3>';
1503
  $custom_html .= '<p><span class="dashicons dashicons-yes"></span><strong>Menu Cart Icon</strong> - Product counter notification buble, upload the desired icon.</p>';
1504
  $custom_html .= '<p><span class="dashicons dashicons-yes"></span><strong>Mobile Product Filter</strong> - Advanced product filter for mobile users.</p>';
@@ -1512,11 +1481,11 @@ class WP_Mobile_Menu_Options
1512
  $custom_html .= '</div>';
1513
  $custom_html .= '<div class="mm-business-image"><a href="https://shopdemo.wpmobilemenu.com/?utm_source=wprepo-dash&utm_medium=user%20website&utm_campaign=upsell_link" target="_blank"><img src="' . plugins_url( 'demo-content/assets/shopdemo-mobile-menu.png', __FILE__ ) . '">';
1514
  $custom_html .= '</a><p><a href="https://shopdemo.wpmobilemenu.com/?utm_source=wprepo-dash&utm_medium=user%20website&utm_campaign=upsell_link"> ' . esc_html( 'See Demo Site', 'mobile-menu' ) . '</a></div></div>';
1515
- // Woocommerce Tab Upgrade Content.
1516
- $mm_woo_tab->createOption( array(
1517
- 'name' => '',
1518
  'type' => 'custom',
1519
  'custom' => $custom_html,
 
1520
  ) );
1521
  }
1522
 
@@ -1532,10 +1501,7 @@ class WP_Mobile_Menu_Options
1532
  public function create_footer_options_upsell( $panel, $titan )
1533
  {
1534
  global $mm_fs ;
1535
- // Create Footer Options panel.
1536
- $footer_tab = $panel->createTab( array(
1537
- 'name' => __( 'Footer', 'mobile-menu' ),
1538
- ) );
1539
  $custom_html = '<div class="mm-business-features-holder"><div class="mm-bussiness-features"><h3>' . __( 'Give your Website an App look and feel', 'mobile-menu' ) . '</h3>';
1540
  $custom_html .= '<p><span class="dashicons dashicons-yes"></span><strong>Fixed Footer Bar</strong></p>';
1541
  $custom_html .= '<p><span class="dashicons dashicons-yes"></span><strong>Auto-hide on Scroll</strong></p>';
@@ -1547,10 +1513,11 @@ class WP_Mobile_Menu_Options
1547
  $custom_html .= '<div class="mm-business-image"><a href="https://prodemo.wpmobilemenu.com/?utm_source=wprepo-dash&utm_medium=user%20website&utm_campaign=upsell_link" target="_blank"><img src="' . plugins_url( 'demo-content/assets/prodemo-mobile-menu.png', __FILE__ ) . '">';
1548
  $custom_html .= '</a><p><a href="https://prodemo.wpmobilemenu.com/?utm_source=wprepo-dash&utm_medium=user%20website&utm_campaign=upsell_link"> ' . esc_html( 'See Demo Site', 'mobile-menu' ) . '</a></div></div>';
1549
  // Footer Tab Upgrade Content.
1550
- $footer_tab->createOption( array(
1551
- 'name' => '',
1552
  'type' => 'custom',
1553
  'custom' => $custom_html,
 
1554
  ) );
1555
  }
1556
 
44
  add_action( 'tf_create_options', array( $this, 'create_plugin_options' ) );
45
  }
46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  /**
48
  *
49
  * Create Plugin options.
53
  public function create_plugin_options()
54
  {
55
  global $mm_fs ;
56
+ global $general_tab ;
57
  $prefix = '';
58
  $menus = get_terms( 'nav_menu', array(
59
  'hide_empty' => true,
90
  'search' => 'Search',
91
  'left-menu' => 'Left Menu',
92
  );
93
+ $plugin_title = 'Mobile Menu Options';
94
  // Create my admin options panel.
95
  $panel = $titan->createAdminPanel( array(
96
  'name' => 'Mobile Menu Options',
97
+ 'title' => __( $plugin_title, 'mobile-menu' ),
98
  'icon' => 'dashicons-smartphone',
99
  ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  // Only proceed if we are in the plugin page.
101
 
102
  if ( !is_admin() || isset( $_GET['page'] ) && 'mobile-menu-options' === sanitize_text_field( $_GET['page'] ) ) {
103
  // Create General Options panel.
104
+ $general_tab2 = $panel->createTab( array(
105
  'name' => __( 'General Options', 'mobile-menu' ),
106
  ) );
107
+ $general_tab = $panel->createTab( array(
 
108
  'name' => __( 'Header', 'mobile-menu' ),
109
  ) );
110
+ $general_tab = $panel->createTab( array(
111
+ 'name' => __( 'Footer', 'mobile-menu' ),
112
+ ) );
113
+ $general_tab = $panel->createTab( array(
114
  'name' => __( 'Left Menu', 'mobile-menu' ),
115
  ) );
116
+ $general_tab = $panel->createTab( array(
 
117
  'name' => __( 'Right Menu', 'mobile-menu' ),
118
  ) );
119
+ $general_tab = $panel->createTab( array(
120
+ 'name' => __( 'WooCommerce', 'mobile-menu' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  ) );
122
+ $general_tab = $panel->createTab( array(
123
+ 'name' => __( 'Colors', 'mobile-menu' ),
 
124
  ) );
125
+ $general_tab = $general_tab2;
126
+ $this->create_footer_options_upsell( $panel, $titan );
127
+ // Create Woocommerce options upsell.
128
+ $this->create_woocommerce_options_upsell( $panel, $titan );
129
  // Enable/Disable Left Header Menu.
130
  $general_tab->createOption( array(
131
  'name' => __( 'Enable Left Menu', 'mobile-menu' ),
132
  'id' => 'enable_left_menu',
133
  'type' => 'enable',
134
  'default' => true,
135
+ 'enabled' => __( 'Yes', 'mobile-menu' ),
136
+ 'disabled' => __( 'No', 'mobile-menu' ),
137
+ 'class' => 'general-options left-menu-options',
138
  ) );
139
  // Left Menu.
140
  $general_tab->createOption( array(
144
  'desc' => __( 'Select the menu that will open in the left side.', 'mobile-menu' ),
145
  'options' => $menus_options,
146
  'default' => $titan->getOption( 'left_menu' ),
147
+ 'class' => 'general-options left-menu-options',
148
  ) );
149
  // Enable/Disable Right Header Menu.
150
  $general_tab->createOption( array(
152
  'id' => 'enable_right_menu',
153
  'type' => 'enable',
154
  'default' => false,
155
+ 'enabled' => __( 'Yes', 'mobile-menu' ),
156
+ 'disabled' => __( 'No', 'mobile-menu' ),
157
+ 'class' => 'general-options right-menu-options',
158
  ) );
159
  // Right Menu.
160
  $general_tab->createOption( array(
164
  'desc' => __( 'Select the menu that will open in the right side.', 'mobile-menu' ),
165
  'options' => $menus_options,
166
  'default' => $titan->getOption( 'right_menu' ),
167
+ 'class' => 'general-options right-menu-options',
 
 
 
168
  ) );
169
  // Width trigger.
170
  $general_tab->createOption( array(
176
  'max' => '5000',
177
  'min' => '479',
178
  'unit' => 'px',
179
+ 'class' => 'general-visibility-options',
180
  ) );
181
  $general_tab->createOption( array(
182
+ 'type' => 'note',
183
+ 'desc' => __( 'The Width trigger field is very important because it determines the width that will show the Mobile Menu. If you want it always visible set it to 5000px', 'mobile-menu' ),
184
+ 'class' => 'general-visibility-options',
185
  ) );
186
  // Enable/Disable only in Mobile Devices.
187
  $general_tab->createOption( array(
192
  'desc' => __( 'Enable only in Mobiles devices. This will disable the Mobile Menu Visibilty option above (using resolution width trigger).', 'mobile-menu' ),
193
  'enabled' => __( 'On', 'mobile-menu' ),
194
  'disabled' => __( 'Off', 'mobile-menu' ),
195
+ 'class' => 'general-visibility-options',
196
  ) );
197
  // Enable/Disable Testing Mode.
198
  $general_tab->createOption( array(
203
  'desc' => __( 'Enable only for admin users. This will disable the Mobile Menu for all the visitors of your site except the administrator users.', 'mobile-menu' ),
204
  'enabled' => __( 'On', 'mobile-menu' ),
205
  'disabled' => __( 'Off', 'mobile-menu' ),
206
+ 'class' => 'general-visibility-options',
 
 
 
207
  ) );
208
  // Hide Html Elements.
209
  $general_tab->createOption( array(
211
  'id' => 'hide_elements',
212
  'type' => 'text',
213
  'default' => '',
214
+ 'desc' => __( 'Use the Find element button and click in the elements you want to hide. When you are done hit the Save Changes button.<br>Example: .menu , #nav</p>', 'mobile-menu' ),
215
+ 'class' => 'general-hide-elements',
216
  ) );
217
  $general_tab->createOption( array(
218
+ 'type' => 'note',
219
+ 'desc' => __( 'If you somehow couldn\'t find the necessary elements using the visual tool to pick elements just create a new ticket in our <a href="https://www.wpmobilemenu.com/support-contact/?utm_source=wprepo-dash&utm_medium=user%20website&utm_campaign=hide_original_menu_help" target="_blank">support page</a> with your site url and a screenshot of the element you want to hide. We reply fast.', 'mobile-menu' ),
220
+ 'class' => 'general-hide-elements',
221
  ) );
222
  $general_tab->createOption( array(
223
  'name' => __( 'Hide elements by default', 'mobile-menu' ),
262
  '16',
263
  '17'
264
  ),
265
+ 'class' => 'general-hide-elements',
 
 
 
266
  ) );
267
  // Menu Display Type.
268
  $general_tab->createOption( array(
272
  'desc' => __( 'Choose the display type for the mobile menu.', 'mobile-menu' ),
273
  'options' => $display_type,
274
  'default' => 'slideout-over',
275
+ 'class' => 'general-misc-options',
276
  ) );
277
  // Automatically Close Sub Menus.
278
  $general_tab->createOption( array(
283
  'default' => false,
284
  'enabled' => __( 'On', 'mobile-menu' ),
285
  'disabled' => __( 'Off', 'mobile-menu' ),
286
+ 'class' => 'general-misc-options',
287
  ) );
288
  // Menu Border Style.
289
  $general_tab->createOption( array(
295
  'max' => '5',
296
  'min' => '0',
297
  'unit' => 'px',
298
+ 'class' => 'general-misc-options',
299
  ) );
300
  // Close Menu Icon Font.
301
  $general_tab->createOption( array(
304
  'type' => 'text',
305
  'desc' => __( '<div class="mobmenu-icon-holder"></div><a href="#" class="mobmenu-icon-picker button">Select menu icon</a>', 'mobile-menu' ),
306
  'default' => 'cancel-1',
307
+ 'class' => 'general-misc-options',
308
  ) );
309
  // Close Menu Icon Font Size.
310
  $general_tab->createOption( array(
316
  'max' => '100',
317
  'min' => '5',
318
  'unit' => 'px',
319
+ 'class' => 'general-misc-options',
320
  ) );
321
  // Submenu Open Icon Font.
322
  $general_tab->createOption( array(
325
  'type' => 'text',
326
  'desc' => __( '<div class="mobmenu-icon-holder"></div><a href="#" class="mobmenu-icon-picker button">Select menu icon</a>', 'mobile-menu' ),
327
  'default' => 'down-open',
328
+ 'class' => 'general-misc-options',
329
  ) );
330
  // Submenu Close Icon Font.
331
  $general_tab->createOption( array(
334
  'type' => 'text',
335
  'desc' => __( '<div class="mobmenu-icon-holder"></div><a href="#" class="mobmenu-icon-picker button">Select menu icon</a>', 'mobile-menu' ),
336
  'default' => 'up-open',
337
+ 'class' => 'general-misc-options',
338
  ) );
339
  // Submenu Icon Font Size.
340
  $general_tab->createOption( array(
346
  'max' => '100',
347
  'min' => '0',
348
  'unit' => 'px',
349
+ 'class' => 'general-misc-options',
 
 
 
350
  ) );
351
  // Automatically Close Sub Menus.
352
  $general_tab->createOption( array(
357
  'default' => false,
358
  'enabled' => __( 'On', 'mobile-menu' ),
359
  'disabled' => __( 'Off', 'mobile-menu' ),
360
+ 'class' => 'general-advanced-options',
361
  ) );
362
  // Sticky Html Elements.
363
  $general_tab->createOption( array(
366
  'type' => 'text',
367
  'default' => '',
368
  'desc' => __( '<p>If you are having issues with sticky elements that dont assume a sticky behaviour, enter the ids or class name that identify that element.</p>', 'mobile-menu' ),
369
+ 'class' => 'general-advanced-options',
370
  ) );
371
  // Custom css.
372
  $general_tab->createOption( array(
373
+ 'name' => __( 'Custom CSS', 'mobile-menu' ),
374
+ 'id' => 'custom_css',
375
+ 'type' => 'code',
376
+ 'desc' => __( 'Put your custom CSS rules here', 'mobile-menu' ),
377
+ 'lang' => 'css',
378
+ 'class' => 'general-advanced-options',
379
  ) );
380
  // Custom js.
381
  $general_tab->createOption( array(
382
+ 'name' => __( 'Custom JS', 'mobile-menu' ),
383
+ 'id' => 'custom_js',
384
+ 'type' => 'code',
385
+ 'desc' => __( 'Put your custom JS rules here', 'mobile-menu' ),
386
+ 'lang' => 'javascript',
387
+ 'class' => 'general-advanced-options',
 
 
 
388
  ) );
389
  // Export settings.
390
  $general_tab->createOption( array(
391
  'name' => __( 'Export Settings', 'mobile-menu' ),
392
  'type' => 'custom',
393
  'custom' => '<button class="button button-secondary export-mobile-menu-settings">' . __( 'Export', 'mobile-menu' ) . '</button>',
394
+ 'class' => 'general-import-export',
395
  ) );
396
  // Import settings.
397
  $general_tab->createOption( array(
398
  'name' => __( 'Import Settings', 'mobile-menu' ),
399
  'type' => 'custom',
400
  'custom' => '<button class="button button-secondary import-mobile-menu-settings">' . __( 'Import', 'mobile-menu' ) . '</button>',
401
+ 'class' => 'general-import-export',
 
 
 
 
402
  ) );
403
  // Enable/Disable Sticky Header.
404
+ $general_tab->createOption( array(
405
  'name' => __( 'Sticky Header', 'mobile-menu' ),
406
  'id' => 'enabled_sticky_header',
407
  'type' => 'enable',
409
  'desc' => __( 'Choose if you want to have the Header Fixed or scrolling with the content.', 'mobile-menu' ),
410
  'enabled' => __( 'Yes', 'mobile-menu' ),
411
  'disabled' => __( 'No', 'mobile-menu' ),
412
+ 'class' => 'header-options',
413
  ) );
414
  // Enable/Disable Naked Header.
415
+ $general_tab->createOption( array(
416
  'name' => __( 'Naked Header', 'mobile-menu' ),
417
  'id' => 'enabled_naked_header',
418
  'type' => 'enable',
420
  'desc' => __( 'Choose if you want to display a naked header with no background color(transparent).', 'mobile-menu' ),
421
  'enabled' => __( 'Yes', 'mobile-menu' ),
422
  'disabled' => __( 'No', 'mobile-menu' ),
423
+ 'class' => 'header-options',
424
  ) );
425
  // Enable/Disable Logo Url.
426
+ $general_tab->createOption( array(
427
  'name' => __( 'Disable Logo/Text', 'mobile-menu' ),
428
  'id' => 'disabled_logo_text',
429
  'type' => 'enable',
431
  'desc' => __( 'Choose if you want to disable the logo/text so it will only display the menu icons in the header.', 'mobile-menu' ),
432
  'enabled' => __( 'Yes', 'mobile-menu' ),
433
  'disabled' => __( 'No', 'mobile-menu' ),
434
+ 'class' => 'header-options',
 
 
 
435
  ) );
436
  // Header Shadow.
437
+ $general_tab->createOption( array(
438
  'name' => __( 'Header Shadow.', 'mobile-menu' ),
439
  'id' => 'header_shadow',
440
  'type' => 'enable',
442
  'desc' => __( 'Choose if you want to enable the header shadow at the bottom of the header.', 'mobile-menu' ),
443
  'enabled' => __( 'Yes', 'mobile-menu' ),
444
  'disabled' => __( 'No', 'mobile-menu' ),
445
+ 'class' => 'header-options',
446
  ) );
447
  // Header Height.
448
+ $general_tab->createOption( array(
449
  'name' => __( 'Header Height', 'mobile-menu' ),
450
  'id' => 'header_height',
451
  'type' => 'number',
454
  'max' => '500',
455
  'min' => '20',
456
  'unit' => 'px',
457
+ 'class' => 'header-options',
458
  ) );
459
  // Header Text.
460
+ $general_tab->createOption( array(
461
  'name' => __( 'Header Text', 'mobile-menu' ),
462
  'id' => 'header_text',
463
  'type' => 'text',
464
  'desc' => __( 'Enter the desired text for the Mobile Header. If not specified it will use the site title.', 'mobile-menu' ),
465
  'default' => '',
466
+ 'class' => 'header-options',
467
  ) );
468
  // Header Text Font Size.
469
+ $general_tab->createOption( array(
470
  'name' => __( 'Header Text Font Size', 'mobile-menu' ),
471
  'id' => 'header_font_size',
472
  'type' => 'number',
475
  'max' => '100',
476
  'min' => '5',
477
  'unit' => 'px',
478
+ 'class' => 'header-options',
479
  ) );
480
  // Header Logo/Text Alignment.
481
+ $general_tab->createOption( array(
482
  'name' => 'Header Logo/Text Alignment',
483
  'id' => 'header_text_align',
484
  'type' => 'select',
489
  'right' => __( 'Right', 'mobile-menu' ),
490
  ),
491
  'default' => 'center',
492
+ 'class' => 'header-options',
493
  ) );
494
  // Header Logo/Text Left Margin.
495
+ $general_tab->createOption( array(
496
  'name' => __( 'Header Logo/Text Left Margin', 'mobile-menu' ),
497
  'id' => 'header_text_left_margin',
498
  'type' => 'number',
501
  'max' => '200',
502
  'min' => '0',
503
  'unit' => 'px',
504
+ 'class' => 'header-options',
505
  ) );
506
  // Header Logo/Text Right Margin.
507
+ $general_tab->createOption( array(
508
  'name' => __( 'Header Logo/Text Right Margin', 'mobile-menu' ),
509
  'id' => 'header_text_right_margin',
510
  'type' => 'number',
513
  'max' => '200',
514
  'min' => '0',
515
  'unit' => 'px',
516
+ 'class' => 'header-options',
 
 
 
 
 
 
 
 
 
 
 
 
 
517
  ) );
518
  $header_branding = array(
519
  'logo' => __( 'Logo', 'mobile-menu' ),
527
  }
528
 
529
  // Use the page title in the Header or Header Banner(global Option).
530
+ $general_tab->createOption( array(
531
  'name' => __( 'Site Logo', 'mobile-menu' ),
532
  'id' => 'header_branding',
533
  'type' => 'select',
534
  'desc' => __( 'Chose the Header Branding ( Logo/Text ).', 'mobile-menu' ),
535
  'options' => $header_branding,
536
  'default' => $default_header_branding,
537
+ 'class' => 'logo-options',
538
  ) );
539
  // Site Logo Image.
540
+ $general_tab->createOption( array(
541
  'name' => __( 'Logo', 'mobile-menu' ),
542
  'id' => 'logo_img',
543
  'type' => 'upload',
544
  'desc' => __( 'Upload your logo image', 'mobile-menu' ),
545
  'default' => '',
546
+ 'class' => 'logo-options',
547
  ) );
548
  // Header Height.
549
+ $general_tab->createOption( array(
550
  'name' => __( 'Logo Height', 'mobile-menu' ),
551
  'id' => 'logo_height',
552
  'type' => 'number',
555
  'max' => '500',
556
  'min' => '0',
557
  'unit' => 'px',
558
+ 'class' => 'logo-options',
559
  ) );
560
  // Site Logo Retina Image.
561
+ $general_tab->createOption( array(
562
  'name' => __( 'Retina Logo', 'mobile-menu' ),
563
  'id' => 'logo_img_retina',
564
  'type' => 'upload',
565
  'desc' => __( 'Upload your logo image for retina devices', 'mobile-menu' ),
566
  'default' => '',
567
+ 'class' => 'logo-options',
568
  ) );
569
  // Enable/Disable Logo Url.
570
+ $general_tab->createOption( array(
571
  'name' => __( 'Disable Logo URL ', 'mobile-menu' ),
572
  'id' => 'disabled_logo_url',
573
  'type' => 'enable',
575
  'desc' => __( 'Choose if you want to disable the logo url to avoid being redirect to the homepage or alternative home url when touching the header logo.', 'mobile-menu' ),
576
  'enabled' => __( 'Yes', 'mobile-menu' ),
577
  'disabled' => __( 'No', 'mobile-menu' ),
578
+ 'class' => 'logo-options',
579
  ) );
580
  // Alternative Site URL.
581
+ $general_tab->createOption( array(
582
  'name' => __( 'Alternative Logo URL', 'mobile-menu' ),
583
  'id' => 'logo_url',
584
  'type' => 'text',
585
  'desc' => __( 'Enter you alternative logo URL. If you leave it blank it will use the Site URL.', 'mobile-menu' ),
586
  'default' => '',
587
+ 'class' => 'logo-options',
588
  ) );
589
  // Logo/text Top Margin.
590
+ $general_tab->createOption( array(
591
  'name' => __( 'Logo/Text Top Margin', 'mobile-menu' ),
592
  'id' => 'logo_top_margin',
593
  'type' => 'number',
596
  'max' => '450',
597
  'min' => '0',
598
  'unit' => 'px',
599
+ 'class' => 'logo-options',
600
  ) );
601
  $def_value = $titan->getOption( 'header_font_size' );
602
 
606
  $def_value = '';
607
  }
608
 
609
+ $general_tab->createOption( array(
610
  'name' => __( 'Header Menu Font', 'mobile-menu' ),
611
  'id' => 'header_menu_font',
612
  'type' => 'font',
623
  'font-family' => 'Dosis',
624
  'font-size' => $def_value,
625
  ),
626
+ 'class' => 'font-options header-options',
 
 
 
627
  ) );
628
  // Click Menu Parent link to open Sub menu.
629
+ $general_tab->createOption( array(
630
  'name' => __( 'Parent Link open submenu', 'mobile-menu' ),
631
  'id' => 'left_menu_parent_link_submenu',
632
  'type' => 'enable',
634
  'desc' => __( 'Choose if you want to open the submenu by click in the Parent Menu item.', 'mobile-menu' ),
635
  'enabled' => __( 'Yes', 'mobile-menu' ),
636
  'disabled' => __( 'No', 'mobile-menu' ),
637
+ 'class' => 'left-menu-options',
638
  ) );
639
 
640
  if ( true === $titan->getOption( 'left_menu_icon_opt' ) ) {
644
  }
645
 
646
  // Icon Image/text Option.
647
+ $general_tab->createOption( array(
648
  'name' => __( 'Icon Type', 'mobile-menu' ),
649
  'id' => 'left_menu_icon_new',
650
  'type' => 'select',
651
  'default' => $icon_type,
652
  'desc' => __( 'Choose if you want to display an image, icon or an animated icon.', 'mobile-menu' ),
653
  'options' => $icon_types,
654
+ 'class' => 'left-menu-icon',
655
  ) );
656
  // Left Menu Icon Font.
657
+ $general_tab->createOption( array(
658
  'name' => __( 'Icon Font', 'mobile-menu' ),
659
  'id' => 'left_menu_icon_font',
660
  'type' => 'text',
661
  'desc' => __( '<div class="mobmenu-icon-holder"></div><a href="#" class="mobmenu-icon-picker button">Select menu icon</a>', 'mobile-menu' ),
662
  'default' => 'menu',
663
+ 'class' => 'left-menu-icon',
664
  ) );
665
  // Left Menu Icon Font Size.
666
+ $general_tab->createOption( array(
667
  'name' => __( 'Icon Font Size', 'mobile-menu' ),
668
  'id' => 'left_icon_font_size',
669
  'type' => 'number',
672
  'max' => '100',
673
  'min' => '0',
674
  'unit' => 'px',
675
+ 'class' => 'left-menu-icon',
676
  ) );
677
  // Left Menu Icon.
678
+ $general_tab->createOption( array(
679
  'name' => __( 'Icon Image', 'mobile-menu' ),
680
  'id' => 'left_menu_icon',
681
  'type' => 'upload',
682
  'placeholder' => 'Click here to select the icon',
683
  'desc' => __( 'Upload your left menu icon image', 'mobile-menu' ),
684
  'default' => 'menu',
685
+ 'class' => 'left-menu-icon',
686
  ) );
687
  // Text After Left Icon.
688
+ $general_tab->createOption( array(
689
  'name' => __( 'Text After Icon', 'mobile-menu' ),
690
  'id' => 'left_menu_text',
691
  'type' => 'text',
692
  'desc' => __( 'Enter the text that will appear after the Icon.', 'mobile-menu' ),
693
  'default' => '',
694
+ 'class' => 'left-menu-icon',
695
  ) );
696
  // Text After Left Icon Font Options.
697
+ $general_tab->createOption( array(
698
  'name' => __( 'Text After Icon Font', 'mobile-menu' ),
699
  'id' => 'text_after_left_icon_font',
700
  'type' => 'font',
711
  'line-height' => '1.5em',
712
  'font-family' => 'Dosis',
713
  ),
714
+ 'class' => 'font-options left-menu-icon',
715
  ) );
716
  // Icon Action Option.
717
+ $general_tab->createOption( array(
718
  'name' => __( 'Icon Action', 'mobile-menu' ),
719
  'id' => 'left_menu_icon_action',
720
  'type' => 'enable',
722
  'desc' => __( 'Open the Left Menu Panel or open a Link url.', 'mobile-menu' ),
723
  'enabled' => __( 'Open Menu', 'mobile-menu' ),
724
  'disabled' => __( 'Open Link Url', 'mobile-menu' ),
725
+ 'class' => 'left-menu-icon',
726
  ) );
727
  // Icon URL.
728
+ $general_tab->createOption( array(
729
  'name' => __( 'Icon Link URL', 'mobile-menu' ),
730
  'id' => 'left_icon_url',
731
  'type' => 'text',
732
  'desc' => __( 'Enter the Icon Link Url.', 'mobile-menu' ),
733
  'default' => '',
734
+ 'class' => 'left-menu-icon',
735
  ) );
736
  // Icon URL Target.
737
+ $general_tab->createOption( array(
738
  'name' => __( 'Icon Link Url Target', 'mobile-menu' ),
739
  'id' => 'left_icon_url_target',
740
  'type' => 'enable',
742
  'desc' => __( 'Choose it the link will open in the same window or in the new window.', 'mobile-menu' ),
743
  'enabled' => 'Self',
744
  'disabled' => 'Blank',
745
+ 'class' => 'left-menu-icon',
746
  ) );
747
  // Left Menu Icon Top Margin.
748
+ $general_tab->createOption( array(
749
  'name' => __( 'Icon Top Margin', 'mobile-menu' ),
750
  'id' => 'left_icon_top_margin',
751
  'type' => 'number',
754
  'max' => '450',
755
  'min' => '0',
756
  'unit' => 'px',
757
+ 'class' => 'left-menu-icon',
758
  ) );
759
  // Left Menu Icon Left Margin.
760
+ $general_tab->createOption( array(
761
  'name' => __( 'Icon Left Margin', 'mobile-menu' ),
762
  'id' => 'left_icon_left_margin',
763
  'type' => 'number',
766
  'max' => '450',
767
  'min' => '0',
768
  'unit' => 'px',
769
+ 'class' => 'left-menu-icon',
 
 
 
770
  ) );
771
  // Left Menu Background Image.
772
+ $general_tab->createOption( array(
773
+ 'name' => __( 'Panel Background Image', 'mobile-menu' ),
774
+ 'id' => 'left_menu_bg_image',
775
+ 'type' => 'upload',
776
+ 'desc' => __( 'Upload your left menu background image(this will override the Background color option)', 'mobile-menu' ),
777
+ 'class' => 'left-panel-options',
778
  ) );
779
  // Left Menu Background Image Opacity.
780
+ $general_tab->createOption( array(
781
  'name' => __( 'Panel Background Image Opacity', 'mobile-menu' ),
782
  'id' => 'left_menu_bg_opacity',
783
  'type' => 'number',
787
  'min' => '10',
788
  'step' => '10',
789
  'unit' => '%',
790
+ 'class' => 'left-panel-options',
791
  ) );
792
  // Left Menu Background Image Size.
793
+ $general_tab->createOption( array(
794
  'name' => __( 'Panel Background Image Size', 'mobile-menu' ),
795
  'id' => 'left_menu_bg_image_size',
796
  'type' => 'upload',
805
  'unset' => __( 'Unset', 'mobile-menu' ),
806
  ),
807
  'default' => 'cover',
808
+ 'class' => 'left-panel-options',
809
  ) );
810
  // Left Menu Gradient css.
811
+ $general_tab->createOption( array(
812
  'name' => __( 'Panel Background Gradient Css', 'mobile-menu' ),
813
  'id' => 'left_menu_bg_gradient',
814
  'type' => 'text',
815
  'desc' => __( '<a href="https://webgradients.com/" target="_blank">Click here</a> to get your desired Gradient, just press the copy button and paste in this field.', 'mobile-menu' ),
816
  'default' => '',
817
+ 'class' => 'left-panel-options',
818
  ) );
819
  // Left Menu Panel Width Units.
820
+ $general_tab->createOption( array(
821
  'name' => __( 'Menu Panel Width Units', 'mobile-menu' ),
822
  'id' => 'left_menu_width_units',
823
  'type' => 'enable',
825
  'desc' => __( 'Choose the width units.', 'mobile-menu' ),
826
  'enabled' => 'Pixels',
827
  'disabled' => __( 'Percentage', 'mobile-menu' ),
828
+ 'class' => 'left-panel-options',
829
  ) );
830
  // Left Menu Panel Width.
831
+ $general_tab->createOption( array(
832
  'name' => __( 'Menu Panel Width(Pixels)', 'mobile-menu' ),
833
  'id' => 'left_menu_width',
834
  'type' => 'number',
837
  'max' => '1000',
838
  'min' => '50',
839
  'unit' => 'px',
840
+ 'class' => 'left-panel-options',
841
  ) );
842
  // Left Menu Panel Width.
843
+ $general_tab->createOption( array(
844
  'name' => __( 'Menu Panel Width(Percentage)', 'mobile-menu' ),
845
  'id' => 'left_menu_width_percentage',
846
  'type' => 'number',
849
  'max' => '90',
850
  'min' => '0',
851
  'unit' => '%',
852
+ 'class' => 'left-panel-options',
853
  ) );
854
  // Left Menu Content Padding.
855
+ $general_tab->createOption( array(
856
  'name' => __( 'Left Menu Content Padding', 'mobile-menu' ),
857
  'id' => 'left_menu_content_padding',
858
  'type' => 'number',
862
  'min' => '0',
863
  'step' => '1',
864
  'unit' => '%',
865
+ 'class' => 'left-panel-options',
866
  ) );
867
  // Left Menu Font.
868
+ $general_tab->createOption( array(
869
  'name' => __( 'Left Menu Font', 'mobile-menu' ),
870
  'id' => 'left_menu_font',
871
  'type' => 'font',
882
  'line-height' => '1.5em',
883
  'font-family' => 'Dosis',
884
  ),
885
+ 'class' => 'font-options left-panel-options',
 
 
 
 
886
  ) );
887
  // Click Menu Parent link to open Sub menu.
888
+ $general_tab->createOption( array(
889
  'name' => __( 'Parent Link open submenu', 'mobile-menu' ),
890
  'id' => 'right_menu_parent_link_submenu',
891
  'type' => 'enable',
893
  'desc' => __( 'Choose if you want to open the submenu by click in the Parent Menu item.', 'mobile-menu' ),
894
  'enabled' => __( 'Yes', 'mobile-menu' ),
895
  'disabled' => __( 'No', 'mobile-menu' ),
896
+ 'class' => 'right-menu-options',
897
  ) );
898
 
899
  if ( true === $titan->getOption( 'right_menu_icon_opt' ) ) {
903
  }
904
 
905
  // Icon Image/text Option.
906
+ $general_tab->createOption( array(
907
  'name' => __( 'Icon Type', 'mobile-menu' ),
908
  'id' => 'right_menu_icon_new',
909
  'type' => 'select',
910
  'default' => $icon_type,
911
  'desc' => __( 'Choose if you want to display an image, icon or an animated icon.', 'mobile-menu' ),
912
  'options' => $icon_types,
913
+ 'class' => 'right-menu-icon',
914
  ) );
915
  // Right Menu Icon Font.
916
+ $general_tab->createOption( array(
917
  'name' => __( 'Icon Font', 'mobile-menu' ),
918
  'id' => 'right_menu_icon_font',
919
  'type' => 'text',
920
  'desc' => __( '<div class="mobmenu-icon-holder"></div><a href="#" class="mobmenu-icon-picker button">Select menu icon</a>', 'mobile-menu' ),
921
  'default' => 'menu',
922
+ 'class' => 'right-menu-icon',
923
  ) );
924
  // Right Menu Icon Font Size.
925
+ $general_tab->createOption( array(
926
  'name' => __( 'Icon Font Size', 'mobile-menu' ),
927
  'id' => 'right_icon_font_size',
928
  'type' => 'number',
931
  'max' => '100',
932
  'min' => '0',
933
  'unit' => 'px',
934
+ 'class' => 'right-menu-icon',
935
  ) );
936
  // Right Menu Icon.
937
+ $general_tab->createOption( array(
938
  'name' => __( 'Icon Image', 'mobile-menu' ),
939
  'id' => 'right_menu_icon',
940
  'type' => 'upload',
941
  'desc' => __( 'Upload your right menu icon image', 'mobile-menu' ),
942
  'default' => 'menu',
943
+ 'class' => 'right-menu-icon',
 
 
 
 
 
 
 
944
  ) );
945
  // Icon Action Option.
946
+ $general_tab->createOption( array(
947
  'name' => __( 'Icon Action', 'mobile-menu' ),
948
  'id' => 'right_menu_icon_action',
949
  'type' => 'enable',
951
  'desc' => __( 'Open the Right Menu Panel or open a Link url.', 'mobile-menu' ),
952
  'enabled' => __( 'Open Menu', 'mobile-menu' ),
953
  'disabled' => __( 'Open Link Url', 'mobile-menu' ),
954
+ 'class' => 'right-menu-icon',
955
+ ) );
956
+ // Text Before Right Icon.
957
+ $general_tab->createOption( array(
958
+ 'name' => __( 'Text Before Icon', 'mobile-menu' ),
959
+ 'id' => 'right_menu_text',
960
+ 'type' => 'text',
961
+ 'desc' => __( 'Enter the text that will appear before the Icon.', 'mobile-menu' ),
962
+ 'default' => '',
963
+ 'class' => 'right-menu-icon',
964
  ) );
965
  // Text Before Right Icon Font Options.
966
+ $general_tab->createOption( array(
967
  'name' => __( 'Text Before Icon Font', 'mobile-menu' ),
968
  'id' => 'text_before_right_icon_font',
969
  'type' => 'font',
981
  'line-height' => '1.5em',
982
  'font-family' => 'Dosis',
983
  ),
984
+ 'class' => 'font-options right-menu-icon',
985
  ) );
986
  // Icon URL.
987
+ $general_tab->createOption( array(
988
  'name' => __( 'Icon Link URL', 'mobile-menu' ),
989
  'id' => 'right_icon_url',
990
  'type' => 'text',
991
  'desc' => __( 'Enter the Icon Link Url.', 'mobile-menu' ),
992
  'default' => '',
993
+ 'class' => 'right-menu-icon',
994
  ) );
995
  // Icon URL Target.
996
+ $general_tab->createOption( array(
997
  'name' => __( 'Icon Link Url Target', 'mobile-menu' ),
998
  'id' => 'right_icon_url_target',
999
  'type' => 'enable',
1001
  'desc' => __( 'Choose it the link will open in the same window or in the new window.', 'mobile-menu' ),
1002
  'enabled' => 'Self',
1003
  'disabled' => 'Blank',
1004
+ 'class' => 'right-menu-icon',
1005
  ) );
1006
  // Right Menu Icon Top Margin.
1007
+ $general_tab->createOption( array(
1008
  'name' => __( 'Icon Top Margin', 'mobile-menu' ),
1009
  'id' => 'right_icon_top_margin',
1010
  'type' => 'number',
1013
  'max' => '450',
1014
  'min' => '0',
1015
  'unit' => 'px',
1016
+ 'class' => 'right-menu-icon',
1017
  ) );
1018
  // Right Menu Icon Right Margin.
1019
+ $general_tab->createOption( array(
1020
  'name' => __( 'Icon Right Margin', 'mobile-menu' ),
1021
  'id' => 'right_icon_right_margin',
1022
  'type' => 'number',
1025
  'max' => '450',
1026
  'min' => '0',
1027
  'unit' => 'px',
1028
+ 'class' => 'right-menu-icon',
 
 
 
 
1029
  ) );
1030
  // Right Menu Background Image.
1031
+ $general_tab->createOption( array(
1032
+ 'name' => __( 'Panel Background Image', 'mobile-menu' ),
1033
+ 'id' => 'right_menu_bg_image',
1034
+ 'type' => 'upload',
1035
+ 'desc' => __( 'upload your right menu background image(this will override the Background color option)', 'mobile-menu' ),
1036
+ 'class' => 'right-panel-options',
1037
  ) );
1038
  // Right Menu Background Image Opacity.
1039
+ $general_tab->createOption( array(
1040
  'name' => __( 'Panel Background Image Opacity', 'mobile-menu' ),
1041
  'id' => 'right_menu_bg_opacity',
1042
  'type' => 'number',
1046
  'min' => '10',
1047
  'step' => '10',
1048
  'unit' => '%',
1049
+ 'class' => 'right-panel-options',
1050
  ) );
1051
  // Left Menu Background Image Size.
1052
+ $general_tab->createOption( array(
1053
  'name' => __( 'Panel Background Image Size', 'mobile-menu' ),
1054
  'id' => 'right_menu_bg_image_size',
1055
  'type' => 'select',
1063
  'unset' => __( 'Unset', 'mobile-menu' ),
1064
  ),
1065
  'default' => 'cover',
1066
+ 'class' => 'right-panel-options',
1067
  ) );
1068
  // Right Menu Gradient css.
1069
+ $general_tab->createOption( array(
1070
  'name' => __( 'Panel Background Gradient Css', 'mobile-menu' ),
1071
  'id' => 'right_menu_bg_gradient',
1072
  'type' => 'text',
1073
  'desc' => __( '<a href="https://webgradients.com/" target="_blank">Click here</a> to get your desired Gradient, just press the copy button and paste in this field.', 'mobile-menu' ),
1074
  'default' => '',
1075
+ 'class' => 'right-panel-options',
1076
  ) );
1077
  // Right Menu Panel Width Units.
1078
+ $general_tab->createOption( array(
1079
  'name' => __( 'Menu Panel Width Units', 'mobile-menu' ),
1080
  'id' => 'right_menu_width_units',
1081
  'type' => 'enable',
1083
  'desc' => __( 'Choose the width units.', 'mobile-menu' ),
1084
  'enabled' => __( 'Pixels', 'mobile-menu' ),
1085
  'disabled' => __( 'Percentage', 'mobile-menu' ),
1086
+ 'class' => 'right-panel-options',
1087
  ) );
1088
  // Right Menu Panel Width.
1089
+ $general_tab->createOption( array(
1090
  'name' => __( 'Menu Panel Width(Pixels)', 'mobile-menu' ),
1091
  'id' => 'right_menu_width',
1092
  'type' => 'number',
1095
  'max' => '450',
1096
  'min' => '50',
1097
  'unit' => 'px',
1098
+ 'class' => 'right-panel-options',
1099
  ) );
1100
  // Right Menu Panel Width.
1101
+ $general_tab->createOption( array(
1102
  'name' => __( 'Menu Panel Width(Percentage)', 'mobile-menu' ),
1103
  'id' => 'right_menu_width_percentage',
1104
  'type' => 'number',
1107
  'max' => '90',
1108
  'min' => '0',
1109
  'unit' => '%',
1110
+ 'class' => 'right-panel-options',
1111
  ) );
1112
  // Right Menu Content Padding.
1113
+ $general_tab->createOption( array(
1114
  'name' => __( 'Right Menu Content Padding', 'mobile-menu' ),
1115
  'id' => 'right_menu_content_padding',
1116
  'type' => 'number',
1120
  'min' => '0',
1121
  'step' => '1',
1122
  'unit' => '%',
1123
+ 'class' => 'right-panel-options',
1124
  ) );
1125
  // Right Menu Font.
1126
+ $general_tab->createOption( array(
1127
  'name' => __( 'Right Menu Font', 'mobile-menu' ),
1128
  'id' => 'right_menu_font',
1129
  'type' => 'font',
1141
  'line-height' => '1.5em',
1142
  'font-family' => 'Dosis',
1143
  ),
1144
+ 'class' => 'font-options right-panel-options',
 
 
 
 
1145
  ) );
1146
  // Overlay Background color.
1147
+ $general_tab->createOption( array(
1148
  'name' => __( 'Overlay Background Color', 'mobile-menu' ),
1149
  'id' => 'overlay_bg_color',
1150
  'type' => 'color',
1151
  'desc' => '',
1152
  'alpha' => true,
1153
  'default' => 'rgba(0, 0, 0, 0.83)',
1154
+ 'class' => 'colors-options',
1155
  ) );
1156
  // Menu Items Border color.
1157
+ $general_tab->createOption( array(
1158
  'name' => __( 'Menu Items Border Color', 'mobile-menu' ),
1159
  'id' => 'menu_items_border_color',
1160
  'type' => 'color',
1161
  'desc' => '',
1162
  'alpha' => true,
1163
  'default' => 'rgba(0, 0, 0, 0.83)',
1164
+ 'class' => 'colors-options',
 
 
 
 
1165
  ) );
1166
  // Header Background color.
1167
+ $general_tab->createOption( array(
1168
  'name' => __( 'Header Background Color', 'mobile-menu' ),
1169
  'id' => 'header_bg_color',
1170
  'type' => 'color',
1171
  'desc' => '',
1172
  'alpha' => true,
1173
  'default' => '#111111',
1174
+ 'class' => 'header-colors',
1175
  ) );
1176
  // Header Text color.
1177
+ $general_tab->createOption( array(
1178
  'name' => __( 'Header Text Color', 'mobile-menu' ),
1179
  'id' => 'header_text_color',
1180
  'type' => 'color',
1181
  'desc' => '',
1182
  'alpha' => true,
1183
  'default' => '#FFF',
1184
+ 'class' => 'header-colors',
1185
  ) );
1186
+ $general_tab->createOption( array(
1187
+ 'name' => __( 'Alerts', 'mobile-menu' ),
1188
+ 'type' => 'note',
1189
+ 'class' => 'general-alerts heading',
1190
  ) );
1191
  // Left Menu Icon color.
1192
+ $general_tab->createOption( array(
1193
  'name' => __( 'Left Menu Icon Color', 'mobile-menu' ),
1194
  'id' => 'left_menu_icon_color',
1195
  'type' => 'color',
1196
  'desc' => '',
1197
  'alpha' => true,
1198
  'default' => '#FFF',
1199
+ 'class' => 'left-menu-colors',
1200
  ) );
1201
  // Header Text After Left Icon.
1202
+ $general_tab->createOption( array(
1203
  'name' => __( 'Text After Left Icon', 'mobile-menu' ),
1204
  'id' => 'header_text_after_icon',
1205
  'type' => 'color',
1206
  'desc' => '',
1207
  'alpha' => true,
1208
  'default' => '#222',
1209
+ 'class' => 'left-menu-colors',
1210
  ) );
1211
  // Left Panel Background color.
1212
+ $general_tab->createOption( array(
1213
  'name' => __( 'Background Color', 'mobile-menu' ),
1214
  'id' => 'left_panel_bg_color',
1215
  'type' => 'color',
1216
  'desc' => '',
1217
  'alpha' => true,
1218
  'default' => '#F7F7F7',
1219
+ 'class' => 'left-menu-colors',
1220
  ) );
1221
  // Left Panel Text color.
1222
+ $general_tab->createOption( array(
1223
  'name' => __( 'Text Color', 'mobile-menu' ),
1224
  'id' => 'left_panel_text_color',
1225
  'type' => 'color',
1226
  'desc' => '',
1227
  'alpha' => true,
1228
  'default' => '#666',
1229
+ 'class' => 'left-menu-colors',
1230
  ) );
1231
  // Left Panel Background Hover Color.
1232
+ $general_tab->createOption( array(
1233
  'name' => __( 'Background Hover Color', 'mobile-menu' ),
1234
  'id' => 'left_panel_hover_bgcolor',
1235
  'type' => 'color',
1236
  'desc' => '',
1237
  'alpha' => true,
1238
  'default' => '#666',
1239
+ 'class' => 'left-menu-colors',
1240
  ) );
1241
  // Left Panel Text color Hover.
1242
+ $general_tab->createOption( array(
1243
  'name' => __( 'Hover Text Color', 'mobile-menu' ),
1244
  'id' => 'left_panel_hover_text_color',
1245
  'type' => 'color',
1246
  'desc' => '',
1247
  'alpha' => true,
1248
  'default' => '#FFF',
1249
+ 'class' => 'left-menu-colors',
1250
  ) );
1251
  // Left Panel Sub-menu Background Color.
1252
+ $general_tab->createOption( array(
1253
  'name' => __( 'Submenu Background Color', 'mobile-menu' ),
1254
  'id' => 'left_panel_submenu_bgcolor',
1255
  'type' => 'color',
1256
  'desc' => '',
1257
  'alpha' => true,
1258
  'default' => '#3a3a3a',
1259
+ 'class' => 'left-menu-colors',
1260
  ) );
1261
  // Left Panel Sub-menu Text Color.
1262
+ $general_tab->createOption( array(
1263
  'name' => __( 'Submenu Text Color', 'mobile-menu' ),
1264
  'id' => 'left_panel_submenu_text_color',
1265
  'type' => 'color',
1266
  'desc' => '',
1267
  'alpha' => true,
1268
  'default' => '#fff',
1269
+ 'class' => 'left-menu-colors',
1270
  ) );
1271
  // Left Panel Cancel Button Color.
1272
+ $general_tab->createOption( array(
1273
  'name' => __( 'Cancel Button Color', 'mobile-menu' ),
1274
  'id' => 'left_panel_cancel_button_color',
1275
  'type' => 'color',
1276
  'desc' => '',
1277
  'alpha' => true,
1278
  'default' => '#666',
1279
+ 'class' => 'left-menu-colors',
 
 
 
 
1280
  ) );
1281
  // Right Menu Icon color.
1282
+ $general_tab->createOption( array(
1283
  'name' => __( 'Right Menu Icon Color', 'mobile-menu' ),
1284
  'id' => 'right_menu_icon_color',
1285
  'type' => 'color',
1286
  'desc' => '',
1287
  'alpha' => true,
1288
  'default' => '#FFF',
1289
+ 'class' => 'right-menu-colors',
1290
  ) );
1291
  // Header Text Before Right Icon.
1292
+ $general_tab->createOption( array(
1293
  'name' => __( 'Text Before Right Icon', 'mobile-menu' ),
1294
  'id' => 'header_text_before_icon',
1295
  'type' => 'color',
1296
  'desc' => '',
1297
  'alpha' => true,
1298
  'default' => '#222',
1299
+ 'class' => 'right-menu-colors',
1300
  ) );
1301
  // Right Panel Background color.
1302
+ $general_tab->createOption( array(
1303
  'name' => __( 'Background Color', 'mobile-menu' ),
1304
  'id' => 'right_panel_bg_color',
1305
  'type' => 'color',
1306
  'desc' => '',
1307
  'alpha' => true,
1308
  'default' => '#F7F7F7',
1309
+ 'class' => 'right-menu-colors',
1310
  ) );
1311
  // Right Panel Text color.
1312
+ $general_tab->createOption( array(
1313
  'name' => __( 'Text Color', 'mobile-menu' ),
1314
  'id' => 'right_panel_text_color',
1315
  'type' => 'color',
1316
  'desc' => '',
1317
  'alpha' => true,
1318
  'default' => '#666',
1319
+ 'class' => 'right-menu-colors',
1320
  ) );
1321
  // Right Panel Background Hover Color.
1322
+ $general_tab->createOption( array(
1323
  'name' => __( 'Background Hover Color', 'mobile-menu' ),
1324
  'id' => 'right_panel_hover_bgcolor',
1325
  'type' => 'color',
1326
  'desc' => '',
1327
  'alpha' => true,
1328
  'default' => '#666',
1329
+ 'class' => 'right-menu-colors',
1330
  ) );
1331
  // Right Panel Text color Hover.
1332
+ $general_tab->createOption( array(
1333
  'name' => __( 'Hover Text Color', 'mobile-menu' ),
1334
  'id' => 'right_panel_hover_text_color',
1335
  'type' => 'color',
1336
  'desc' => '',
1337
  'alpha' => true,
1338
  'default' => '#FFF',
1339
+ 'class' => 'right-menu-colors',
1340
  ) );
1341
  // Right Panel Sub-menu Background Color.
1342
+ $general_tab->createOption( array(
1343
  'name' => __( 'Submenu Background Color', 'mobile-menu' ),
1344
  'id' => 'right_panel_submenu_bgcolor',
1345
  'type' => 'color',
1346
  'desc' => '',
1347
  'alpha' => true,
1348
  'default' => '#3a3a3a',
1349
+ 'class' => 'right-menu-colors',
1350
  ) );
1351
  // Right Panel Sub-menu Text Color.
1352
+ $general_tab->createOption( array(
1353
  'name' => __( 'Submenu Text Color', 'mobile-menu' ),
1354
  'id' => 'right_panel_submenu_text_color',
1355
  'type' => 'color',
1356
  'desc' => '',
1357
  'alpha' => true,
1358
  'default' => '#fff',
1359
+ 'class' => 'right-menu-colors',
1360
  ) );
1361
  // Right Panel Cancel Button Color.
1362
+ $general_tab->createOption( array(
1363
  'name' => __( 'Cancel Button Color', 'mobile-menu' ),
1364
  'id' => 'right_panel_cancel_button_color',
1365
  'type' => 'color',
1366
  'desc' => '',
1367
  'alpha' => true,
1368
  'default' => '#666',
1369
+ 'class' => 'right-menu-colors',
 
 
 
 
1370
  ) );
1371
  // Left Panel 3rd Level Left Menu Items Text color.
1372
+ $general_tab->createOption( array(
1373
  'name' => __( 'Left Menu Text Color', 'mobile-menu' ),
1374
  'id' => 'left_panel_3rd_menu_text_color',
1375
  'type' => 'color',
1376
  'desc' => '',
1377
  'alpha' => true,
1378
  'default' => '#fff',
1379
+ 'class' => '3rd-level-menu-colors',
1380
  ) );
1381
  // Left Panel 3rd Level Left Menu Items Text color Hover.
1382
+ $general_tab->createOption( array(
1383
  'name' => __( 'Left Menu Text Color Hover', 'mobile-menu' ),
1384
  'id' => 'left_panel_3rd_menu_text_color_hover',
1385
  'type' => 'color',
1386
  'desc' => '',
1387
  'alpha' => true,
1388
  'default' => '#ccc',
1389
+ 'class' => '3rd-level-menu-colors',
1390
  ) );
1391
  // Left Panel 3rd Level Left Menu Items Background color.
1392
+ $general_tab->createOption( array(
1393
  'name' => __( 'Left Menu Background Color', 'mobile-menu' ),
1394
  'id' => 'left_panel_3rd_menu_bg_color',
1395
  'type' => 'color',
1396
  'desc' => '',
1397
  'alpha' => true,
1398
  'default' => '#222',
1399
+ 'class' => '3rd-level-menu-colors',
1400
  ) );
1401
  // Left Panel 3rd Level Left Menu Items Background color Hover.
1402
+ $general_tab->createOption( array(
1403
  'name' => __( 'Left Menu Background Color Hover', 'mobile-menu' ),
1404
  'id' => 'left_panel_3rd_menu_bg_color_hover',
1405
  'type' => 'color',
1406
  'desc' => '',
1407
  'alpha' => true,
1408
  'default' => '#666',
1409
+ 'class' => '3rd-level-menu-colors',
1410
  ) );
1411
  // Right Panel 3rd Level Right Menu Items Text color.
1412
+ $general_tab->createOption( array(
1413
  'name' => __( 'Right Menu Text Color', 'mobile-menu' ),
1414
  'id' => 'right_panel_3rd_menu_text_color',
1415
  'type' => 'color',
1416
  'desc' => '',
1417
  'alpha' => true,
1418
  'default' => '#fff',
1419
+ 'class' => '3rd-level-menu-colors',
1420
  ) );
1421
  // Right Panel 3rd Level Right Menu Items Text color Hover.
1422
+ $general_tab->createOption( array(
1423
  'name' => __( 'Right Menu Text Color Hover', 'mobile-menu' ),
1424
  'id' => 'right_panel_3rd_menu_text_color_hover',
1425
  'type' => 'color',
1426
  'desc' => '',
1427
  'alpha' => true,
1428
  'default' => '#ccc',
1429
+ 'class' => '3rd-level-menu-colors',
1430
  ) );
1431
  // Right Panel 3rd Level Right Menu Items Background color.
1432
+ $general_tab->createOption( array(
1433
  'name' => __( 'Right Menu Background Color', 'mobile-menu' ),
1434
  'id' => 'right_panel_3rd_menu_bg_color',
1435
  'type' => 'color',
1436
  'desc' => '',
1437
  'alpha' => true,
1438
  'default' => '#222',
1439
+ 'class' => '3rd-level-menu-colors',
1440
  ) );
1441
  // Right Panel 3rd Level Right Menu Items Background color Hover.
1442
+ $general_tab->createOption( array(
1443
  'name' => __( 'Right Menu Background Color Hover', 'mobile-menu' ),
1444
  'id' => 'right_panel_3rd_menu_bg_color_hover',
1445
  'type' => 'color',
1446
  'desc' => '',
1447
  'alpha' => true,
1448
  'default' => '#666',
1449
+ 'class' => '3rd-level-menu-colors',
1450
  ) );
1451
  $panel->createOption( array(
1452
  'type' => 'save',
1467
  public function create_woocommerce_options_upsell( $panel, $titan )
1468
  {
1469
  global $mm_fs ;
1470
+ global $general_tab ;
 
 
 
1471
  $custom_html = '<div class="mm-business-features-holder"><div class="mm-bussiness-features"><h3>' . __( 'Increase your shop revenue (Business Version)', 'mobile-menu' ) . '</h3>';
1472
  $custom_html .= '<p><span class="dashicons dashicons-yes"></span><strong>Menu Cart Icon</strong> - Product counter notification buble, upload the desired icon.</p>';
1473
  $custom_html .= '<p><span class="dashicons dashicons-yes"></span><strong>Mobile Product Filter</strong> - Advanced product filter for mobile users.</p>';
1481
  $custom_html .= '</div>';
1482
  $custom_html .= '<div class="mm-business-image"><a href="https://shopdemo.wpmobilemenu.com/?utm_source=wprepo-dash&utm_medium=user%20website&utm_campaign=upsell_link" target="_blank"><img src="' . plugins_url( 'demo-content/assets/shopdemo-mobile-menu.png', __FILE__ ) . '">';
1483
  $custom_html .= '</a><p><a href="https://shopdemo.wpmobilemenu.com/?utm_source=wprepo-dash&utm_medium=user%20website&utm_campaign=upsell_link"> ' . esc_html( 'See Demo Site', 'mobile-menu' ) . '</a></div></div>';
1484
+ $general_tab->createOption( array(
1485
+ 'name' => 'woo-premium-features',
 
1486
  'type' => 'custom',
1487
  'custom' => $custom_html,
1488
+ 'class' => 'woocommerce-options',
1489
  ) );
1490
  }
1491
 
1501
  public function create_footer_options_upsell( $panel, $titan )
1502
  {
1503
  global $mm_fs ;
1504
+ global $general_tab ;
 
 
 
1505
  $custom_html = '<div class="mm-business-features-holder"><div class="mm-bussiness-features"><h3>' . __( 'Give your Website an App look and feel', 'mobile-menu' ) . '</h3>';
1506
  $custom_html .= '<p><span class="dashicons dashicons-yes"></span><strong>Fixed Footer Bar</strong></p>';
1507
  $custom_html .= '<p><span class="dashicons dashicons-yes"></span><strong>Auto-hide on Scroll</strong></p>';
1513
  $custom_html .= '<div class="mm-business-image"><a href="https://prodemo.wpmobilemenu.com/?utm_source=wprepo-dash&utm_medium=user%20website&utm_campaign=upsell_link" target="_blank"><img src="' . plugins_url( 'demo-content/assets/prodemo-mobile-menu.png', __FILE__ ) . '">';
1514
  $custom_html .= '</a><p><a href="https://prodemo.wpmobilemenu.com/?utm_source=wprepo-dash&utm_medium=user%20website&utm_campaign=upsell_link"> ' . esc_html( 'See Demo Site', 'mobile-menu' ) . '</a></div></div>';
1515
  // Footer Tab Upgrade Content.
1516
+ $general_tab->createOption( array(
1517
+ 'name' => 'footer-upsell',
1518
  'type' => 'custom',
1519
  'custom' => $custom_html,
1520
+ 'class' => 'footer-options',
1521
  ) );
1522
  }
1523
 
includes/class-wp-mobile-menu-walker-nav-menu.php CHANGED
@@ -65,7 +65,7 @@ class WP_Mobile_Menu_Walker_Nav_Menu extends Walker_Nav_Menu
65
  if ( $this->footer_li_class !== '' ) {
66
  }
67
  $output .= apply_filters(
68
- 'walker_nav_menu_start_el',
69
  $item_output,
70
  $item,
71
  $depth,
65
  if ( $this->footer_li_class !== '' ) {
66
  }
67
  $output .= apply_filters(
68
+ 'wp_mobmenu_walker_nav_menu_start_el',
69
  $item_output,
70
  $item,
71
  $depth,
includes/css/font/mobmenu.eot DELETED
Binary file
includes/css/font/mobmenu.svg DELETED
@@ -1,148 +0,0 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg xmlns="http://www.w3.org/2000/svg">
4
- <metadata>Copyright (C) 2020 by original authors @ fontello.com</metadata>
5
- <defs>
6
- <font id="mobmenu" horiz-adv-x="1000" >
7
- <font-face font-family="mobmenu" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
8
- <missing-glyph horiz-adv-x="1000" />
9
- <glyph glyph-name="ok-1" unicode="&#xe800;" d="M933 534q0-22-16-38l-404-404-76-76q-16-15-38-15t-38 15l-76 76-202 202q-15 16-15 38t15 38l76 76q16 16 38 16t38-16l164-165 366 367q16 16 38 16t38-16l76-76q16-15 16-38z" horiz-adv-x="1000" />
10
-
11
- <glyph glyph-name="ok" unicode="&#xe80f;" d="M1179 778q-250-222-600-750l-115-179q-144 180-464 500l107 107 286-250q150 150 279 272t206 187 131 111 77 59l21 14q4 0 11-2t26-19 35-50z" horiz-adv-x="1179" />
12
-
13
- <glyph glyph-name="plus" unicode="&#xe810;" d="M786 439v-107q0-22-16-38t-38-15h-232v-233q0-22-16-37t-38-16h-107q-22 0-38 16t-15 37v233h-232q-23 0-38 15t-16 38v107q0 23 16 38t38 16h232v232q0 22 15 38t38 16h107q23 0 38-16t16-38v-232h232q23 0 38-16t16-38z" horiz-adv-x="785.7" />
14
-
15
- <glyph glyph-name="minus" unicode="&#xe812;" d="M786 439v-107q0-22-16-38t-38-15h-678q-23 0-38 15t-16 38v107q0 23 16 38t38 16h678q23 0 38-16t16-38z" horiz-adv-x="785.7" />
16
-
17
- <glyph glyph-name="plus-1" unicode="&#xe813;" d="M550 400q30 0 30-50t-30-50l-210 0 0-210q0-30-50-30t-50 30l0 210-210 0q-30 0-30 50t30 50l210 0 0 210q0 30 50 30t50-30l0-210 210 0z" horiz-adv-x="580" />
18
-
19
- <glyph glyph-name="plus-outline" unicode="&#xe818;" d="M469-119q-65 0-111 46t-45 111l2 159-157-3q-65 0-112 46t-46 110 46 111 110 46l159 2-2 153q0 65 45 111t111 46 110-46 46-110l3-154 155-2q63 0 109-46t46-111-46-110-111-46l-153 3-3-160q0-64-46-110t-110-46z m-53 417l0-261q0-22 16-37t37-15 37 16 15 37l0 260 262 0q21 0 36 15t15 37-16 37-37 16l-260 0 0 260q0 22-15 37t-37 15-37-15-16-37l0-260-260 0q-22 0-37-16t-15-37 15-37 37-15l260 0z" horiz-adv-x="938" />
20
-
21
- <glyph glyph-name="plus-2" unicode="&#xe819;" d="M729 454q44 0 74-31t31-73-31-73-74-30l-208 3 0-212q0-43-30-73t-75-31-73 31-30 73l3 212-212-3q-44 0-74 30t-30 73 30 73 74 31l212 0-3 209q0 42 30 73t73 31 75-31 30-73l0-209 208 0z" horiz-adv-x="834" />
22
-
23
- <glyph glyph-name="align-justify-1" unicode="&#xe84f;" d="M0-89l0 156 1000 0 0-156-1000 0z m0 240l0 156 1000 0 0-156-1000 0z m0 242l0 156 1000 0 0-156-1000 0z m0 240l0 157 1000 0 0-157-1000 0z" horiz-adv-x="1000" />
24
-
25
- <glyph glyph-name="instagram" unicode="&#xe88e;" d="M0-150l0 674 270 0q-26-51-26-109 0-104 73-176t176-73 176 73 73 176q0 58-25 109l283 0 0-674-1000 0z m0 715l0 285 1000 0 0-285-311 0q-74 96-196 96t-196-96l-297 0z m49 45l35 0 0 191q-16-6-25-20t-10-33l0-138z m60 0l36 0 0 197-36 0 0-197z m59 0l35 0 0 197-35 0 0-197z m61 0l33 0 0 197-33 0 0-197z m44-196q0 90 65 155t155 64 155-64 65-155-65-155-155-63-155 63-65 155z m45 1q0-73 51-124t123-50 124 50 52 124-52 123-124 50-123-50-51-123z m422 253q0-23 18-41t43-17l94 0q23 0 41 17t17 41l0 80q0 24-17 42t-41 17l-94 0q-26 0-43-17t-18-42l0-80z" horiz-adv-x="1000" />
26
-
27
- <glyph glyph-name="linkedin" unicode="&#xe88f;" d="M0-150l0 1000 1000 0 0-1000-1000 0z m164 729q2-34 25-54t53-23l2 0q35 2 59 24t23 53q-2 33-25 53t-55 21q-35 0-58-22t-24-52z m8-569l144 0 0 434-144 0 0-434z m225 0l144 0 0 242q0 24 4 36 27 52 74 52 72-2 72-97l0-233 145 0 0 248q-2 98-47 149-47 47-119 49-53-2-86-26-21-15-43-47l0 61-144 0q1-18 1-70 0-90-1-364z" horiz-adv-x="1000" />
28
-
29
- <glyph glyph-name="pinterest" unicode="&#xe892;" d="M0 350q4 213 150 356t350 144q219-4 358-149t142-351q-4-211-150-354t-350-146q-70 0-141 21 14 22 28 49 15 34 39 125 6 26 17 69 14-24 47-43 88-41 186 8 101 58 140 181 36 129-8 239t-158 160q-142 41-277-9t-187-171q-14-45-17-89t3-86 29-75 63-51q9-4 15 0 8 4 16 31t6 38q-2 3-8 13-41 67-27 140t60 124q72 64 169 70t165-53q37-42 48-103t0-116-38-105q-49-76-115-78-39 2-64 30t-14 66q3 21 23 84t22 94q-6 74-69 76-49-6-72-44t-26-87q6-57 18-78-21-88-33-141-4-14-22-84t-19-107l0-55q-139 64-219 187t-80 270z" horiz-adv-x="1000" />
30
-
31
- <glyph glyph-name="twitter" unicode="&#xe898;" d="M0 26q162-19 305 88-67-2-117 39t-77 105q18-3 43-1 34 1 49 5-99 34-139 108-23 51-23 103 57-29 92-27-80 68-90 146-6 63 25 135 114-125 239-180 93-39 185-39-12 94 26 159 45 70 128 93 55 14 106-3t86-55q60 6 133 49-30-86-92-118 62 10 121 36-10-20-37-53t-68-57q1-10 1-17 4-110-42-233-81-201-243-302-160-90-382-69-141 16-229 88z" horiz-adv-x="1000" />
32
-
33
- <glyph glyph-name="tumblr" unicode="&#xe899;" d="M0-150l0 1000 1000 0 0-1000-1000 0z m291 559l76 0 0-276q2-70 57-101 41-22 103-22 84 0 102 2 45 0 80 20l0 119q-21-14-47-24-43-15-80-5-31 7-47 19-8 8-8 12l0 256 162 0 0 113-162 0 0 168-93 0q-4-70-41-119t-102-49l0-113z" horiz-adv-x="1000" />
34
-
35
- <glyph glyph-name="vimeo" unicode="&#xe89a;" d="M0-150l0 1000 1000 0 0-1000-1000 0z m133 600q2-4 8-12t7-10q12-12 38-4 25 10 41 9t29-26q27-74 74-252 31-102 76-121 26-6 52 0t46 17q119 76 213 239 2 3 26 50t33 69 23 60 12 68-18 47q-53 41-108 27t-101-58-62-94q48 0 58-3 29-16 25-65-11-51-37-100t-58-54q-14 0-30 17-19 24-27 50t-13 71-6 55q0 2-5 31t-8 42-11 36-19 35-28 18q-66 10-156-74-37-33-74-64l0-4z" horiz-adv-x="1000" />
36
-
37
- <glyph glyph-name="star" unicode="&#xe8a3;" d="M4 457q14 41 57 47l262 39 113 235q19 41 64 41t65-41l113-235 262-39q43-6 56-47t-15-70l-192-191 43-264q8-43-29-68-18-14-41-14-18 0-35 8l-227 123-226-123q-18-8-35-8-24 0-41 14-38 25-30 68l43 264-189 191q-32 29-18 70z m69-21l191-191q25-26 19-61l-44-264 226 123q16 8 35 8t35-8l227-123-45 264q-6 35 20 61l191 191-260 37q-39 6-54 41l-114 234-113-234q-16-35-55-39z" horiz-adv-x="1001" />
38
-
39
- <glyph glyph-name="user" unicode="&#xe8a4;" d="M4-105q-14 43 25 70 119 78 291 116-84 105-119 255-10 55-11 122t23 149 66 138q84 105 223 105t222-105q43-57 67-138t22-149-11-122q-35-150-119-255 172-38 291-116 39-27 26-71t-61-44l-875 0q-21 0-38 13t-22 32z m60 17l875 0q-109 73-267 108l-79 16q-45-30-91-30t-92 30l-78-16q-160-35-268-108z m193 602q-13-103 16-208t96-186l10-14q56-65 123-65t123 65l9 14q67 82 96 186t16 208q-14 113-76 193t-168 80-168-80-77-193z" horiz-adv-x="1003" />
40
-
41
- <glyph glyph-name="star-1" unicode="&#xe8d3;" d="M1050 464q0-15-29-38l-275-200 105-323q5-17 5-30 0-24-18-24-17 0-38 17l-275 199-275-199q-23-17-39-17-18 0-18 23 0 11 6 31l105 323-275 200q-29 21-29 37 0 23 49 23l340-1 104 324q12 40 32 40 19 0 31-40l106-324 339 1q49 0 49-22z" horiz-adv-x="1050" />
42
-
43
- <glyph glyph-name="user-1" unicode="&#xe8d4;" d="M1070-88q0-21-2-63h-1067q0 10 0 31t-1 32q0 30 1 37 12 49 64 85t112 53 125 47 97 65q17 22 17 38 0 22-11 73-4 21-10 37t-16 33-16 31q-15 35-33 132-6 38-6 75 0 105 54 168t157 63 158-63 53-168q0-31-7-75-14-89-32-132-6-14-15-31t-16-33-11-37q-11-51-11-73 0-18 17-38 31-36 97-65t125-47 111-53 64-85q2-8 2-37z" horiz-adv-x="1070" />
44
-
45
- <glyph glyph-name="left-open" unicode="&#xe8f6;" d="M308 349l346-346-154-154-500 500 500 500 154-154z" horiz-adv-x="654" />
46
-
47
- <glyph glyph-name="right-open" unicode="&#xe8f7;" d="M154 849l500-500-500-500-154 154 346 346-346 346z" horiz-adv-x="654" />
48
-
49
- <glyph glyph-name="down-dir" unicode="&#xe8fc;" d="M265 84l-265 530h529z" horiz-adv-x="529" />
50
-
51
- <glyph glyph-name="right-dir" unicode="&#xe8fd;" d="M529 349l-529-265v530z" horiz-adv-x="529" />
52
-
53
- <glyph glyph-name="star-empty" unicode="&#xe93d;" d="M635 290l170 166-235 34-106 213-105-213-236-34 171-166-41-235 211 111 211-111z m294 199q0-12-15-27l-202-197 48-279q0-4 0-12 0-28-23-28-10 0-22 7l-251 132-250-132q-12-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" />
54
-
55
- <glyph glyph-name="up-dir" unicode="&#xe980;" d="M571 171q0-14-10-25t-25-10h-500q-15 0-25 10t-11 25 11 26l250 250q10 10 25 10t25-10l250-250q10-11 10-26z" horiz-adv-x="571.4" />
56
-
57
- <glyph glyph-name="left-dir" unicode="&#xe981;" d="M357 600v-500q0-14-10-25t-26-11-25 11l-250 250q-10 11-10 25t10 25l250 250q11 11 25 11t26-11 10-25z" horiz-adv-x="357.1" />
58
-
59
- <glyph glyph-name="menu" unicode="&#xe9d6;" d="M650 400q22 0 36-15t14-35-15-35-35-15l-600 0q-20 0-35 15t-15 35 14 35 36 15l600 0z m-600 100q-20 0-35 15t-15 35 14 35 36 15l600 0q22 0 36-15t14-35-15-35-35-15l-600 0z m600-300q22 0 36-15t14-35-15-35-35-15l-600 0q-20 0-35 15t-15 35 14 35 36 15l600 0z" horiz-adv-x="700" />
60
-
61
- <glyph glyph-name="minus-1" unicode="&#xe9d8;" d="M550 400q30 0 30-50t-30-50l-520 0q-30 0-30 50t30 50l520 0z" horiz-adv-x="580" />
62
-
63
- <glyph glyph-name="right-open-2" unicode="&#xea32;" d="M98 626l226-236q16-16 16-40 0-22-16-38l-226-236q-16-16-40-16t-40 16q-36 36 0 80l186 194-186 196q-36 44 0 80 16 16 41 16t39-16z" horiz-adv-x="340" />
64
-
65
- <glyph glyph-name="th" unicode="&#xeac3;" d="M0-15q0 130 130 130t130-130-130-130-130 130z m0 365q0 130 130 130t130-130-130-130-130 130z m0 365q0 130 130 130t130-130-130-130-130 130z m365-730q0 130 130 130t130-130-130-130-130 130z m0 365q0 130 130 130t130-130-130-130-130 130z m0 365q0 130 130 130t130-130-130-130-130 130z m364-730q0 130 131 130 130 0 130-130t-130-130q-131 0-131 130z m0 365q0 130 131 130 130 0 130-130t-130-130q-131 0-131 130z m0 365q0 130 131 130 130 0 130-130t-130-130q-131 0-131 130z" horiz-adv-x="990" />
66
-
67
- <glyph glyph-name="th-large" unicode="&#xeac5;" d="M0 663q0 65 46 110t110 46l104 0q65 0 111-46t45-110l0-104q0-65-45-111t-111-45l-104 0q-65 0-110 45t-46 111l0 104z m521 0q0 65 46 110t111 46l103 0q65 0 111-46t46-110l0-104q0-65-46-111t-111-45l-103 0q-65 0-111 45t-46 111l0 104z m-521-521q0 65 46 110t110 46l104 0q65 0 111-46t45-110l0-104q0-65-45-111t-111-46l-104 0q-65 0-110 46t-46 111l0 104z m521 0q0 65 46 110t111 46l103 0q65 0 111-46t46-110l0-104q0-65-46-111t-111-46l-103 0q-65 0-111 46t-46 111l0 104z" horiz-adv-x="938" />
68
-
69
- <glyph glyph-name="th-list" unicode="&#xeac7;" d="M860 90q43 0 73-31t31-74q0-43-31-73t-73-31l-365 0q-44 0-74 31t-31 73 31 74 74 31l365 0z m0 364q43 0 73-31t31-73-31-73-73-31l-365 0q-44 0-74 31t-31 73 31 73 74 31l365 0z m0 365q43 0 73-31t31-73q0-44-31-74t-73-31l-365 0q-42 0-74 31t-31 74 31 73 74 31l365 0z m-860-834q0 130 130 130t130-130-130-130-130 130z m0 365q0 130 130 130t130-130-130-130-130 130z m0 365q0 130 130 130t130-130-130-130-130 130z" horiz-adv-x="964" />
70
-
71
- <glyph glyph-name="minus-2" unicode="&#xeacb;" d="M729 455q44 0 74-32t31-73-31-74-74-30l-625 0q-44 0-74 30t-30 74q0 43 31 74t73 31l625 0z" horiz-adv-x="834" />
72
-
73
- <glyph glyph-name="th-list-3" unicode="&#xec71;" d="M160 660l0-161-160 0 0 161 160 0z m0-230l0-162-160 0 0 162 160 0z m0-230l0-160-160 0 0 160 160 0z m641 406l0-81-533 0 0 81 533 0z m0-230l0-81-533 0 0 81 533 0z m0-217l0-81-533 0 0 81 533 0z" horiz-adv-x="801" />
74
-
75
- <glyph glyph-name="cancel" unicode="&#xec73;" d="M123 654l181-181 181 181 123-124-182-178 183-184-124-121-181 182-181-182-123 122 183 183-182 178z" horiz-adv-x="609" />
76
-
77
- <glyph glyph-name="cancel-circle" unicode="&#xec74;" d="M406 755c227 0 405-180 405-404 0-226-178-406-405-406-225 0-406 180-406 406 0 224 181 404 406 404z m84-404l125 125-85 84-124-125-126 126-84-85 127-125-127-125 84-85 126 127 124-125 85 83z" horiz-adv-x="811" />
78
-
79
- <glyph glyph-name="cancel-1" unicode="&#xecf2;" d="M0 90q0 36 26 62l195 195-195 196q-26 25-26 61t26 61 61 25 61-25l196-196 195 196q25 25 61 25t61-25 25-61-25-61l-195-196 195-195q25-26 25-62t-25-61q-25-25-61-25t-61 25l-195 195-196-195q-25-25-61-25t-61 25q-26 26-26 61z" horiz-adv-x="686.5" />
80
-
81
- <glyph glyph-name="cancel-2" unicode="&#xedf5;" d="M0 71l279 279-279 279 221 221 279-279 279 279 221-221-279-279 279-279-221-221-279 279-279-279z" horiz-adv-x="1000" />
82
-
83
- <glyph glyph-name="cancel-circled-1" unicode="&#xedf6;" d="M0 350q0 207 147 354t353 146 354-146 146-354-146-354-354-146-353 146-147 354z m219-156l125-125 156 156 156-156 125 125-156 156 156 156-125 125-156-156-156 156-125-125 156-156z" horiz-adv-x="1000" />
84
-
85
- <glyph glyph-name="cancel-circled2" unicode="&#xedf7;" d="M0 350q0 207 147 354t353 146 354-146 146-354-146-354-354-146-353 146-147 354z m109 0q0-162 115-276t276-115 276 115 115 276-115 276-276 115-276-115-115-276z m145-137l137 137-137 137 109 109 137-137 137 137 109-109-137-137 137-137-109-109-137 137-137-137z" horiz-adv-x="1000" />
86
-
87
- <glyph glyph-name="up-open-1" unicode="&#xee59;" d="M0 174l352 352 148 148 148-148 352-352-148-148-352 351-352-351z" horiz-adv-x="1000" />
88
-
89
- <glyph glyph-name="cancel-3" unicode="&#xee65;" d="M724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" />
90
-
91
- <glyph glyph-name="cancel-circled-2" unicode="&#xee66;" d="M641 224q0 14-10 25l-101 101 101 101q10 11 10 25 0 15-10 26l-51 50q-10 11-25 11-15 0-25-11l-101-101-101 101q-11 11-25 11-16 0-26-11l-50-50q-11-11-11-26 0-14 11-25l101-101-101-101q-11-11-11-25 0-15 11-26l50-50q10-11 26-11 14 0 25 11l101 101 101-101q10-11 25-11 15 0 25 11l51 50q10 11 10 26z m216 126q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
92
-
93
- <glyph glyph-name="th-large-1" unicode="&#xee68;" d="M429 279v-215q0-29-22-50t-50-21h-286q-29 0-50 21t-21 50v215q0 29 21 50t50 21h286q29 0 50-21t22-50z m0 428v-214q0-29-22-50t-50-22h-286q-29 0-50 22t-21 50v214q0 29 21 50t50 22h286q29 0 50-22t22-50z m500-428v-215q0-29-22-50t-50-21h-286q-29 0-50 21t-21 50v215q0 29 21 50t50 21h286q29 0 50-21t22-50z m0 428v-214q0-29-22-50t-50-22h-286q-29 0-50 22t-21 50v214q0 29 21 50t50 22h286q29 0 50-22t22-50z" horiz-adv-x="928.6" />
94
-
95
- <glyph glyph-name="th-1" unicode="&#xee69;" d="M286 154v-108q0-22-16-37t-38-16h-178q-23 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m0 285v-107q0-22-16-38t-38-15h-178q-23 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m357-285v-108q0-22-16-37t-38-16h-178q-23 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m-357 571v-107q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z m357-286v-107q0-22-16-38t-38-15h-178q-23 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m357-285v-108q0-22-16-37t-38-16h-178q-22 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m-357 571v-107q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z m357-286v-107q0-22-16-38t-38-15h-178q-22 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m0 286v-107q0-22-16-38t-38-16h-178q-22 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z" horiz-adv-x="1000" />
96
-
97
- <glyph glyph-name="th-list-1" unicode="&#xee6a;" d="M286 154v-108q0-22-16-37t-38-16h-178q-23 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m0 285v-107q0-22-16-38t-38-15h-178q-23 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m714-285v-108q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v108q0 22 16 38t38 15h535q23 0 38-15t16-38z m-714 571v-107q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z m714-286v-107q0-22-16-38t-38-15h-535q-23 0-38 15t-16 38v107q0 23 16 38t38 16h535q23 0 38-16t16-38z m0 286v-107q0-22-16-38t-38-16h-535q-23 0-38 16t-16 38v107q0 22 16 38t38 16h535q23 0 38-16t16-38z" horiz-adv-x="1000" />
98
-
99
- <glyph glyph-name="up-open-2" unicode="&#xee6b;" d="M939 107l-92-92q-11-10-26-10t-25 10l-296 297-296-297q-11-10-25-10t-25 10l-93 92q-11 11-11 26t11 25l414 414q11 10 25 10t25-10l414-414q11-11 11-25t-11-26z" horiz-adv-x="1000" />
100
-
101
- <glyph glyph-name="down-open-2" unicode="&#xee6c;" d="M939 399l-414-413q-10-11-25-11t-25 11l-414 413q-11 11-11 26t11 25l93 92q10 11 25 11t25-11l296-296 296 296q11 11 25 11t26-11l92-92q11-11 11-25t-11-26z" horiz-adv-x="1000" />
102
-
103
- <glyph glyph-name="cancel-squared" unicode="&#xee6d;" d="M700 750q42 0 71-29t29-71l0-600q0-40-29-70t-71-30l-600 0q-40 0-70 30t-30 70l0 600q0 42 30 71t70 29l600 0z m-146-638l86 86-154 152 154 154-86 86-154-152-152 152-88-86 154-154-154-152 88-86 152 152z" horiz-adv-x="800" />
104
-
105
- <glyph glyph-name="cancel-4" unicode="&#xee6f;" d="M452 194q18-18 18-43t-18-43q-18-16-43-16t-43 16l-132 152-132-152q-18-16-43-16t-43 16q-16 18-16 43t16 43l138 156-138 158q-16 18-16 43t16 43q18 16 43 16t43-16l132-152 132 152q18 16 43 16t43-16q18-18 18-43t-18-43l-138-158z" horiz-adv-x="470" />
106
-
107
- <glyph glyph-name="up-open-big" unicode="&#xee70;" d="M804 130l-372 358-370-358q-26-22-50 0-24 24 0 50l396 390q26 26 48 0l396-390q24-26 0-50-26-22-48 0z" horiz-adv-x="864" />
108
-
109
- <glyph glyph-name="down-open-big" unicode="&#xee71;" d="M63 570l370-356 372 356q22 26 48 0 26-22 0-48l-396-392q-22-22-48 0l-396 392q-26 26 0 48 24 24 50 0z" horiz-adv-x="866" />
110
-
111
- <glyph glyph-name="down-open-mini" unicode="&#xee73;" d="M405 470q22 26 48 0 26-22 0-48l-196-192q-22-22-48 0l-196 192q-26 26 0 48 24 24 50 0l170-156z" horiz-adv-x="466" />
112
-
113
- <glyph glyph-name="cancel-circled-outline" unicode="&#xee77;" d="M469 819q194 0 331-137t138-332-138-331-331-138-331 138-138 331 138 332 331 137z m0-834q151 0 258 107t107 258-107 258-258 107-258-107-107-258 107-258 258-107z m36 365l139-137q12-13 5-29t-24-16q-11 0-19 7l-137 139-138-139q-7-7-18-7-17 0-24 16t5 29l139 137-139 138q-18 17 1 36t36 1l138-138 137 138q18 18 37-1t1-36z" horiz-adv-x="938" />
114
-
115
- <glyph glyph-name="cancel-outline" unicode="&#xee79;" d="M729 143q0-64-46-110t-110-47-110 47l-98 97-99-97q-43-44-110-44t-110 44q-46 46-46 110 0 65 46 111l98 98-98 97q-46 46-46 111 0 64 46 110 44 44 110 44t110-44l99-97 98 97q43 44 110 44t111-44q45-45 45-110 0-66-45-111l-99-97 99-98q45-45 45-111z m-364 135l171-171q15-15 37-15t37 15 15 36q0 22-15 37l-171 172 171 171q15 15 15 37 0 22-15 37t-37 15-37-15l-171-172-172 172q-15 15-37 15t-36-15q-16-17-16-37 0-21 16-37l171-171-171-172q-16-16-16-37 0-20 16-36 15-15 36-15t37 15z" horiz-adv-x="729" />
116
-
117
- <glyph glyph-name="menu-2" unicode="&#xee7a;" d="M834 90q42 0 73-30t31-75q0-42-30-73t-74-31l-730 0q-44 0-74 31t-30 73q0 44 31 75t73 30l730 0z m0 364q44 0 74-31t30-73-30-73-74-30l-730 0q-44 0-74 30t-30 73 30 73 74 31l730 0z m0 365q44 0 74-31t30-73q0-43-31-74t-73-31l-730 0q-43 0-73 31t-31 74q0 43 30 73t74 31l730 0z" horiz-adv-x="938" />
118
-
119
- <glyph glyph-name="menu-outline" unicode="&#xee7b;" d="M885 38l-729 0q-21 0-37-16t-15-37 15-36 37-15l729 0q21 0 37 15t16 36-16 37-37 16z m0 104q65 0 111-46t45-111-45-110-111-46l-729 0q-65 0-110 46t-46 110 46 111 110 46l729 0z m0 261l-729 0q-21 0-37-16t-15-37 15-37 37-15l729 0q21 0 37 15t16 37-16 37-37 16z m0 104q65 0 111-46t45-111-45-110-111-46l-729 0q-65 0-110 46t-46 110 46 111 110 46l729 0z m0 260l-729 0q-21 0-37-15t-15-37 15-37 37-15l729 0q21 0 37 15t16 37-16 37-37 15z m0 105q65 0 111-46t45-111-45-110-111-46l-729 0q-65 0-110 46t-46 110 46 111 110 46l729 0z" horiz-adv-x="1041" />
120
-
121
- <glyph glyph-name="cancel-circle-1" unicode="&#xee7c;" d="M465 797q184 0 315-131t131-316-131-315-315-132-316 132-131 315 131 316 316 131z m220-588l-141 142 141 141-79 79-142-141-141 141-79-79 141-141-141-142 79-79 141 141 142-141z" horiz-adv-x="928" />
122
-
123
- <glyph glyph-name="down-open" unicode="&#xf004;" d="M0 533q0 25 18 43t44 18 42-18l305-303 304 303q18 18 43 18t43-18q18-18 18-43t-18-43l-390-391-391 391q-18 19-18 43z" horiz-adv-x="817.4" />
124
-
125
- <glyph glyph-name="up-open" unicode="&#xf005;" d="M0 167q0 26 18 43l391 391 390-391q17-17 17-43 0-26-17-44-18-17-44-17t-43 17l-303 305-305-305q-18-17-43-17t-43 17q-18 18-18 44z" horiz-adv-x="816.9" />
126
-
127
- <glyph glyph-name="menu-3" unicode="&#xf008;" d="M68 62q0-30 21-51t51-21h793q30 0 51 21t21 51-21 51-51 21h-793q-29 0-51-21t-21-51z m0 288q0-30 21-51t51-21h793q30 0 51 21t21 51-21 51-51 21h-793q-29 0-51-21t-21-51z m0 288q0-30 21-51t51-21h793q30 0 51 21t21 51-21 51-51 21h-793q-29 0-51-21t-21-51z" horiz-adv-x="1073.2" />
128
-
129
- <glyph glyph-name="th-list-2" unicode="&#xf009;" d="M0 62q0-30 21-51t51-21h32q30 0 51 21t21 51-21 51-51 21h-32q-30 0-51-21t-21-51z m0 288q0-30 21-51t51-21h32q30 0 51 21t21 51-21 51-51 21h-32q-30 0-51-21t-21-51z m0 288q0-30 21-51t51-21h32q30 0 51 21t21 51-21 51-51 21h-32q-30 0-51-21t-21-51z m234-576q0-30 21-51t51-21h559q30 0 51 21t21 51-21 51-51 21h-559q-30 0-51-21t-21-51z m0 288q0-30 21-51t51-21h559q30 0 51 21t21 51-21 51-51 21h-559q-30 0-51-21t-21-51z m0 288q0-30 21-51t51-21h559q30 0 51 21t21 51-21 51-51 21h-559q-30 0-51-21t-21-51z" horiz-adv-x="937.5" />
130
-
131
- <glyph glyph-name="th-thumb" unicode="&#xf00a;" d="M0-66v286q0 22 15 37t37 16h285q22 0 37-16t15-37v-286q0-21-15-36t-37-15h-285q-22 0-37 15t-15 36z m0 546v286q0 21 15 36t37 15h285q22 0 37-15t15-36v-286q0-22-15-37t-37-16h-285q-22 0-37 16t-15 37z m547-546v286q0 22 15 37t37 16h286q21 0 37-16t15-37v-286q0-21-15-36t-37-15h-286q-21 0-37 15t-15 36z m0 546v286q0 21 15 36t37 15h286q22 0 37-15t15-36v-286q0-22-15-37t-37-16h-286q-21 0-37 16t-15 37z" horiz-adv-x="937.5" />
132
-
133
- <glyph glyph-name="th-thumb-empty" unicode="&#xf00b;" d="M0-66v286q0 22 15 37t37 16h286q21 0 37-16t15-37v-286q0-21-15-36t-37-15h-286q-22 0-37 15t-15 36z m0 546v286q0 21 15 36t37 15h286q21 0 37-15t15-36v-286q0-22-15-37t-37-16h-286q-21 0-37 16t-15 37z m88-510h214v214h-214v-214z m0 546h214v213h-214v-213z m459-582v286q0 22 15 37t37 16h286q21 0 37-16t15-37v-286q0-21-15-36t-37-15h-286q-21 0-37 15t-15 36z m0 546v286q0 21 15 36t37 15h286q22 0 37-15t15-36v-286q0-22-15-37t-37-16h-286q-21 0-37 16t-15 37z m88-510h215v214h-215v-214z m0 546h215v213h-215v-213z" horiz-adv-x="937.5" />
134
-
135
- <glyph glyph-name="cancel-circled" unicode="&#xf06e;" d="M0 350q0 95 37 182t100 149 150 100 182 37 182-37 149-100 100-149 37-182-37-182-100-150-149-100-182-37-182 37-150 100-100 150-37 182z m261-155q0-22 15-38 15-15 37-15 22 0 37 15l119 119 118-119q15-15 37-15 22 0 37 15 15 16 15 38t-15 37l-118 118 118 119q15 15 15 37t-15 37-37 15-37-15l-118-119-119 119q-15 15-37 15t-37-15q-15-15-15-37t15-37l118-119-118-118q-15-15-15-37z" horiz-adv-x="937.5" />
136
-
137
- <glyph glyph-name="menu-1" unicode="&#xf0c9;" d="M857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-14-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" />
138
-
139
- <glyph glyph-name="gplus" unicode="&#xf0d5;" d="M802 341q0-117-49-207t-138-142-206-51q-83 0-159 32t-131 87-87 131-32 159 32 159 87 131 131 87 159 32q160 0 274-107l-111-107q-65 63-163 63-69 0-127-34t-92-94-34-130 34-130 92-94 127-34q46 0 85 13t64 32 44 43 27 47 12 41h-232v141h386q7-36 7-68z m484 68v-118h-117v-116h-117v116h-117v118h117v116h117v-116h117z" horiz-adv-x="1285.7" />
140
-
141
- <glyph glyph-name="ellipsis" unicode="&#xf141;" d="M214 439v-107q0-22-15-38t-38-15h-107q-23 0-38 15t-16 38v107q0 23 16 38t38 16h107q22 0 38-16t15-38z m286 0v-107q0-22-16-38t-38-15h-107q-22 0-38 15t-15 38v107q0 23 15 38t38 16h107q23 0 38-16t16-38z m286 0v-107q0-22-16-38t-38-15h-107q-22 0-38 15t-16 38v107q0 23 16 38t38 16h107q23 0 38-16t16-38z" horiz-adv-x="785.7" />
142
-
143
- <glyph glyph-name="ellipsis-vert" unicode="&#xf142;" d="M214 154v-108q0-22-15-37t-38-16h-107q-23 0-38 16t-16 37v108q0 22 16 38t38 15h107q22 0 38-15t15-38z m0 285v-107q0-22-15-38t-38-15h-107q-23 0-38 15t-16 38v107q0 23 16 38t38 16h107q22 0 38-16t15-38z m0 286v-107q0-22-15-38t-38-16h-107q-23 0-38 16t-16 38v107q0 22 16 38t38 16h107q22 0 38-16t15-38z" horiz-adv-x="214.3" />
144
-
145
- <glyph glyph-name="facebook-squared" unicode="&#xf308;" d="M696 779q67 0 114-48t47-113v-536q0-66-47-113t-114-48h-104v333h111l16 129h-127v83q0 31 13 46t51 16l68 1v115q-35 5-100 5-75 0-121-44t-45-127v-95h-112v-129h112v-333h-297q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535z" horiz-adv-x="857.1" />
146
- </font>
147
- </defs>
148
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/css/font/mobmenu.ttf DELETED
Binary file
includes/css/mobmenu-admin.css CHANGED
@@ -9,7 +9,11 @@
9
  .menu-item-handle .item-title {
10
  margin-right: 0px!important;
11
  }
12
-
 
 
 
 
13
  .menu .mobmenu-item-settings:before {
14
  padding-right: 5px;
15
  }
@@ -233,17 +237,24 @@ td.second.tf-select .select2 {
233
  .titan-framework-panel-wrap td.second.tf-iframe iframe {
234
  margin-left: -200px!important;
235
  }
236
- .tf-sortable .vertical li {
237
  width: 50%;
 
 
 
238
  }
239
  .tf-sortable li {
240
  width: 12%;
241
  float: left;
242
  line-height: 20px;
243
  }
244
- .active-tab-general-options .tf-sortable ul li i {
245
- line-height: 20px;
246
- width: 20px;
 
 
 
 
247
  }
248
  .active-tab-general-options .tf-sortable div {
249
  margin-top: 20px;
@@ -256,10 +267,7 @@ td.second.tf-select .select2 {
256
  display: none;
257
  }
258
  .options-container th.first {
259
- padding: 30px!important;
260
- }
261
- .active-tab-general-options .tf-sortable ul li i.dashicons-menu, .active-tab-general-options .tf-sortable ul li i.dashicons-visibility {
262
- display: none!important;
263
  }
264
  .tf-sortable ul{
265
  width: 100%;
@@ -285,16 +293,35 @@ td.second.tf-select .select2 {
285
  color: #656e77;
286
  letter-spacing: 1px;
287
  }
 
 
 
 
 
 
 
288
  .titan-framework-panel-wrap .tf-heading th {
289
  background:none repeat scroll 0 0 #fbfbfb!important;
290
  width: 100vw;
291
  }
 
 
 
 
 
292
  .titan-framework-panel-wrap .active-tab-fonts .form-table th label {
293
  font-weight: 600;
294
  }
295
- .titan-framework-panel-wrap .nav-tab-active, .titan-framework-panel-wrap .nav-tab-active:hover {
296
- background: #656e77!important;
297
- border-bottom: 1px solid #636058!important;
 
 
 
 
 
 
 
298
  }
299
  td.second.tf-multicheck-pages fieldset {
300
  max-height: 500px;
@@ -388,9 +415,14 @@ td.second.tf-multicheck-pages fieldset {
388
  max-width: 250px;
389
  min-width: 160px;
390
  }
 
 
 
391
  .titan-framework-panel-wrap .nav-tab-wrapper, .wrap .titan-framework-panel-wrap h2.nav-tab-wrapper {
392
  border-bottom: none;
393
  background: #f9f9f9;
 
 
394
  }
395
  .titan-framework-panel-wrap {
396
  display: flex;
@@ -401,42 +433,46 @@ td.second.tf-multicheck-pages fieldset {
401
  width: 100%;
402
  border: none;
403
  margin-left: 0px;
404
- color: #484545;
405
  background: #f9f9f9;
406
- border-width: 1px 0;
407
- border-style: solid;
408
- border-bottom-color: #e7e7e7;
409
- border-top-color: #f9f9f9;
410
  font-weight: 500;
411
  line-height: 2.5em;
412
- letter-spacing: 1px;
 
 
 
 
413
  }
414
  .nav-tab-wrapper ul {
415
  margin: 0;
416
  padding: 1px;
417
  }
418
- .nav-tab-wrapper .nav-tab.nav-tab-active ul {
419
  display: grid;
420
  }
421
  .nav-tab-wrapper .nav-tab ul {
422
  display: none;
423
- margin-left: -11px;
424
  }
425
  .nav-tab-wrapper ul li {
426
- padding: 8px;
427
- font-size: 14px;
428
- font-weight: 400;
429
  margin: 0;
430
- background: #eff1f7;
431
- color: #4c4747;
432
  line-height: 2em;
 
 
 
 
 
 
433
  }
434
  .nav-tab-wrapper ul li:hover {
435
  background: #f7f7f7;
436
  color: #3695ef;
437
  }
438
- .titan-framework-panel-wrap .nav-tab-active, .titan-framework-panel-wrap .nav-tab-active:hover {
439
- color: #fff;
440
  }
441
  .wrap .titan-framework-panel-wrap .nav-tab-wrapper {
442
  padding: 0;
@@ -450,19 +486,30 @@ td.second.tf-multicheck-pages fieldset {
450
  .toplevel_page_mobile-menu-options .wrap {
451
  padding: 12px;
452
  }
453
- .toplevel_page_mobile-menu-options .wrap h2{
 
 
 
 
 
 
 
454
  padding-top: 15px;
455
  padding-bottom: 15px;
456
- padding-left: 10px;
457
- color: #656e76;
458
- background: #fff;
459
  }
460
  .titan-framework-panel-wrap .form-table th label {
461
- font-weight: 100;
462
  font-family: sans-serif;
 
 
463
  }
464
  .titan-framework-panel-wrap .form-table td .description {
465
- color: #5d5c5c;
 
 
466
  }
467
  .nav-tab-wrapper ul li:hover {
468
  cursor: pointer;
@@ -484,16 +531,16 @@ td.second.tf-multicheck-pages fieldset {
484
  color: #676767;
485
  }
486
  .titan-framework-panel-wrap .form-table {
487
- margin-top: 0;
488
  background: #fff;
489
  }
490
  .titan-framework-panel-wrap .active-tab-documentation {
491
  width: 100%;
492
  }
493
  .mm-panel-search-bar {
494
- background: #eff1f7;
495
  padding: 10px 10px;
496
- color: #989898;
 
497
  }
498
  .mm-panel-search-bar span {
499
  padding-left: 30px;
@@ -501,7 +548,7 @@ td.second.tf-multicheck-pages fieldset {
501
  .mm-search-settings-results li {
502
  padding: 5px;
503
  line-height: 2em;
504
- background: #fff;
505
  width: 21%;
506
  font-size: 14px;
507
  cursor: pointer;
@@ -512,15 +559,49 @@ td.second.tf-multicheck-pages fieldset {
512
  .mm-search-settings-results li:hover {
513
  background: #f5f5f5;
514
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
515
  .mm-panel-search-bar #mm_search_settings {
516
  border-radius: 4px;
517
  border: 2px solid #0085ba;
518
- padding: 10px;
519
  font-size: 15px;
520
  color: #656e76;
521
  }
522
  .mm-panel-search-bar label {
523
- color: #0085ba;
 
 
 
 
 
 
 
 
 
 
 
 
 
524
  }
525
  .CodeMirror {
526
  border: 1px solid #ddd;
@@ -531,23 +612,30 @@ td.second.tf-multicheck-pages fieldset {
531
  cursor: grab;
532
  border: 1px solid #efefef;
533
  }
 
534
  .options-container.active-tab-general-options .tf-sortable li[data-value="logo"]{
535
  width:120px;
536
- }
537
  .options-container .tf-sortable li span {
538
  padding-top: 40px;
539
  display: block;
540
  text-align: center;
541
  font-size: 11px;
542
  }
 
 
 
 
543
  .mm-version-holder {
544
  position: absolute;
545
- right: 50px;
546
- top: 40px;
 
 
 
547
  }
548
  .mm-version-holder a {
549
- right: 0px;
550
- position: absolute;
551
  }
552
  .mm-bussiness-features .dashicons-yes {
553
  color:#008000;
@@ -555,12 +643,13 @@ td.second.tf-multicheck-pages fieldset {
555
  padding-right: 20px;
556
  }
557
  .mm-bussiness-features p {
558
- line-height: 2.5em;
559
- font-size: 16px;
 
560
  }
561
  .mm-bussiness-features {
562
  float: left;
563
- width: 50%;
564
  }
565
  .mm-bussiness-features h3 {
566
  font-size: 2em;
@@ -587,6 +676,7 @@ td.second.tf-multicheck-pages fieldset {
587
  min-height: 35px;
588
  padding-top: 5px;
589
  border-radius: 6px;
 
590
  }
591
  .toplevel_page_mobile-menu-options .CodeMirror {
592
  resize: vertical;
@@ -625,17 +715,57 @@ td.second.tf-multicheck-pages fieldset {
625
  padding: 5px;
626
  margin-left: 10px;
627
  color: #fff;
628
- background: #168b1f;
629
  text-decoration: none;
630
  cursor: pointer;
631
  }
632
  .mobmenu-preview-iframe {
633
  position: fixed;
634
- top: 100px;
635
- right: 30px;
636
  display: none;
637
  background: #fefdfd;
638
  border: 15px solid #222020;
639
  border-radius: 25px;
640
- z-index:9999;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
641
  }
9
  .menu-item-handle .item-title {
10
  margin-right: 0px!important;
11
  }
12
+ .mobmenu-standard .footer-options th.first, .mobmenu-standard .woocommerce-options th.first {
13
+ opacity: 0;
14
+ width: 10px;
15
+ padding: 0px!important;
16
+ }
17
  .menu .mobmenu-item-settings:before {
18
  padding-right: 5px;
19
  }
237
  .titan-framework-panel-wrap td.second.tf-iframe iframe {
238
  margin-left: -200px!important;
239
  }
240
+ .options-container .tf-sortable .vertical li {
241
  width: 50%;
242
+ }
243
+ .titan-framework-panel-wrap{
244
+
245
  }
246
  .tf-sortable li {
247
  width: 12%;
248
  float: left;
249
  line-height: 20px;
250
  }
251
+ .mobmenu-header-wrap-inner .updated.top {
252
+ position: absolute;
253
+ right: 50px;
254
+ top: 120px;
255
+ }
256
+ .general-options .dashicons.dashicons-menu {
257
+ display: none;
258
  }
259
  .active-tab-general-options .tf-sortable div {
260
  margin-top: 20px;
267
  display: none;
268
  }
269
  .options-container th.first {
270
+ padding: 20px!important;
 
 
 
271
  }
272
  .tf-sortable ul{
273
  width: 100%;
293
  color: #656e77;
294
  letter-spacing: 1px;
295
  }
296
+ .mobmenu-header-wrap .notice, .mobmenu-header-wrap .fs-notice {
297
+ display: none;
298
+ }
299
+
300
+ .mobmenu-header-wrap .fs-plugin-title {
301
+ display: none;
302
+ }
303
  .titan-framework-panel-wrap .tf-heading th {
304
  background:none repeat scroll 0 0 #fbfbfb!important;
305
  width: 100vw;
306
  }
307
+ .titan-framework-panel-wrap .form-table tr.heading label {
308
+ color: #5b7ff7;
309
+ font-weight: 500;
310
+ font-size: 15px;
311
+ }
312
  .titan-framework-panel-wrap .active-tab-fonts .form-table th label {
313
  font-weight: 600;
314
  }
315
+ .titan-framework-panel-wrap .active, .titan-framework-panel-wrap .active:hover {
316
+ background: #FFF!important;
317
+ }
318
+ .titan-framework-panel-wrap .button-primary{
319
+ background: #8995B2!important;
320
+ }
321
+ .titan-framework-panel-wrap .button-secondary{
322
+ color: #8995B2!important;
323
+ border-color: #8995B2!important;
324
+ background-color: #FFF!important;
325
  }
326
  td.second.tf-multicheck-pages fieldset {
327
  max-height: 500px;
415
  max-width: 250px;
416
  min-width: 160px;
417
  }
418
+ .titan-framework-panel-wrap .form-table tr {
419
+ display: none;
420
+ }
421
  .titan-framework-panel-wrap .nav-tab-wrapper, .wrap .titan-framework-panel-wrap h2.nav-tab-wrapper {
422
  border-bottom: none;
423
  background: #f9f9f9;
424
+ margin-top: 0px;
425
+ border-right: 1px solid #98a2bc;
426
  }
427
  .titan-framework-panel-wrap {
428
  display: flex;
433
  width: 100%;
434
  border: none;
435
  margin-left: 0px;
436
+ color: #737b8d;
437
  background: #f9f9f9;
 
 
 
 
438
  font-weight: 500;
439
  line-height: 2.5em;
440
+ letter-spacing: 0.5px;
441
+ padding: 0px 0px 10px 20px;
442
+ }
443
+ [data-link-id=general-alerts]{
444
+ display: none;
445
  }
446
  .nav-tab-wrapper ul {
447
  margin: 0;
448
  padding: 1px;
449
  }
450
+ .nav-tab-wrapper .nav-tab.active ul {
451
  display: grid;
452
  }
453
  .nav-tab-wrapper .nav-tab ul {
454
  display: none;
 
455
  }
456
  .nav-tab-wrapper ul li {
457
+ padding: 2px;
458
+ font-size: 13px;
459
+ font-weight: 500;
460
  margin: 0;
461
+ color: #737b8d;
 
462
  line-height: 2em;
463
+ padding-left: 20px;
464
+ margin-top: 6px;
465
+ margin-bottom: 6px;
466
+ }
467
+ .titan-framework-panel-wrap .nav-tab:focus {
468
+ box-shadow: none;
469
  }
470
  .nav-tab-wrapper ul li:hover {
471
  background: #f7f7f7;
472
  color: #3695ef;
473
  }
474
+ .titan-framework-panel-wrap .active, .titan-framework-panel-wrap .active:hover {
475
+ color: #5C7FF7;
476
  }
477
  .wrap .titan-framework-panel-wrap .nav-tab-wrapper {
478
  padding: 0;
486
  .toplevel_page_mobile-menu-options .wrap {
487
  padding: 12px;
488
  }
489
+ .mobmenu-header-wrap-inner h2 {
490
+ color: #FFF;
491
+ font-size: 1.5em;
492
+ }
493
+ .mobmenu-title-h2{
494
+ font-size: 0px;
495
+ }
496
+ .mobmenu-header-wrap-inner {
497
  padding-top: 15px;
498
  padding-bottom: 15px;
499
+ padding-left: 20px;
500
+ background: #5C7FF7;
501
+ display: flex;
502
  }
503
  .titan-framework-panel-wrap .form-table th label {
504
+ font-weight: 300;
505
  font-family: sans-serif;
506
+ color: #5e667c;
507
+ font-size: 13px;
508
  }
509
  .titan-framework-panel-wrap .form-table td .description {
510
+ color: #8995b2;
511
+ font-size: 13px;
512
+ padding-top: 10px;
513
  }
514
  .nav-tab-wrapper ul li:hover {
515
  cursor: pointer;
531
  color: #676767;
532
  }
533
  .titan-framework-panel-wrap .form-table {
534
+ margin-top: 5px;
535
  background: #fff;
536
  }
537
  .titan-framework-panel-wrap .active-tab-documentation {
538
  width: 100%;
539
  }
540
  .mm-panel-search-bar {
 
541
  padding: 10px 10px;
542
+ color: #FFF;
543
+ margin-left: 50px;
544
  }
545
  .mm-panel-search-bar span {
546
  padding-left: 30px;
548
  .mm-search-settings-results li {
549
  padding: 5px;
550
  line-height: 2em;
551
+ background: #f5f8ff;
552
  width: 21%;
553
  font-size: 14px;
554
  cursor: pointer;
559
  .mm-search-settings-results li:hover {
560
  background: #f5f5f5;
561
  }
562
+ .mm-search-settings-results {
563
+ position: absolute;
564
+ background: #fff;
565
+ padding: 10px;
566
+ width: 62%;
567
+ z-index: 99;
568
+ border: 1px solid #5c7ff7;
569
+ opacity: 0;
570
+ }
571
+ .mm-doc-icon {
572
+ color: #fff;
573
+ margin-top: 25px;
574
+ right: 50px;
575
+ position: absolute;
576
+ }
577
+ .mm-doc-icon a {
578
+ text-decoration: none;
579
+ color: #fff;
580
+ }
581
+ .mm-doc-icon a:hover {
582
+ color: #e0e7ec
583
+ }
584
  .mm-panel-search-bar #mm_search_settings {
585
  border-radius: 4px;
586
  border: 2px solid #0085ba;
 
587
  font-size: 15px;
588
  color: #656e76;
589
  }
590
  .mm-panel-search-bar label {
591
+ color: #b3dcf0;
592
+ }
593
+ .mm-scan-alerts {
594
+ margin-top: 25px;
595
+ right: 190px;
596
+ position: absolute;
597
+ color: #fff;
598
+ }
599
+ .mm-scan-alerts a {
600
+ text-decoration: none;
601
+ color: #fff;
602
+ }
603
+ .mm-scan-alerts a:hover {
604
+ color: #e0e7ec;
605
  }
606
  .CodeMirror {
607
  border: 1px solid #ddd;
612
  cursor: grab;
613
  border: 1px solid #efefef;
614
  }
615
+ /*
616
  .options-container.active-tab-general-options .tf-sortable li[data-value="logo"]{
617
  width:120px;
618
+ }*/
619
  .options-container .tf-sortable li span {
620
  padding-top: 40px;
621
  display: block;
622
  text-align: center;
623
  font-size: 11px;
624
  }
625
+ .mm-search-settings-results a {
626
+ text-decoration: none;
627
+ font-weight: 300;
628
+ }
629
  .mm-version-holder {
630
  position: absolute;
631
+ left: 35px;
632
+ margin-top: 45px;
633
+ color: #fff;
634
+ width: 90px;
635
+ font-size: 11px;
636
  }
637
  .mm-version-holder a {
638
+ color: #e0e7ec;
 
639
  }
640
  .mm-bussiness-features .dashicons-yes {
641
  color:#008000;
643
  padding-right: 20px;
644
  }
645
  .mm-bussiness-features p {
646
+ line-height: 3em;
647
+ font-size: 14px!important;
648
+ font-weight: 500!important;
649
  }
650
  .mm-bussiness-features {
651
  float: left;
652
+ width: 64%;
653
  }
654
  .mm-bussiness-features h3 {
655
  font-size: 2em;
676
  min-height: 35px;
677
  padding-top: 5px;
678
  border-radius: 6px;
679
+ margin: 20px!important;
680
  }
681
  .toplevel_page_mobile-menu-options .CodeMirror {
682
  resize: vertical;
715
  padding: 5px;
716
  margin-left: 10px;
717
  color: #fff;
718
+ background: #5c7ff7;
719
  text-decoration: none;
720
  cursor: pointer;
721
  }
722
  .mobmenu-preview-iframe {
723
  position: fixed;
724
+ top: 150px;
725
+ right: 50px;
726
  display: none;
727
  background: #fefdfd;
728
  border: 15px solid #222020;
729
  border-radius: 25px;
730
+ }
731
+ .mm-alerts-bubble.alert-number-0 {
732
+ color: #4ebb4e;
733
+ box-shadow: 0 0 0 .1rem var(--white,#4ebb4e)
734
+ }
735
+
736
+
737
+ .mm-alerts-bubble {
738
+ color: #FF5722;
739
+ font-size: 10px;
740
+ font-weight: 700;
741
+ top: -11px;
742
+ right: -5px;
743
+ position: relative;
744
+ box-shadow: 0 0 0 .1rem var(--white,#FF5722);
745
+ border-radius: 25px;
746
+ padding: 0px 3px 1px 3px!important;
747
+ text-align: center;
748
+ background: #ffffff;
749
+ }
750
+ .nav-tab-wrapper ul li.active {
751
+ border-left: 2px solid #5c7ff7;
752
+ color: #5c7ff7;
753
+ }
754
+ .active-tab-general-options .general-hide-elements, .active-tab-general-options .general-import-export, .active-tab-general-options .general-misc-options, .active-tab-general-options .general-visibility-options, .active-tab-general-options .general-advanced-options{
755
+ display:none;
756
+ }
757
+ tr.even.first.tf-heading {
758
+ display: none;
759
+ }
760
+ .select2-container--default .select2-results__option--highlighted[aria-selected] {
761
+ background-color: #8995b2!important;
762
+ }
763
+ .titan-framework-panel-wrap .form-table td {
764
+ padding: 15px 10px!important;
765
+ }
766
+ .titan-framework-panel-wrap .form-table {
767
+ max-width: 1000px;
768
+ }
769
+ .submit button.button.button-primary {
770
+ background: #5c7ff7!important;
771
  }
includes/css/mobmenu-codes.css DELETED
@@ -1,40 +0,0 @@
1
-
2
- .icon-th:before { content: '\e800'; } /* '' */
3
- .icon-th-list:before { content: '\e801'; } /* '' */
4
- .icon-th-large:before { content: '\e802'; } /* '' */
5
- .icon-down-open:before { content: '\e803'; } /* '' */
6
- .icon-up-open:before { content: '\e804'; } /* '' */
7
- .icon-align-justify:before { content: '\e805'; } /* '' */
8
- .icon-down-open-big:before { content: '\e806'; } /* '' */
9
- .icon-up-open-big:before { content: '\e807'; } /* '' */
10
- .icon-up-open-1:before { content: '\e808'; } /* '' */
11
- .icon-down-open-mini:before { content: '\e809'; } /* '' */
12
- .icon-menu-1:before { content: '\e80a'; } /* '' */
13
- .icon-menu-outline:before { content: '\e80b'; } /* '' */
14
- .icon-th-large-1:before { content: '\e80c'; } /* '' */
15
- .icon-th-1:before { content: '\e80d'; } /* '' */
16
- .icon-th-list-2:before { content: '\e80e'; } /* '' */
17
- .icon-th-list-3:before { content: '\e80f'; } /* '' */
18
- .icon-cancel:before { content: '\e810'; } /* '' */
19
- .icon-cancel-circled:before { content: '\e811'; } /* '' */
20
- .icon-cancel-circled2:before { content: '\e812'; } /* '' */
21
- .icon-cancel-squared:before { content: '\e813'; } /* '' */
22
- .icon-cancel-circled-1:before { content: '\e814'; } /* '' */
23
- .icon-cancel-1:before { content: '\e815'; } /* '' */
24
- .icon-cancel-outline:before { content: '\e816'; } /* '' */
25
- .icon-cancel-2:before { content: '\e817'; } /* '' */
26
- .icon-cancel-circled-outline:before { content: '\e818'; } /* '' */
27
- .icon-cancel-circled-2:before { content: '\e819'; } /* '' */
28
- .icon-cancel-circle:before { content: '\e81a'; } /* '' */
29
- .icon-cancel-3:before { content: '\e81b'; } /* '' */
30
- .icon-cancel-4:before { content: '\e81c'; } /* '' */
31
- .icon-cancel-circle-1:before { content: '\e81d'; } /* '' */
32
- .icon-up-open-mini:before { content: '\e81e'; } /* '' */
33
- .icon-down-open-1:before { content: '\e81f'; } /* '' */
34
- .icon-menu-2:before { content: '\f008'; } /* '' */
35
- .icon-th-list-1:before { content: '\f009'; } /* '' */
36
- .icon-th-thumb:before { content: '\f00a'; } /* '' */
37
- .icon-th-thumb-empty:before { content: '\f00b'; } /* '' */
38
- .icon-menu:before { content: '\f0c9'; } /* '' */
39
- .icon-ellipsis:before { content: '\f141'; } /* '' */
40
- .icon-ellipsis-vert:before { content: '\f142'; } /* '' */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/css/mobmenu-codes_remove.css DELETED
@@ -1,40 +0,0 @@
1
-
2
- .icon-th:before { content: '\e800'; } /* '' */
3
- .icon-th-list:before { content: '\e801'; } /* '' */
4
- .icon-th-large:before { content: '\e802'; } /* '' */
5
- .icon-down-open:before { content: '\e803'; } /* '' */
6
- .icon-up-open:before { content: '\e804'; } /* '' */
7
- .icon-align-justify:before { content: '\e805'; } /* '' */
8
- .icon-down-open-big:before { content: '\e806'; } /* '' */
9
- .icon-up-open-big:before { content: '\e807'; } /* '' */
10
- .icon-up-open-1:before { content: '\e808'; } /* '' */
11
- .icon-down-open-mini:before { content: '\e809'; } /* '' */
12
- .icon-menu-1:before { content: '\e80a'; } /* '' */
13
- .icon-menu-outline:before { content: '\e80b'; } /* '' */
14
- .icon-th-large-1:before { content: '\e80c'; } /* '' */
15
- .icon-th-1:before { content: '\e80d'; } /* '' */
16
- .icon-th-list-2:before { content: '\e80e'; } /* '' */
17
- .icon-th-list-3:before { content: '\e80f'; } /* '' */
18
- .icon-cancel:before { content: '\e810'; } /* '' */
19
- .icon-cancel-circled:before { content: '\e811'; } /* '' */
20
- .icon-cancel-circled2:before { content: '\e812'; } /* '' */
21
- .icon-cancel-squared:before { content: '\e813'; } /* '' */
22
- .icon-cancel-circled-1:before { content: '\e814'; } /* '' */
23
- .icon-cancel-1:before { content: '\e815'; } /* '' */
24
- .icon-cancel-outline:before { content: '\e816'; } /* '' */
25
- .icon-cancel-2:before { content: '\e817'; } /* '' */
26
- .icon-cancel-circled-outline:before { content: '\e818'; } /* '' */
27
- .icon-cancel-circled-2:before { content: '\e819'; } /* '' */
28
- .icon-cancel-circle:before { content: '\e81a'; } /* '' */
29
- .icon-cancel-3:before { content: '\e81b'; } /* '' */
30
- .icon-cancel-4:before { content: '\e81c'; } /* '' */
31
- .icon-cancel-circle-1:before { content: '\e81d'; } /* '' */
32
- .icon-up-open-mini:before { content: '\e81e'; } /* '' */
33
- .icon-down-open-1:before { content: '\e81f'; } /* '' */
34
- .icon-menu-2:before { content: '\f008'; } /* '' */
35
- .icon-th-list-1:before { content: '\f009'; } /* '' */
36
- .icon-th-thumb:before { content: '\f00a'; } /* '' */
37
- .icon-th-thumb-empty:before { content: '\f00b'; } /* '' */
38
- .icon-menu:before { content: '\f0c9'; } /* '' */
39
- .icon-ellipsis:before { content: '\f141'; } /* '' */
40
- .icon-ellipsis-vert:before { content: '\f142'; } /* '' */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/css/mobmenu-embedded.css DELETED
@@ -1,93 +0,0 @@
1
- @font-face {
2
- font-family: 'mobmenu';
3
- src: url('../font/mobmenu.eot?35594329');
4
- src: url('../font/mobmenu.eot?35594329#iefix') format('embedded-opentype'),
5
- url('../font/mobmenu.svg?35594329#mobmenu') format('svg');
6
- font-weight: normal;
7
- font-style: normal;
8
- }
9
- @font-face {
10
- font-family: 'mobmenu';
11
- src: url('data:application/octet-stream;base64,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') format('woff'),
12
- url('data:application/octet-stream;base64,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') format('truetype');
13
- }
14
- /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
15
- /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
16
- /*
17
- @media screen and (-webkit-min-device-pixel-ratio:0) {
18
- @font-face {
19
- font-family: 'mobmenu';
20
- src: url('../font/mobmenu.svg?35594329#mobmenu') format('svg');
21
- }
22
- }
23
- */
24
-
25
- [class^="icon-"]:before, [class*=" icon-"]:before {
26
- font-family: "mobmenu";
27
- font-style: normal;
28
- font-weight: normal;
29
- speak: none;
30
-
31
- display: inline-block;
32
- text-decoration: inherit;
33
- width: 1em;
34
- margin-right: .2em;
35
- text-align: center;
36
- /* opacity: .8; */
37
-
38
- /* For safety - reset parent styles, that can break glyph codes*/
39
- font-variant: normal;
40
- text-transform: none;
41
-
42
- /* fix buttons height, for twitter bootstrap */
43
- line-height: 1em;
44
-
45
- /* Animation center compensation - margins should be symmetric */
46
- /* remove if not needed */
47
- margin-left: .2em;
48
-
49
- /* you can be more comfortable with increased icons size */
50
- /* font-size: 120%; */
51
-
52
- /* Uncomment for 3D effect */
53
- /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
54
- }
55
- .icon-th:before { content: '\e800'; } /* '' */
56
- .icon-th-list:before { content: '\e801'; } /* '' */
57
- .icon-th-large:before { content: '\e802'; } /* '' */
58
- .icon-down-open:before { content: '\e803'; } /* '' */
59
- .icon-up-open:before { content: '\e804'; } /* '' */
60
- .icon-align-justify:before { content: '\e805'; } /* '' */
61
- .icon-down-open-big:before { content: '\e806'; } /* '' */
62
- .icon-up-open-big:before { content: '\e807'; } /* '' */
63
- .icon-up-open-1:before { content: '\e808'; } /* '' */
64
- .icon-down-open-mini:before { content: '\e809'; } /* '' */
65
- .icon-menu-1:before { content: '\e80a'; } /* '' */
66
- .icon-menu-outline:before { content: '\e80b'; } /* '' */
67
- .icon-th-large-1:before { content: '\e80c'; } /* '' */
68
- .icon-th-1:before { content: '\e80d'; } /* '' */
69
- .icon-th-list-2:before { content: '\e80e'; } /* '' */
70
- .icon-th-list-3:before { content: '\e80f'; } /* '' */
71
- .icon-cancel:before { content: '\e810'; } /* '' */
72
- .icon-cancel-circled:before { content: '\e811'; } /* '' */
73
- .icon-cancel-circled2:before { content: '\e812'; } /* '' */
74
- .icon-cancel-squared:before { content: '\e813'; } /* '' */
75
- .icon-cancel-circled-1:before { content: '\e814'; } /* '' */
76
- .icon-cancel-1:before { content: '\e815'; } /* '' */
77
- .icon-cancel-outline:before { content: '\e816'; } /* '' */
78
- .icon-cancel-2:before { content: '\e817'; } /* '' */
79
- .icon-cancel-circled-outline:before { content: '\e818'; } /* '' */
80
- .icon-cancel-circled-2:before { content: '\e819'; } /* '' */
81
- .icon-cancel-circle:before { content: '\e81a'; } /* '' */
82
- .icon-cancel-3:before { content: '\e81b'; } /* '' */
83
- .icon-cancel-4:before { content: '\e81c'; } /* '' */
84
- .icon-cancel-circle-1:before { content: '\e81d'; } /* '' */
85
- .icon-up-open-mini:before { content: '\e81e'; } /* '' */
86
- .icon-down-open-1:before { content: '\e81f'; } /* '' */
87
- .icon-menu-2:before { content: '\f008'; } /* '' */
88
- .icon-th-list-1:before { content: '\f009'; } /* '' */
89
- .icon-th-thumb:before { content: '\f00a'; } /* '' */
90
- .icon-th-thumb-empty:before { content: '\f00b'; } /* '' */
91
- .icon-menu:before { content: '\f0c9'; } /* '' */
92
- .icon-ellipsis:before { content: '\f141'; } /* '' */
93
- .icon-ellipsis-vert:before { content: '\f142'; } /* '' */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/css/mobmenu-embedded_remove.css DELETED
@@ -1,98 +0,0 @@
1
-
2
- /* Premium Code Stripped by Freemius */
3
-
4
-
5
- @font-face {
6
- font-family: 'mobmenu';
7
- src: url('../font/mobmenu.eot?35594329');
8
- src: url('../font/mobmenu.eot?35594329#iefix') format('embedded-opentype'),
9
- url('../font/mobmenu.svg?35594329#mobmenu') format('svg');
10
- font-weight: normal;
11
- font-style: normal;
12
- }
13
-
14
- @font-face {
15
- font-family: 'mobmenu';
16
- src: url('data:application/octet-stream;base64,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') format('woff'),
17
- url('data:application/octet-stream;base64,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') format('truetype');
18
- }
19
- /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
20
- /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
21
- /*
22
- @media screen and (-webkit-min-device-pixel-ratio:0) {
23
- @font-face {
24
- font-family: 'mobmenu';
25
- src: url('../font/mobmenu.svg?35594329#mobmenu') format('svg');
26
- }
27
- }
28
- */
29
-
30
- [class^="icon-"]:before, [class*=" icon-"]:before {
31
- font-family: "mobmenu";
32
- font-style: normal;
33
- font-weight: normal;
34
- speak: none;
35
-
36
- display: inline-block;
37
- text-decoration: inherit;
38
- width: 1em;
39
- margin-right: .2em;
40
- text-align: center;
41
- /* opacity: .8; */
42
-
43
- /* For safety - reset parent styles, that can break glyph codes*/
44
- font-variant: normal;
45
- text-transform: none;
46
-
47
- /* fix buttons height, for twitter bootstrap */
48
- line-height: 1em;
49
-
50
- /* Animation center compensation - margins should be symmetric */
51
- /* remove if not needed */
52
- margin-left: .2em;
53
-
54
- /* you can be more comfortable with increased icons size */
55
- /* font-size: 120%; */
56
-
57
- /* Uncomment for 3D effect */
58
- /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
59
- }
60
- .icon-th:before { content: '\e800'; } /* '' */
61
- .icon-th-list:before { content: '\e801'; } /* '' */
62
- .icon-th-large:before { content: '\e802'; } /* '' */
63
- .icon-down-open:before { content: '\e803'; } /* '' */
64
- .icon-up-open:before { content: '\e804'; } /* '' */
65
- .icon-align-justify:before { content: '\e805'; } /* '' */
66
- .icon-down-open-big:before { content: '\e806'; } /* '' */
67
- .icon-up-open-big:before { content: '\e807'; } /* '' */
68
- .icon-up-open-1:before { content: '\e808'; } /* '' */
69
- .icon-down-open-mini:before { content: '\e809'; } /* '' */
70
- .icon-menu-1:before { content: '\e80a'; } /* '' */
71
- .icon-menu-outline:before { content: '\e80b'; } /* '' */
72
- .icon-th-large-1:before { content: '\e80c'; } /* '' */
73
- .icon-th-1:before { content: '\e80d'; } /* '' */
74
- .icon-th-list-2:before { content: '\e80e'; } /* '' */
75
- .icon-th-list-3:before { content: '\e80f'; } /* '' */
76
- .icon-cancel:before { content: '\e810'; } /* '' */
77
- .icon-cancel-circled:before { content: '\e811'; } /* '' */
78
- .icon-cancel-circled2:before { content: '\e812'; } /* '' */
79
- .icon-cancel-squared:before { content: '\e813'; } /* '' */
80
- .icon-cancel-circled-1:before { content: '\e814'; } /* '' */
81
- .icon-cancel-1:before { content: '\e815'; } /* '' */
82
- .icon-cancel-outline:before { content: '\e816'; } /* '' */
83
- .icon-cancel-2:before { content: '\e817'; } /* '' */
84
- .icon-cancel-circled-outline:before { content: '\e818'; } /* '' */
85
- .icon-cancel-circled-2:before { content: '\e819'; } /* '' */
86
- .icon-cancel-circle:before { content: '\e81a'; } /* '' */
87
- .icon-cancel-3:before { content: '\e81b'; } /* '' */
88
- .icon-cancel-4:before { content: '\e81c'; } /* '' */
89
- .icon-cancel-circle-1:before { content: '\e81d'; } /* '' */
90
- .icon-up-open-mini:before { content: '\e81e'; } /* '' */
91
- .icon-down-open-1:before { content: '\e81f'; } /* '' */
92
- .icon-menu-2:before { content: '\f008'; } /* '' */
93
- .icon-th-list-1:before { content: '\f009'; } /* '' */
94
- .icon-th-thumb:before { content: '\f00a'; } /* '' */
95
- .icon-th-thumb-empty:before { content: '\f00b'; } /* '' */
96
- .icon-menu:before { content: '\f0c9'; } /* '' */
97
- .icon-ellipsis:before { content: '\f141'; } /* '' */
98
- .icon-ellipsis-vert:before { content: '\f142'; } /* '' */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/css/mobmenu-fontello.css DELETED
@@ -1,94 +0,0 @@
1
- @font-face {
2
- font-family: 'mobmenu';
3
- src: url('../font/mobmenu.eot?18442310');
4
- src: url('../font/mobmenu.eot?18442310#iefix') format('embedded-opentype'),
5
- url('../font/mobmenu.woff2?18442310') format('woff2'),
6
- url('../font/mobmenu.woff?18442310') format('woff'),
7
- url('../font/mobmenu.ttf?18442310') format('truetype'),
8
- url('../font/mobmenu.svg?18442310#mobmenu') format('svg');
9
- font-weight: normal;
10
- font-style: normal;
11
- }
12
- /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
13
- /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
14
- /*
15
- @media screen and (-webkit-min-device-pixel-ratio:0) {
16
- @font-face {
17
- font-family: 'mobmenu';
18
- src: url('../font/mobmenu.svg?18442310#mobmenu') format('svg');
19
- }
20
- }
21
- */
22
-
23
- [class^="icon-"]:before, [class*=" icon-"]:before {
24
- font-family: "mobmenu";
25
- font-style: normal;
26
- font-weight: normal;
27
- speak: none;
28
-
29
- display: inline-block;
30
- text-decoration: inherit;
31
- width: 1em;
32
- margin-right: .2em;
33
- text-align: center;
34
- /* opacity: .8; */
35
-
36
- /* For safety - reset parent styles, that can break glyph codes*/
37
- font-variant: normal;
38
- text-transform: none;
39
-
40
- /* fix buttons height, for twitter bootstrap */
41
- line-height: 1em;
42
-
43
- /* Animation center compensation - margins should be symmetric */
44
- /* remove if not needed */
45
- margin-left: .2em;
46
-
47
- /* you can be more comfortable with increased icons size */
48
- /* font-size: 120%; */
49
-
50
- /* Font smoothing. That was taken from TWBS */
51
- -webkit-font-smoothing: antialiased;
52
- -moz-osx-font-smoothing: grayscale;
53
-
54
- /* Uncomment for 3D effect */
55
- /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
56
- }
57
-
58
- .icon-th:before { content: '\e800'; } /* '' */
59
- .icon-th-list:before { content: '\e801'; } /* '' */
60
- .icon-th-large:before { content: '\e802'; } /* '' */
61
- .icon-down-open:before { content: '\e803'; } /* '' */
62
- .icon-up-open:before { content: '\e804'; } /* '' */
63
- .icon-align-justify:before { content: '\e805'; } /* '' */
64
- .icon-down-open-big:before { content: '\e806'; } /* '' */
65
- .icon-up-open-big:before { content: '\e807'; } /* '' */
66
- .icon-up-open-1:before { content: '\e808'; } /* '' */
67
- .icon-down-open-mini:before { content: '\e809'; } /* '' */
68
- .icon-menu-1:before { content: '\e80a'; } /* '' */
69
- .icon-menu-outline:before { content: '\e80b'; } /* '' */
70
- .icon-th-large-1:before { content: '\e80c'; } /* '' */
71
- .icon-th-1:before { content: '\e80d'; } /* '' */
72
- .icon-th-list-2:before { content: '\e80e'; } /* '' */
73
- .icon-th-list-3:before { content: '\e80f'; } /* '' */
74
- .icon-cancel:before { content: '\e810'; } /* '' */
75
- .icon-cancel-circled:before { content: '\e811'; } /* '' */
76
- .icon-cancel-circled2:before { content: '\e812'; } /* '' */
77
- .icon-cancel-squared:before { content: '\e813'; } /* '' */
78
- .icon-cancel-circled-1:before { content: '\e814'; } /* '' */
79
- .icon-cancel-1:before { content: '\e815'; } /* '' */
80
- .icon-cancel-outline:before { content: '\e816'; } /* '' */
81
- .icon-cancel-2:before { content: '\e817'; } /* '' */
82
- .icon-cancel-circled-outline:before { content: '\e818'; } /* '' */
83
- .icon-cancel-circled-2:before { content: '\e819'; } /* '' */
84
- .icon-cancel-circle:before { content: '\e81a'; } /* '' */
85
- .icon-cancel-3:before { content: '\e81b'; } /* '' */
86
- .icon-cancel-4:before { content: '\e81c'; } /* '' */
87
- .icon-cancel-circle-1:before { content: '\e81d'; } /* '' */
88
- .icon-menu-2:before { content: '\f008'; } /* '' */
89
- .icon-th-list-1:before { content: '\f009'; } /* '' */
90
- .icon-th-thumb:before { content: '\f00a'; } /* '' */
91
- .icon-th-thumb-empty:before { content: '\f00b'; } /* '' */
92
- .icon-menu:before { content: '\f0c9'; } /* '' */
93
- .icon-ellipsis:before { content: '\f141'; } /* '' */
94
- .icon-ellipsis-vert:before { content: '\f142'; } /* '' */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/css/mobmenu-fontello_remove.css DELETED
@@ -1,94 +0,0 @@
1
- @font-face {
2
- font-family: 'mobmenu';
3
- src: url('../font/mobmenu.eot?18442310');
4
- src: url('../font/mobmenu.eot?18442310#iefix') format('embedded-opentype'),
5
- url('../font/mobmenu.woff2?18442310') format('woff2'),
6
- url('../font/mobmenu.woff?18442310') format('woff'),
7
- url('../font/mobmenu.ttf?18442310') format('truetype'),
8
- url('../font/mobmenu.svg?18442310#mobmenu') format('svg');
9
- font-weight: normal;
10
- font-style: normal;
11
- }
12
- /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
13
- /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
14
- /*
15
- @media screen and (-webkit-min-device-pixel-ratio:0) {
16
- @font-face {
17
- font-family: 'mobmenu';
18
- src: url('../font/mobmenu.svg?18442310#mobmenu') format('svg');
19
- }
20
- }
21
- */
22
-
23
- [class^="icon-"]:before, [class*=" icon-"]:before {
24
- font-family: "mobmenu";
25
- font-style: normal;
26
- font-weight: normal;
27
- speak: none;
28
-
29
- display: inline-block;
30
- text-decoration: inherit;
31
- width: 1em;
32
- margin-right: .2em;
33
- text-align: center;
34
- /* opacity: .8; */
35
-
36
- /* For safety - reset parent styles, that can break glyph codes*/
37
- font-variant: normal;
38
- text-transform: none;
39
-
40
- /* fix buttons height, for twitter bootstrap */
41
- line-height: 1em;
42
-
43
- /* Animation center compensation - margins should be symmetric */
44
- /* remove if not needed */
45
- margin-left: .2em;
46
-
47
- /* you can be more comfortable with increased icons size */
48
- /* font-size: 120%; */
49
-
50
- /* Font smoothing. That was taken from TWBS */
51
- -webkit-font-smoothing: antialiased;
52
- -moz-osx-font-smoothing: grayscale;
53
-
54
- /* Uncomment for 3D effect */
55
- /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
56
- }
57
-
58
- .icon-th:before { content: '\e800'; } /* '' */
59
- .icon-th-list:before { content: '\e801'; } /* '' */
60
- .icon-th-large:before { content: '\e802'; } /* '' */
61
- .icon-down-open:before { content: '\e803'; } /* '' */
62
- .icon-up-open:before { content: '\e804'; } /* '' */
63
- .icon-align-justify:before { content: '\e805'; } /* '' */
64
- .icon-down-open-big:before { content: '\e806'; } /* '' */
65
- .icon-up-open-big:before { content: '\e807'; } /* '' */
66
- .icon-up-open-1:before { content: '\e808'; } /* '' */
67
- .icon-down-open-mini:before { content: '\e809'; } /* '' */
68
- .icon-menu-1:before { content: '\e80a'; } /* '' */
69
- .icon-menu-outline:before { content: '\e80b'; } /* '' */
70
- .icon-th-large-1:before { content: '\e80c'; } /* '' */
71
- .icon-th-1:before { content: '\e80d'; } /* '' */
72
- .icon-th-list-2:before { content: '\e80e'; } /* '' */
73
- .icon-th-list-3:before { content: '\e80f'; } /* '' */
74
- .icon-cancel:before { content: '\e810'; } /* '' */
75
- .icon-cancel-circled:before { content: '\e811'; } /* '' */
76
- .icon-cancel-circled2:before { content: '\e812'; } /* '' */
77
- .icon-cancel-squared:before { content: '\e813'; } /* '' */
78
- .icon-cancel-circled-1:before { content: '\e814'; } /* '' */
79
- .icon-cancel-1:before { content: '\e815'; } /* '' */
80
- .icon-cancel-outline:before { content: '\e816'; } /* '' */
81
- .icon-cancel-2:before { content: '\e817'; } /* '' */
82
- .icon-cancel-circled-outline:before { content: '\e818'; } /* '' */
83
- .icon-cancel-circled-2:before { content: '\e819'; } /* '' */
84
- .icon-cancel-circle:before { content: '\e81a'; } /* '' */
85
- .icon-cancel-3:before { content: '\e81b'; } /* '' */
86
- .icon-cancel-4:before { content: '\e81c'; } /* '' */
87
- .icon-cancel-circle-1:before { content: '\e81d'; } /* '' */
88
- .icon-menu-2:before { content: '\f008'; } /* '' */
89
- .icon-th-list-1:before { content: '\f009'; } /* '' */
90
- .icon-th-thumb:before { content: '\f00a'; } /* '' */
91
- .icon-th-thumb-empty:before { content: '\f00b'; } /* '' */
92
- .icon-menu:before { content: '\f0c9'; } /* '' */
93
- .icon-ellipsis:before { content: '\f141'; } /* '' */
94
- .icon-ellipsis-vert:before { content: '\f142'; } /* '' */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/css/mobmenu-icons.css CHANGED
@@ -3,12 +3,8 @@
3
  /* Mobile Menu Admin CSS Style*/
4
  @font-face {
5
  font-family: 'mobmenu';
6
- src: url('font/mobmenu.eot?31192480');
7
- src: url('font/mobmenu.eot?31192480#iefix') format('embedded-opentype'),
8
- url('font/mobmenu.woff2?31192480') format('woff2'),
9
- url('font/mobmenu.woff?31192480') format('woff'),
10
- url('font/mobmenu.ttf?31192480') format('truetype'),
11
- url('font/mobmenu.svg?31192480#mobmenu') format('svg');
12
  font-weight: normal;
13
  font-style: normal;
14
  }
3
  /* Mobile Menu Admin CSS Style*/
4
  @font-face {
5
  font-family: 'mobmenu';
6
+ src: url('font/mobmenu.woff2?31192480') format('woff2'),
7
+ url('font/mobmenu.woff?31192480') format('woff');
 
 
 
 
8
  font-weight: normal;
9
  font-style: normal;
10
  }
includes/css/mobmenu-ie7-codes.css DELETED
@@ -1,40 +0,0 @@
1
-
2
- .icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
3
- .icon-th-list { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
4
- .icon-th-large { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
5
- .icon-down-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
6
- .icon-up-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
7
- .icon-align-justify { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
8
- .icon-down-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
9
- .icon-up-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
10
- .icon-up-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
11
- .icon-down-open-mini { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
12
- .icon-menu-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
13
- .icon-menu-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
14
- .icon-th-large-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
15
- .icon-th-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
16
- .icon-th-list-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
17
- .icon-th-list-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
18
- .icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
19
- .icon-cancel-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
20
- .icon-cancel-circled2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe812;&nbsp;'); }
21
- .icon-cancel-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe813;&nbsp;'); }
22
- .icon-cancel-circled-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe814;&nbsp;'); }
23
- .icon-cancel-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe815;&nbsp;'); }
24
- .icon-cancel-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe816;&nbsp;'); }
25
- .icon-cancel-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe817;&nbsp;'); }
26
- .icon-cancel-circled-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe818;&nbsp;'); }
27
- .icon-cancel-circled-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe819;&nbsp;'); }
28
- .icon-cancel-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81a;&nbsp;'); }
29
- .icon-cancel-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81b;&nbsp;'); }
30
- .icon-cancel-4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81c;&nbsp;'); }
31
- .icon-cancel-circle-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81d;&nbsp;'); }
32
- .icon-up-open-mini { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81e;&nbsp;'); }
33
- .icon-down-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81f;&nbsp;'); }
34
- .icon-menu-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf008;&nbsp;'); }
35
- .icon-th-list-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf009;&nbsp;'); }
36
- .icon-th-thumb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00a;&nbsp;'); }
37
- .icon-th-thumb-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00b;&nbsp;'); }
38
- .icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;&nbsp;'); }
39
- .icon-ellipsis { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf141;&nbsp;'); }
40
- .icon-ellipsis-vert { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf142;&nbsp;'); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/css/mobmenu-ie7-codes_remove.css DELETED
@@ -1,40 +0,0 @@
1
-
2
- .icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
3
- .icon-th-list { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
4
- .icon-th-large { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
5
- .icon-down-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
6
- .icon-up-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
7
- .icon-align-justify { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
8
- .icon-down-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
9
- .icon-up-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
10
- .icon-up-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
11
- .icon-down-open-mini { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
12
- .icon-menu-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
13
- .icon-menu-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
14
- .icon-th-large-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
15
- .icon-th-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
16
- .icon-th-list-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
17
- .icon-th-list-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
18
- .icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
19
- .icon-cancel-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
20
- .icon-cancel-circled2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe812;&nbsp;'); }
21
- .icon-cancel-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe813;&nbsp;'); }
22
- .icon-cancel-circled-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe814;&nbsp;'); }
23
- .icon-cancel-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe815;&nbsp;'); }
24
- .icon-cancel-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe816;&nbsp;'); }
25
- .icon-cancel-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe817;&nbsp;'); }
26
- .icon-cancel-circled-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe818;&nbsp;'); }
27
- .icon-cancel-circled-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe819;&nbsp;'); }
28
- .icon-cancel-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81a;&nbsp;'); }
29
- .icon-cancel-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81b;&nbsp;'); }
30
- .icon-cancel-4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81c;&nbsp;'); }
31
- .icon-cancel-circle-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81d;&nbsp;'); }
32
- .icon-up-open-mini { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81e;&nbsp;'); }
33
- .icon-down-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81f;&nbsp;'); }
34
- .icon-menu-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf008;&nbsp;'); }
35
- .icon-th-list-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf009;&nbsp;'); }
36
- .icon-th-thumb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00a;&nbsp;'); }
37
- .icon-th-thumb-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00b;&nbsp;'); }
38
- .icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;&nbsp;'); }
39
- .icon-ellipsis { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf141;&nbsp;'); }
40
- .icon-ellipsis-vert { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf142;&nbsp;'); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/css/mobmenu-ie7.css DELETED
@@ -1,51 +0,0 @@
1
- [class^="icon-"], [class*=" icon-"] {
2
- font-family: 'mobmenu';
3
- font-style: normal;
4
- font-weight: normal;
5
-
6
- /* fix buttons height */
7
- line-height: 1em;
8
-
9
- /* you can be more comfortable with increased icons size */
10
- /* font-size: 120%; */
11
- }
12
-
13
- .icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
14
- .icon-th-list { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
15
- .icon-th-large { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
16
- .icon-down-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
17
- .icon-up-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
18
- .icon-align-justify { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
19
- .icon-down-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
20
- .icon-up-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
21
- .icon-up-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
22
- .icon-down-open-mini { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
23
- .icon-menu-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
24
- .icon-menu-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
25
- .icon-th-large-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
26
- .icon-th-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
27
- .icon-th-list-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
28
- .icon-th-list-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
29
- .icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
30
- .icon-cancel-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
31
- .icon-cancel-circled2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe812;&nbsp;'); }
32
- .icon-cancel-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe813;&nbsp;'); }
33
- .icon-cancel-circled-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe814;&nbsp;'); }
34
- .icon-cancel-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe815;&nbsp;'); }
35
- .icon-cancel-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe816;&nbsp;'); }
36
- .icon-cancel-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe817;&nbsp;'); }
37
- .icon-cancel-circled-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe818;&nbsp;'); }
38
- .icon-cancel-circled-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe819;&nbsp;'); }
39
- .icon-cancel-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81a;&nbsp;'); }
40
- .icon-cancel-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81b;&nbsp;'); }
41
- .icon-cancel-4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81c;&nbsp;'); }
42
- .icon-cancel-circle-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81d;&nbsp;'); }
43
- .icon-up-open-mini { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81e;&nbsp;'); }
44
- .icon-down-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81f;&nbsp;'); }
45
- .icon-menu-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf008;&nbsp;'); }
46
- .icon-th-list-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf009;&nbsp;'); }
47
- .icon-th-thumb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00a;&nbsp;'); }
48
- .icon-th-thumb-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00b;&nbsp;'); }
49
- .icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;&nbsp;'); }
50
- .icon-ellipsis { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf141;&nbsp;'); }
51
- .icon-ellipsis-vert { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf142;&nbsp;'); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/css/mobmenu-ie7_remove.css DELETED
@@ -1,51 +0,0 @@
1
- [class^="icon-"], [class*=" icon-"] {
2
- font-family: 'mobmenu';
3
- font-style: normal;
4
- font-weight: normal;
5
-
6
- /* fix buttons height */
7
- line-height: 1em;
8
-
9
- /* you can be more comfortable with increased icons size */
10
- /* font-size: 120%; */
11
- }
12
-
13
- .icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
14
- .icon-th-list { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
15
- .icon-th-large { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
16
- .icon-down-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
17
- .icon-up-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
18
- .icon-align-justify { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
19
- .icon-down-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
20
- .icon-up-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
21
- .icon-up-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
22
- .icon-down-open-mini { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
23
- .icon-menu-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
24
- .icon-menu-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
25
- .icon-th-large-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
26
- .icon-th-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
27
- .icon-th-list-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
28
- .icon-th-list-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
29
- .icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
30
- .icon-cancel-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
31
- .icon-cancel-circled2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe812;&nbsp;'); }
32
- .icon-cancel-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe813;&nbsp;'); }
33
- .icon-cancel-circled-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe814;&nbsp;'); }
34
- .icon-cancel-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe815;&nbsp;'); }
35
- .icon-cancel-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe816;&nbsp;'); }
36
- .icon-cancel-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe817;&nbsp;'); }
37
- .icon-cancel-circled-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe818;&nbsp;'); }
38
- .icon-cancel-circled-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe819;&nbsp;'); }
39
- .icon-cancel-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81a;&nbsp;'); }
40
- .icon-cancel-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81b;&nbsp;'); }
41
- .icon-cancel-4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81c;&nbsp;'); }
42
- .icon-cancel-circle-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81d;&nbsp;'); }
43
- .icon-up-open-mini { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81e;&nbsp;'); }
44
- .icon-down-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81f;&nbsp;'); }
45
- .icon-menu-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf008;&nbsp;'); }
46
- .icon-th-list-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf009;&nbsp;'); }
47
- .icon-th-thumb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00a;&nbsp;'); }
48
- .icon-th-thumb-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00b;&nbsp;'); }
49
- .icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;&nbsp;'); }
50
- .icon-ellipsis { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf141;&nbsp;'); }
51
- .icon-ellipsis-vert { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf142;&nbsp;'); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/css/mobmenu.css CHANGED
@@ -272,14 +272,17 @@ body.admin-bar .mobmenu, body.admin-bar .mobmenu-panel {
272
  }
273
  /* No menu assigned warning. */
274
  h4.no-mobile-menu {
275
- padding: 50px;
276
  text-align: center;
277
- width: 70%;
278
  background: #fff;
279
  margin: auto;
 
 
 
280
  }
281
  h4.no-mobile-menu a {
282
- text-decoration: underline;
283
  color:#000;
284
  }
285
  .mobmenu-content li a:focus {
272
  }
273
  /* No menu assigned warning. */
274
  h4.no-mobile-menu {
275
+ padding: 22px;
276
  text-align: center;
277
+ width: 90%;
278
  background: #fff;
279
  margin: auto;
280
+ font-size: 17px;
281
+ font-weight: 400;
282
+ line-height: 29px;
283
  }
284
  h4.no-mobile-menu a {
285
+ text-decoration: none;
286
  color:#000;
287
  }
288
  .mobmenu-content li a:focus {
includes/js/mobmenu-admin.js CHANGED
@@ -19,8 +19,21 @@
19
  jQuery( document ).ready( function(){
20
  var editorSettings = null;
21
 
22
- $( '#mobmenu_hide_elements' ).after( '<a href="#" class="mobmenu-find-element">Find element</a>' );
23
  $('body').append('<iframe class="mobmenu-preview-iframe" scrolling="no" id="mobmenu-preview-iframe" width="380" height="650" >');
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
  // Initilialize the CodeMirror on the custom CSS option.
26
  if ( $('#mobmenu_custom_css').length > 0 ) {
@@ -70,6 +83,18 @@
70
  }
71
  });
72
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  $( document ).on( "click", ".mobmenu-close-overlay" , function () {
74
 
75
  $( ".mobmenu-icons-overlay" ).fadeOut();
@@ -263,31 +288,31 @@
263
  searchTerm = $( this ).val();
264
  var previousTerm = '';
265
  var termsList = [];
266
- termsList = [['Header Options','url'],['Left Menu Options','url'],['Right Menu Options','value6'], ['Color Options', 'url']];
267
 
268
  // General Options Tab - Main Options
269
- termsList.push(['Mobile Menu Visibility (Width trigger)', 'general-options'],['Enable only in Mobile devices', 'general-options'],['Enable Testing Mode', 'general-options'],['Enable Left Menu', 'general-options'],['Enable Right Menu', 'general-options'],['Enable Footer Menu', 'general-options']);
270
 
271
  // General Options Tab - Hide Original Theme menu
272
- termsList.push(['Hide Elements', 'general-options#hide-original-theme-menu'],['Hide Elements by default', 'general-options#hide-original-theme-menu']);
273
 
274
  // General Options Tab - Miscelaneous Options
275
- termsList.push(['Menu Display Type', 'general-options#miscelaneous-options'],['Enable Over effects', 'general-options#miscelaneous-options'],['Sliding Submenus', 'general-options#miscelaneous-options'],['Automatically Close Submenus', 'general-options#miscelaneous-options'],['Menu items border size', 'general-options#miscelaneous-options'],['Close icon', 'general-options#miscelaneous-options'],['Close icon font size', 'general-options#miscelaneous-options'],['Submenu Open icon', 'general-options#miscelaneous-options'],['Submenu Close icon', 'general-options#miscelaneous-options'],['Submenu icon font size', 'general-options#miscelaneous-options']);
276
 
277
  // General Options Tab - Advanced Options
278
- termsList.push(['Sticky HTML Elements', 'general-options#advanced-options'],['Custom CSS', 'general-options#advanced-options'],['Custom JS', 'general-options#advanced-options'],['Disable Mobile Menu on specific custom post types', 'general-options#advanced-options'],['Disable Mobile Menu on seleted pages', 'general-options#advanced-options']);
279
 
280
  // General Options Tab - Import and Export Options
281
- termsList.push(['Export Settings', 'general-options#import-and-export'],['Import Settings', 'general-options#import-and-export']);
282
 
283
  // Header Tab - Logo
284
- termsList.push(['Site Logo', 'header#logo-options'],['Upload Logo', 'header#logo-options'],['Logo Height', 'header#logo-options'],['Retina Logo', 'header#logo-options'],['Disable Logo URL', 'header#logo-options'],['Alternative Logo URL', 'header#logo-options'],['Logo/Text Top Margin', 'header#logo-options']);
285
 
286
  // Header Tab - Header Main Options
287
- termsList.push(['Header Elements Position', 'header'],['Sticky Header', 'header'],['Naked Header', 'header'],['Disable Logo/Text', 'header'],['Auto-hide Header when scrolling down.', 'header']);
288
 
289
  // Header Tab - Header
290
- termsList.push(['Header Shadow', 'header#header-options'],['Header Height', 'header#header-options'],['Header Text', 'header#header-options'],['Use page title text', 'header#header-options'],['Header Logo/Text Alignment', 'header#header-options'],['Header Logo/Text Left Margin', 'header#header-options'],['Header Logo/text Spacing', 'header#header-options'],['Header Logo/text Right Margin', 'header#header-options']);
291
 
292
  // Header Tab - Header Banner
293
  termsList.push(['Enable Header Banner', 'header#header-banner-options'],['Header Banner Position', 'header#header-banner-options'],['Header Banner Content', 'header#header-banner-options'],['Header Banner Height', 'header#header-banner-options'],['Disable Logo URL', 'header#header-banner-options'],['Header Banner Alignment', 'header#header-banner-options'],['Header Banner Padding', 'header#header-banner-options']);
@@ -299,22 +324,22 @@
299
  termsList.push(['Footer Menu', 'footer'],['Auto-hide Footer when scrolling up', 'footer'],['Footer style', 'footer'],['Footer padding', 'footer'],['Icon font size', 'footer'],['Footer Text Font/Size', 'footer']);
300
 
301
  // Left Menu Tab - Main options
302
- termsList.push(['Left Menu Content', 'left-menu'],['Left Menu', 'left-menu'],['Parent Link open submenu', 'left-menu'],['Only visible for logged users', 'left-menu']);
303
 
304
  // Left Menu Tab - Left Menu Icon
305
- termsList.push(['Text After Icon', 'left-menu#menu-icon'],['Icon Action', 'left-menu#menu-icon'],['Icon Link URL', 'left-menu#menu-icon'],['Icon Link URL target', 'left-menu#menu-icon'],['Icon Type', 'left-menu#menu-icon'],['Icon Animation Type', 'left-menu#menu-icon'],['Icon Font', 'left-menu#menu-icon'],['Icon Font Size', 'left-menu#menu-icon'],['Icon Image', 'left-menu#menu-icon'],['Icon Top Margin', 'left-menu#menu-icon'],['Icon Left Margin', 'left-menu#menu-icon'],['Menu item icons position', 'left-menu#menu-icon'],['Menu Item icons Horizontal Padding', 'left-menu#menu-icon']);
306
 
307
  // Left Menu Tab - Left Panel options
308
- termsList.push(['Left Panel Background Image', 'left-menu#left-panel-options'],['Left Panel Background Image Opacity', 'left-menu#left-panel-options'],['Left Panel Background Image Size', 'left-menu#left-panel-options'],['Left Panel Background Gradient CSS', 'left-menu#left-panel-options'],['Left Menu Panel Widht Units', 'left-menu#left-panel-options'],['Left Menu Panel Width (Pixels)', 'left-menu#left-panel-options'],['Left Menu Panel Width (Percentage)', 'left-menu#left-panel-options'],['Left Menu content padding', 'left-menu#left-panel-options'],['Left Menu Copyright content', 'left-menu#left-panel-options']);
309
 
310
  // Right Menu Tab - Main options
311
- termsList.push(['Right Menu Content', 'right-menu'],['Right Menu', 'right-menu'],['Parent Link open submenu', 'right-menu'],['Only visible for logged users', 'right-menu']);
312
 
313
  // Right Menu Tab - Right Menu Icon
314
- termsList.push(['Text After Icon', 'right-menu#menu-icon'],['Icon Action', 'right-menu#menu-icon'],['Icon Link URL', 'right-menu#menu-icon'],['Icon Link URL target', 'right-menu#menu-icon'],['Icon Type', 'right-menu#menu-icon'],['Icon Animation Type', 'right-menu#menu-icon'],['Icon Font', 'right-menu#menu-icon'],['Icon Font Size', 'right-menu#menu-icon'],['Icon Image', 'right-menu#menu-icon'],['Icon Top Margin', 'right-menu#menu-icon'],['Icon Left Margin', 'right-menu#menu-icon'],['Menu item icons position', 'right-menu#menu-icon'],['Menu Item icons Horizontal Padding', 'right-menu#menu-icon']);
315
 
316
  // Right Menu Tab - Right Panel options
317
- termsList.push(['Right Panel Background Image', 'right-menu#right-panel-options'],['Right Panel Background Image Opacity', 'right-menu#right-panel-options'],['Right Panel Background Image Size', 'right-menu#right-panel-options'],['Right Panel Background Gradient CSS', 'right-menu#right-panel-options'],['Right Menu Panel Widht Units', 'right-menu#right-panel-options'],['Right Menu Panel Width (Pixels)', 'right-menu#right-panel-options'],['Right Menu Panel Width (Percentage)', 'right-menu#right-panel-options'],['Right Menu content padding', 'right-menu#right-panel-options'],['Right Menu Copyright content', 'right-menu#right-panel-options']);
318
 
319
  // WooCommerce Tab - Main options
320
  termsList.push(['Enable WooCommerce Menu', 'woocommerce'],['Open cart after adding a product', 'woocommerce'],['Enable Account links in Mobile Cart Panel', 'woocommerce'],['Header Search only in products', 'woocommerce'],['Cart Total in Footer', 'woocommerce']);
@@ -343,7 +368,8 @@
343
  var found = termsList.find(function(element) {
344
  if ( 0 <= element[0].toLowerCase().indexOf(searchTerm.toLowerCase()) ) {
345
  var linkURL = window.location.origin + window.location.pathname + '?page=mobile-menu-options&tab=' + element[1];
346
- $searchResult += '<li><a href="' + linkURL + '">' + element[0] + '</a></li>';
 
347
  }
348
  });
349
 
@@ -352,14 +378,20 @@
352
  }
353
 
354
  $( '.mm-search-settings-results' ).html( $searchResult );
 
355
  }
356
  else {
357
  $( '.mm-search-settings-results' ).html( '' );
 
358
  }
359
  });
360
 
 
 
 
 
361
 
362
- $( document ).on( "click", ".mobmenu-item-settings" , function( e ) {
363
 
364
  e.preventDefault();
365
 
@@ -415,15 +447,36 @@
415
 
416
  });
417
 
418
-
419
- $( "#mobmenu_search_icons" ).focus();
420
  });
421
-
422
  $( document ).on( 'click', '.nav-tab-wrapper ul li', function(e) {
 
423
  e.preventDefault();
424
- $('html, body').animate({
425
- scrollTop: parseInt($('#'+$(this).attr('data-link-id')).offset().top - 45)
426
- }, 1000);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
427
  });
428
 
429
  $( "#menu-to-edit li.menu-item" ).each( function() {
19
  jQuery( document ).ready( function(){
20
  var editorSettings = null;
21
 
22
+ $( '#mobmenu_hide_elements' ).after( '<a href="#" class="mobmenu-find-element"><span class="dashicons-before dashicons-search">Find element</a>' );
23
  $('body').append('<iframe class="mobmenu-preview-iframe" scrolling="no" id="mobmenu-preview-iframe" width="380" height="650" >');
24
+ setTimeout(function(){
25
+ const urlParams = new URLSearchParams( window.location.search );
26
+ var subMenu = urlParams.get( 'tab' );
27
+
28
+ if ( subMenu == null ) {
29
+ subMenu = 'general-options';
30
+ }
31
+ $( '.nav-tab-wrapper .nav-tab' ).removeClass( 'active' );
32
+ $( '[data-link-id=' + subMenu + ']' ).parent().parent().addClass( 'active' );
33
+ $( '[data-link-id=' + subMenu + ']' ).click();
34
+
35
+ }, 100);
36
+
37
 
38
  // Initilialize the CodeMirror on the custom CSS option.
39
  if ( $('#mobmenu_custom_css').length > 0 ) {
83
  }
84
  });
85
 
86
+
87
+ $( document ).on( 'click', '.mm-search-settings-results li' , function ( e ) {
88
+
89
+ e.preventDefault();
90
+ var dataTarget = jQuery( this ).find('a').attr( 'data-target-id' );
91
+ jQuery('[data-link-id=' + dataTarget ).parent().click();
92
+ jQuery('[data-link-id=' + dataTarget ).click();
93
+ $( '.mm-search-settings-results' ).css( 'opacity', '0');
94
+ $( '.mm-search-settings-results' ).html( '' );
95
+ $( '#mm_search_settings').val('');
96
+ });
97
+
98
  $( document ).on( "click", ".mobmenu-close-overlay" , function () {
99
 
100
  $( ".mobmenu-icons-overlay" ).fadeOut();
288
  searchTerm = $( this ).val();
289
  var previousTerm = '';
290
  var termsList = [];
291
+ termsList = [['Header Options','url'],['Left Menu Options','left-menu-options'],['Right Menu Options','value6'], ['Color Options', 'url']];
292
 
293
  // General Options Tab - Main Options
294
+ termsList.push(['Mobile Menu Visibility (Width trigger)', 'general-visibility-options'],['Enable only in Mobile devices', 'general-visibility-options'],['Enable Testing Mode', 'general-visibility-options'],['Enable Left Menu', 'left-menu-options'],['Enable Right Menu', 'right-menu-options'],['Enable Footer Menu', 'footer-options']);
295
 
296
  // General Options Tab - Hide Original Theme menu
297
+ termsList.push(['Hide Elements', 'general-hide-elements'],['Hide Elements by default', 'general-hide-elements']);
298
 
299
  // General Options Tab - Miscelaneous Options
300
+ termsList.push(['Menu Display Type', 'general-misc-options'],['Enable Over effects', 'general-misc-options'],['Sliding Submenus', 'general-misc-options'],['Automatically Close Submenus', 'general-misc-options'],['Menu items border size', 'general-misc-options'],['Close icon', 'general-misc-options'],['Close icon font size', 'general-misc-options'],['Submenu Open icon', 'general-misc-options'],['Submenu Close icon', 'general-misc-options'],['Submenu icon font size', 'general-misc-options']);
301
 
302
  // General Options Tab - Advanced Options
303
+ termsList.push(['Sticky HTML Elements', 'general-advanced-options'],['Custom CSS', 'general-advanced-options'],['Custom JS', 'general-advanced-options'],['Disable Mobile Menu on specific custom post types', 'general-advanced-options'],['Disable Mobile Menu on seleted pages', 'general-advanced-options']);
304
 
305
  // General Options Tab - Import and Export Options
306
+ termsList.push(['Export Settings', 'general-import-export'],['Import Settings', 'general-import-export']);
307
 
308
  // Header Tab - Logo
309
+ termsList.push(['Site Logo', 'logo-options'],['Upload Logo', 'logo-options'],['Logo Height', 'logo-options'],['Retina Logo', 'logo-options'],['Disable Logo URL', 'logo-options'],['Alternative Logo URL', 'logo-options'],['Logo/Text Top Margin', 'logo-options']);
310
 
311
  // Header Tab - Header Main Options
312
+ termsList.push(['Header Elements Position', 'header'],['Sticky Header', 'header-options'],['Naked Header', 'header-options'],['Disable Logo/Text', 'header-options'],['Auto-hide Header when scrolling down.', 'header-options']);
313
 
314
  // Header Tab - Header
315
+ termsList.push(['Header Shadow', 'header-options'],['Header Height', 'header-options'],['Header Text', 'header-options'],['Use page title text', 'header-options'],['Header Logo/Text Alignment', 'header-options'],['Header Logo/Text Left Margin', 'header-options'],['Header Logo/text Spacing', 'header-options'],['Header Logo/text Right Margin', 'header-options']);
316
 
317
  // Header Tab - Header Banner
318
  termsList.push(['Enable Header Banner', 'header#header-banner-options'],['Header Banner Position', 'header#header-banner-options'],['Header Banner Content', 'header#header-banner-options'],['Header Banner Height', 'header#header-banner-options'],['Disable Logo URL', 'header#header-banner-options'],['Header Banner Alignment', 'header#header-banner-options'],['Header Banner Padding', 'header#header-banner-options']);
324
  termsList.push(['Footer Menu', 'footer'],['Auto-hide Footer when scrolling up', 'footer'],['Footer style', 'footer'],['Footer padding', 'footer'],['Icon font size', 'footer'],['Footer Text Font/Size', 'footer']);
325
 
326
  // Left Menu Tab - Main options
327
+ termsList.push(['Left Menu Content', 'left-menu-options'],['Left Menu', 'left-menu-options'],['Parent Link open submenu', 'left-menu-options'],['Only visible for logged users', 'left-menu-options']);
328
 
329
  // Left Menu Tab - Left Menu Icon
330
+ termsList.push(['Text After Icon', 'left-menu-icon'],['Icon Action', 'left-menu-icon'],['Icon Link URL', 'left-menu-icon'],['Icon Link URL target', 'left-menu-icon'],['Icon Type', 'left-menu-icon'],['Icon Animation Type', 'left-menu-icon'],['Icon Font', 'left-menu-icon'],['Icon Font Size', 'left-menu-icon'],['Icon Image', 'left-menu-icon'],['Icon Top Margin', 'left-menu-icon'],['Icon Left Margin', 'left-menu-icon'],['Menu item icons position', 'left-menu-icon'],['Menu Item icons Horizontal Padding', 'left-menu-icon']);
331
 
332
  // Left Menu Tab - Left Panel options
333
+ termsList.push(['Left Panel Background Image', 'left-panel-options'],['Left Panel Background Image Opacity', 'left-panel-options'],['Left Panel Background Image Size', 'left-panel-options'],['Left Panel Background Gradient CSS', 'left-panel-options'],['Left Menu Panel Widht Units', 'left-panel-options'],['Left Menu Panel Width (Pixels)', 'left-panel-options'],['Left Menu Panel Width (Percentage)', 'left-panel-options'],['Left Menu content padding', 'left-panel-options'],['Left Menu Copyright content', 'left-panel-options']);
334
 
335
  // Right Menu Tab - Main options
336
+ termsList.push(['Right Menu Content', 'right-menu-options'],['Right Menu', 'right-menu-options'],['Parent Link open submenu', 'right-menu-options'],['Only visible for logged users', 'right-menu-options']);
337
 
338
  // Right Menu Tab - Right Menu Icon
339
+ termsList.push(['Text After Icon', 'right-menu-options'],['Icon Action', 'right-menu-options'],['Icon Link URL', 'right-menu-options'],['Icon Link URL target', 'right-menu-options'],['Icon Type', 'right-menu-icon'],['Icon Animation Type', 'right-menu-icon'],['Icon Font', 'right-menu-icon'],['Icon Font Size', 'right-menu-icon'],['Icon Image', 'right-menu-icon'],['Icon Top Margin', 'right-menu-icon'],['Icon Left Margin', 'right-menu-icon'],['Menu item icons position', 'right-menu-icon'],['Menu Item icons Horizontal Padding', 'right-menu-icon']);
340
 
341
  // Right Menu Tab - Right Panel options
342
+ termsList.push(['Right Panel Background Image', 'right-panel-options'],['Right Panel Background Image Opacity', 'right-panel-options'],['Right Panel Background Image Size', 'right-panel-options'],['Right Panel Background Gradient CSS', 'right-panel-options'],['Right Menu Panel Widht Units', 'right-panel-options'],['Right Menu Panel Width (Pixels)', 'right-panel-options'],['Right Menu Panel Width (Percentage)', 'right-panel-options'],['Right Menu content padding', 'right-panel-options'],['Right Menu Copyright content', 'right-panel-options']);
343
 
344
  // WooCommerce Tab - Main options
345
  termsList.push(['Enable WooCommerce Menu', 'woocommerce'],['Open cart after adding a product', 'woocommerce'],['Enable Account links in Mobile Cart Panel', 'woocommerce'],['Header Search only in products', 'woocommerce'],['Cart Total in Footer', 'woocommerce']);
368
  var found = termsList.find(function(element) {
369
  if ( 0 <= element[0].toLowerCase().indexOf(searchTerm.toLowerCase()) ) {
370
  var linkURL = window.location.origin + window.location.pathname + '?page=mobile-menu-options&tab=' + element[1];
371
+
372
+ $searchResult += '<li><a href="' + linkURL + '" data-target-id="' + element[1] + ' ">' + element[0] + '</a></li>';
373
  }
374
  });
375
 
378
  }
379
 
380
  $( '.mm-search-settings-results' ).html( $searchResult );
381
+ $( '.mm-search-settings-results' ).css( 'opacity', '1' );
382
  }
383
  else {
384
  $( '.mm-search-settings-results' ).html( '' );
385
+ $( '.mm-search-settings-results' ).css( 'opacity', '0');
386
  }
387
  });
388
 
389
+ $( document ).on( 'click', '.mm-scan-alerts a' , function( e ) {
390
+ e.preventDefault();
391
+ $( '[data-link-id=general-alerts]' ).click();
392
+ });
393
 
394
+ $( document ).on( 'click', '.mobmenu-item-settings' , function( e ) {
395
 
396
  e.preventDefault();
397
 
447
 
448
  });
449
 
450
+ $( "#mobmenu_search_icons" ).focus();
 
451
  });
452
+
453
  $( document ).on( 'click', '.nav-tab-wrapper ul li', function(e) {
454
+
455
  e.preventDefault();
456
+ var dataLinkId = $(this).attr( 'data-link-id' );
457
+
458
+ $( '.nav-tab-wrapper .nav-tab li' ).removeClass( 'active' );
459
+ $(this).addClass( 'active' );
460
+ $( '.titan-framework-panel-wrap .form-table tr' ).hide();
461
+ $( '.' + dataLinkId ).show();
462
+ const url = new URL(window.location);
463
+ url.searchParams.set('tab', dataLinkId);
464
+ window.history.pushState({}, '', url);
465
+
466
+ return false;
467
+ });
468
+
469
+ $( document ).on( 'click', '.titan-framework-panel-wrap .nav-tab-wrapper .nav-tab', function(e) {
470
+ e.preventDefault();
471
+ $( '.nav-tab-wrapper .nav-tab.active ul' ).hide();
472
+ $( '.nav-tab-wrapper .nav-tab' ).removeClass( 'active' );
473
+ $(this).find( 'ul' ).first().show();
474
+ $(this).addClass( 'active' );
475
+ $( '.nav-tab-wrapper .nav-tab li' ).removeClass( 'active' );
476
+ $(this).find( 'ul li' ).first().addClass( 'active' );
477
+ $( '.titan-framework-panel-wrap .form-table tr' ).hide();
478
+ $( '.' + $(this).attr( 'data-tab-id' ) ).show();
479
+
480
  });
481
 
482
  $( "#menu-to-edit li.menu-item" ).each( function() {
includes/js/mobmenu.js CHANGED
@@ -9,64 +9,80 @@
9
  */
10
 
11
  "use strict";
12
- function getSelector(el){
13
- var $el = jQuery(el);
14
-
15
- var id = $el.attr("id");
16
- if (id) { //"should" only be one of these if theres an ID
17
- return "#"+ id;
18
- }
19
-
20
- var selector = $el.parents()
21
- .map(function() { return this.tagName; })
22
- .get().reverse().join(" ");
23
-
24
- if (selector) {
25
- selector += " "+ $el[0].nodeName;
26
- }
27
-
28
- var classNames = $el.attr("class");
29
- if (classNames) {
30
- selector += "." + jQuery.trim(classNames).replace(/\s/gi, ".");
31
- }
32
-
33
- var name = $el.attr('name');
34
- if (name) {
35
- selector += "[name='" + name + "']";
36
- }
37
- if (!name){
38
- var index = $el.index();
39
- if (index) {
40
- index = index + 1;
41
- selector += ":nth-child(" + index + ")";
42
- }
43
- }
44
- return selector;
45
- }
46
- function enableMobileMenuElementPicker(){
47
- const p = new Picker({
48
- elm: document.getElementById('elm1'),
49
- mode: 'cover',
50
- excludeElmName: ['body'],
51
- events: [{
52
- key: 'contextmenu',
53
- fn(event) {
54
- event.preventDefault();
55
- },
56
- }],
57
- onInit() {
58
- },
59
- onClick(event) {
60
- var selector = getSelector(event.target).toLowerCase();
61
- window.parent.receivePickedElement(selector);
62
- jQuery(selector).hide();
63
- },
64
- onHover(event) {
65
- },
66
- });
67
-
68
- }
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  jQuery( document ).ready( function($) {
71
 
72
  const urlParams = new URLSearchParams( window.location.search );
@@ -94,7 +110,7 @@
94
  } else {
95
  submenu.hide();
96
  }
97
-
98
  if ( ! $('body').hasClass('mob-menu-sliding-menus') ) {
99
  $( menu ).find('.open-icon').toggleClass('hide');
100
  $( menu ).find('.close-icon').toggleClass('hide');
@@ -104,7 +120,6 @@
104
 
105
 
106
  }
107
-
108
 
109
  if ( $( 'body' ).find( '.mobmenu-push-wrap' ).length <= 0 && $( 'body' ).hasClass('mob-menu-slideout') ) {
110
 
@@ -124,7 +139,6 @@
124
  // Double Check the the menu display classes where added to the body.
125
  var menu_display_type = $( '.mob-menu-header-holder' ).attr( 'data-menu-display' );
126
 
127
-
128
  if ( menu_display_type != '' && !$( 'body' ).hasClass( 'mob-menu-slideout' ) && !$( 'body' ).hasClass( 'mob-menu-slideout-over' ) && !$( 'body' ).hasClass( 'mob-menu-slideout-top' ) && !$( 'body' ).hasClass( 'mob-menu-overlay' ) ) {
129
  $( 'body' ).addClass( menu_display_type );
130
  }
9
  */
10
 
11
  "use strict";
12
+ function getSelector(el){
13
+ var $el = jQuery(el);
14
+
15
+ var id = $el.attr("id");
16
+ if (id) { //"should" only be one of these if theres an ID
17
+ return "#"+ id;
18
+ }
19
+
20
+ var selector = $el.parents()
21
+ .map(function() { return this.tagName; })
22
+ .get().reverse().join(" ");
23
+
24
+ if (selector) {
25
+ selector += " "+ $el[0].nodeName;
26
+ }
27
+
28
+ var classNames = $el.attr("class");
29
+ if (classNames) {
30
+ selector += "." + jQuery.trim(classNames).replace(/\s/gi, ".");
31
+ }
32
+
33
+ var name = $el.attr('name');
34
+ if (name) {
35
+ selector += "[name='" + name + "']";
36
+ }
37
+ if (!name){
38
+ var index = $el.index();
39
+ if (index) {
40
+ index = index + 1;
41
+ selector += ":nth-child(" + index + ")";
42
+ }
43
+ }
44
+ return selector;
45
+ }
46
+
47
+ function enableMobileMenuElementPicker(){
48
+ const p = new Picker({
49
+ elm: document.getElementById('elm1'),
50
+ mode: 'cover',
51
+ excludeElmName: ['body'],
52
+ events: [{
53
+ key: 'contextmenu',
54
+ fn(event) {
55
+ event.preventDefault();
56
+ },
57
+ }],
58
+ onInit() {
59
+ },
60
+ onClick(event) {
61
+ var selector = getSelector(event.target).toLowerCase();
62
+ window.parent.receivePickedElement(selector);
63
+ jQuery(selector).hide();
64
+ },
65
+ onHover(event) {
66
+ },
67
+ });
 
68
 
69
+ document.getElementById('m_on').addEventListener('click', () => {
70
+ p.on();
71
+ });
72
+
73
+ document.getElementById('m_off').addEventListener('click', () => {
74
+ p.off();
75
+ });
76
+
77
+ document.getElementById('m_cover').addEventListener('click', () => {
78
+ p.changeMode('cover');
79
+ });
80
+
81
+ document.getElementById('m_target').addEventListener('click', () => {
82
+ p.changeMode('target');
83
+ });
84
+
85
+ }
86
  jQuery( document ).ready( function($) {
87
 
88
  const urlParams = new URLSearchParams( window.location.search );
110
  } else {
111
  submenu.hide();
112
  }
113
+
114
  if ( ! $('body').hasClass('mob-menu-sliding-menus') ) {
115
  $( menu ).find('.open-icon').toggleClass('hide');
116
  $( menu ).find('.close-icon').toggleClass('hide');
120
 
121
 
122
  }
 
123
 
124
  if ( $( 'body' ).find( '.mobmenu-push-wrap' ).length <= 0 && $( 'body' ).hasClass('mob-menu-slideout') ) {
125
 
139
  // Double Check the the menu display classes where added to the body.
140
  var menu_display_type = $( '.mob-menu-header-holder' ).attr( 'data-menu-display' );
141
 
 
142
  if ( menu_display_type != '' && !$( 'body' ).hasClass( 'mob-menu-slideout' ) && !$( 'body' ).hasClass( 'mob-menu-slideout-over' ) && !$( 'body' ).hasClass( 'mob-menu-slideout-top' ) && !$( 'body' ).hasClass( 'mob-menu-overlay' ) ) {
143
  $( 'body' ).addClass( menu_display_type );
144
  }
mobmenu.php CHANGED
@@ -3,11 +3,11 @@
3
  /**
4
  * Plugin Name: Mobile Menu
5
  * Description: An easy to use WordPress responsive mobile menu. Keep your mobile visitors engaged.
6
- * Version: 2.8.1.8.1
7
  * Plugin URI: https://www.wpmobilemenu.com/
8
  * Author: Rui Guerreiro
9
  * Author URI: https://www.jedipress.com/
10
- * Tested up to: 5.6
11
  * Text Domain: mobile-menu
12
  * Domain Path: /languages/
13
  * License: GPLv2
@@ -16,7 +16,7 @@
16
  if ( !defined( 'ABSPATH' ) ) {
17
  die;
18
  }
19
- define( 'WP_MOBILE_MENU_VERSION', '2.8.1.8.1' );
20
  define( 'WP_MOBILE_MENU_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
21
  define( 'WP_MOBILE_MENU_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
22
  if ( !class_exists( 'WP_Mobile_Menu' ) ) {
@@ -82,7 +82,7 @@ if ( !class_exists( 'WP_Mobile_Menu' ) ) {
82
  add_action( 'wp_loaded', array( $this->mobmenu_core, 'register_sidebar' ) );
83
  // Register Menus.
84
  add_action( 'init', array( $this->mobmenu_core, 'register_menus' ) );
85
- // Find Elements to Hide.
86
  add_action( 'init', array( $this->mobmenu_core, 'find_elements_mobmenu' ) );
87
  // Load frontend assets.
88
  if ( !is_admin() ) {
@@ -156,7 +156,7 @@ if ( !class_exists( 'WP_Mobile_Menu' ) ) {
156
  */
157
  private function include_required_files()
158
  {
159
- require_once dirname( __FILE__ ) . '/options-framework/titan-framework/titan-framework-embedder.php';
160
  require_once dirname( __FILE__ ) . '/includes/class-wp-mobile-menu-core.php';
161
  require_once dirname( __FILE__ ) . '/includes/class-wp-mobile-menu-options.php';
162
  require_once dirname( __FILE__ ) . '/includes/class-wp-mobile-menu-walker-nav-menu.php';
@@ -173,11 +173,10 @@ if ( !class_exists( 'WP_Mobile_Menu' ) ) {
173
  $is_mobile_only = $mobmenu_options->getOption( 'only_mobile_devices' );
174
  $is_testing_mode = $mobmenu_options->getOption( 'only_testing_mode' );
175
  $mobmenu_action = '';
176
-
177
- if ( isset($_GET['mobmenu-action']) ) {
178
- $mobmenu_action = $_GET['mobmenu-action'];
179
- }
180
-
181
  if ( $mobmenu_action == 'find-element' || $is_testing_mode && current_user_can( 'administrator' ) || !$is_testing_mode && (!$is_mobile_only || $is_mobile_only && wp_is_mobile()) ) {
182
  // Enqueue Html to the Footer.
183
  add_action( 'wp_footer', array( $this->mobmenu_core, 'load_menu_html_markup' ) );
@@ -234,7 +233,12 @@ if ( !class_exists( 'WP_Mobile_Menu' ) ) {
234
  if ( 'nav-menus.php' === $hook || 'toplevel_page_mobile-menu-options' === $hook ) {
235
  wp_enqueue_style( 'cssmobmenu-icons', plugins_url( 'includes/css/mobmenu-icons.css', __FILE__ ) );
236
  wp_enqueue_style( 'cssmobmenu-admin', plugins_url( 'includes/css/mobmenu-admin.css', __FILE__ ) );
237
- wp_register_script( 'mobmenu-admin-js', plugins_url( 'includes/js/mobmenu-admin.js', __FILE__ ), array( 'jquery' ) );
 
 
 
 
 
238
  wp_enqueue_script( 'mobmenu-admin-js' );
239
  }
240
 
@@ -265,9 +269,8 @@ if ( isset( $admin_options['only_mobile_devices'] ) ) {
265
  }
266
 
267
  $mobmenu_action = '';
268
-
269
- if ( isset($_GET['mobmenu-action']) ) {
270
- $mobmenu_action = $_GET['mobmenu-action'];
271
  }
272
 
273
  if ( $mobmenu_action == 'find-element' || is_admin() || (!$is_mobile_only || $is_mobile_only && wp_is_mobile()) ) {
3
  /**
4
  * Plugin Name: Mobile Menu
5
  * Description: An easy to use WordPress responsive mobile menu. Keep your mobile visitors engaged.
6
+ * Version: 2.8.2
7
  * Plugin URI: https://www.wpmobilemenu.com/
8
  * Author: Rui Guerreiro
9
  * Author URI: https://www.jedipress.com/
10
+ * Tested up to: 5.7
11
  * Text Domain: mobile-menu
12
  * Domain Path: /languages/
13
  * License: GPLv2
16
  if ( !defined( 'ABSPATH' ) ) {
17
  die;
18
  }
19
+ define( 'WP_MOBILE_MENU_VERSION', '2.8.2' );
20
  define( 'WP_MOBILE_MENU_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
21
  define( 'WP_MOBILE_MENU_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
22
  if ( !class_exists( 'WP_Mobile_Menu' ) ) {
82
  add_action( 'wp_loaded', array( $this->mobmenu_core, 'register_sidebar' ) );
83
  // Register Menus.
84
  add_action( 'init', array( $this->mobmenu_core, 'register_menus' ) );
85
+ // Find Elements to hide.
86
  add_action( 'init', array( $this->mobmenu_core, 'find_elements_mobmenu' ) );
87
  // Load frontend assets.
88
  if ( !is_admin() ) {
156
  */
157
  private function include_required_files()
158
  {
159
+ require_once dirname( __FILE__ ) . '/options-framework/option-framework.php';
160
  require_once dirname( __FILE__ ) . '/includes/class-wp-mobile-menu-core.php';
161
  require_once dirname( __FILE__ ) . '/includes/class-wp-mobile-menu-options.php';
162
  require_once dirname( __FILE__ ) . '/includes/class-wp-mobile-menu-walker-nav-menu.php';
173
  $is_mobile_only = $mobmenu_options->getOption( 'only_mobile_devices' );
174
  $is_testing_mode = $mobmenu_options->getOption( 'only_testing_mode' );
175
  $mobmenu_action = '';
176
+ if ( isset( $_GET['mobmenu-action'] ) ) {
177
+ $mobmenu_action = $_GET['mobmenu-action'];
178
+ }
179
+
 
180
  if ( $mobmenu_action == 'find-element' || $is_testing_mode && current_user_can( 'administrator' ) || !$is_testing_mode && (!$is_mobile_only || $is_mobile_only && wp_is_mobile()) ) {
181
  // Enqueue Html to the Footer.
182
  add_action( 'wp_footer', array( $this->mobmenu_core, 'load_menu_html_markup' ) );
233
  if ( 'nav-menus.php' === $hook || 'toplevel_page_mobile-menu-options' === $hook ) {
234
  wp_enqueue_style( 'cssmobmenu-icons', plugins_url( 'includes/css/mobmenu-icons.css', __FILE__ ) );
235
  wp_enqueue_style( 'cssmobmenu-admin', plugins_url( 'includes/css/mobmenu-admin.css', __FILE__ ) );
236
+ wp_register_script(
237
+ 'mobmenu-admin-js',
238
+ plugins_url( 'includes/js/mobmenu-admin.js', __FILE__ ),
239
+ array( 'jquery' ),
240
+ WP_MOBILE_MENU_VERSION
241
+ );
242
  wp_enqueue_script( 'mobmenu-admin-js' );
243
  }
244
 
269
  }
270
 
271
  $mobmenu_action = '';
272
+ if ( isset( $_GET['mobmenu-action'] ) ) {
273
+ $mobmenu_action = $_GET['mobmenu-action'];
 
274
  }
275
 
276
  if ( $mobmenu_action == 'find-element' || is_admin() || (!$is_mobile_only || $is_mobile_only && wp_is_mobile()) ) {
options-framework/{titan-framework/css → css}/admin-styles.css RENAMED
@@ -128,13 +128,7 @@
128
  border-bottom: 1px solid #eee;
129
  }
130
  .titan-framework-panel-wrap .form-table + p.submit {
131
- padding: 7px 10px;
132
- border-left: 1px solid #DFDFDF;
133
- border-right: 1px solid #DFDFDF;
134
- border: 1px solid #DFDFDF;
135
- position: fixed;
136
- bottom: 0px;
137
- right: 0px;
138
  background: #fff;
139
  z-index: 999999;
140
  }
128
  border-bottom: 1px solid #eee;
129
  }
130
  .titan-framework-panel-wrap .form-table + p.submit {
131
+ padding: 14px 10px;
 
 
 
 
 
 
132
  background: #fff;
133
  z-index: 999999;
134
  }
options-framework/{titan-framework/css → css}/admin-theme-customizer-styles.css RENAMED
File without changes
options-framework/{titan-framework/css → css}/class-option-date.css RENAMED
File without changes
options-framework/{titan-framework/css → css}/class-option-font.css RENAMED
File without changes
options-framework/{titan-framework/css → css}/class-option-select.css RENAMED
File without changes
options-framework/{titan-framework/css → css}/select2/select2.min.css RENAMED
File without changes
options-framework/{titan-framework/inc → inc}/scssphp/LICENSE.md RENAMED
File without changes
options-framework/{titan-framework/inc → inc}/scssphp/README.md RENAMED
File without changes
options-framework/{titan-framework/inc → inc}/scssphp/composer.json RENAMED
File without changes
options-framework/{titan-framework/inc → inc}/scssphp/scss.inc.php RENAMED
File without changes
options-framework/{titan-framework/js → js}/admin-styling.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/dev/admin-styling.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/dev/jquery-ui-timepicker-addon.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/dev/serialize.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/dev/wp-color-picker-alpha.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/jquery-ui-timepicker-addon.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/min/admin-styling-min.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/min/jquery-ui-timepicker-addon-min.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/min/serialize-min.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/min/wp-color-picker-alpha-min.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/multicheck-select-all.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/select2/select2.min.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/serialize.js RENAMED
File without changes
options-framework/{titan-framework/js → js}/wp-color-picker-alpha.js RENAMED
File without changes
options-framework/{titan-framework/lib → lib}/class-admin-notification.php RENAMED
File without changes
options-framework/lib/class-admin-page.php ADDED
@@ -0,0 +1,535 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ // Exit if accessed directly
6
+ }
7
+
8
+ class TitanFrameworkAdminPage
9
+ {
10
+ private $defaultSettings = array(
11
+ 'name' => '',
12
+ 'title' => '',
13
+ 'parent' => null,
14
+ 'id' => '',
15
+ 'capability' => 'manage_options',
16
+ 'icon' => 'dashicons-admin-generic',
17
+ 'position' => null,
18
+ 'use_form' => true,
19
+ 'desc' => '',
20
+ ) ;
21
+ private $alert_messages = array() ;
22
+ public $options = array() ;
23
+ public $tabs = array() ;
24
+ private static $idsUsed = array() ;
25
+ private $activeTab = null ;
26
+ public $settings = array() ;
27
+ public $owner ;
28
+ public $panelID ;
29
+ function __construct( $settings, $owner )
30
+ {
31
+ $this->owner = $owner;
32
+ if ( !is_admin() ) {
33
+ return;
34
+ }
35
+ $this->settings = array_merge( $this->defaultSettings, $settings );
36
+ // $this->options = $options;
37
+ if ( empty($this->settings['name']) ) {
38
+ return;
39
+ }
40
+ if ( empty($this->settings['title']) ) {
41
+ $this->settings['title'] = $this->settings['name'];
42
+ }
43
+
44
+ if ( empty($this->settings['id']) ) {
45
+ $prefix = '';
46
+ if ( !empty($this->settings['parent']) ) {
47
+ $prefix = str_replace( ' ', '-', trim( strtolower( $this->settings['parent'] ) ) ) . '-';
48
+ }
49
+ $this->settings['id'] = $prefix . str_replace( ' ', '-', trim( strtolower( $this->settings['name'] ) ) );
50
+ $this->settings['id'] = str_replace( '&', '-', $this->settings['id'] );
51
+ }
52
+
53
+ // make sure all our IDs are unique
54
+ $suffix = '';
55
+ while ( in_array( $this->settings['id'] . $suffix, self::$idsUsed ) ) {
56
+
57
+ if ( $suffix == '' ) {
58
+ $suffix = 2;
59
+ } else {
60
+ $suffix++;
61
+ }
62
+
63
+ }
64
+ $this->settings['id'] .= $suffix;
65
+ // keep track of all IDs used
66
+ self::$idsUsed[] = $this->settings['id'];
67
+ $priority = -1;
68
+ if ( $this->settings['parent'] ) {
69
+ $priority = intval( $this->settings['position'] );
70
+ }
71
+ add_action( 'admin_menu', array( $this, 'register' ), $priority );
72
+ }
73
+
74
+ public function createAdminPanel( $settings )
75
+ {
76
+ $settings['parent'] = $this->settings['id'] ?? null;
77
+ return $this->owner->createAdminPanel( $settings );
78
+ }
79
+
80
+ public function register()
81
+ {
82
+ // Parent menu
83
+
84
+ if ( empty($this->settings['parent']) ) {
85
+ $this->panelID = add_menu_page(
86
+ $this->settings['name'],
87
+ $this->settings['title'],
88
+ $this->settings['capability'],
89
+ $this->settings['id'],
90
+ array( $this, 'createAdminPage' ),
91
+ $this->settings['icon'],
92
+ $this->settings['position']
93
+ );
94
+ // Sub menu
95
+ } else {
96
+ $this->panelID = add_submenu_page(
97
+ $this->settings['parent'],
98
+ $this->settings['name'],
99
+ $this->settings['title'],
100
+ $this->settings['capability'],
101
+ $this->settings['id'],
102
+ array( $this, 'createAdminPage' )
103
+ );
104
+ }
105
+
106
+ add_action( 'load-' . $this->panelID, array( $this, 'saveOptions' ) );
107
+ }
108
+
109
+ public function getOptionNamespace()
110
+ {
111
+ return $this->owner->optionNamespace;
112
+ }
113
+
114
+ public function save_single_option( $option )
115
+ {
116
+ if ( empty($option->settings['id']) ) {
117
+ return;
118
+ }
119
+
120
+ if ( isset( $_POST[$this->getOptionNamespace() . '_' . $option->settings['id']] ) ) {
121
+ $value = $_POST[$this->getOptionNamespace() . '_' . $option->settings['id']];
122
+ } else {
123
+ $value = '';
124
+ }
125
+
126
+ $option->setValue( $value );
127
+ }
128
+
129
+ public function saveOptions()
130
+ {
131
+ if ( !$this->verifySecurity() ) {
132
+ return;
133
+ }
134
+ $message = '';
135
+ $activeTab = $this->getActiveTab();
136
+ /*
137
+ * Save
138
+ */
139
+
140
+ if ( 'save' === $_POST['action'] ) {
141
+ // we are in a tab.
142
+ if ( !empty($activeTab) ) {
143
+ foreach ( $activeTab->options as $option ) {
144
+ $this->save_single_option( $option );
145
+ if ( !empty($option->options) ) {
146
+ foreach ( $option->options as $group_option ) {
147
+ $this->save_single_option( $group_option );
148
+ }
149
+ }
150
+ }
151
+ }
152
+ foreach ( $this->options as $option ) {
153
+ $this->save_single_option( $option );
154
+ if ( !empty($option->options) ) {
155
+ foreach ( $option->options as $group_option ) {
156
+ $this->save_single_option( $group_option );
157
+ }
158
+ }
159
+ }
160
+ // Hook 'tf_pre_save_options_{namespace}' - action pre-saving.
161
+ /**
162
+ * Fired right before options are saved.
163
+ *
164
+ * @since 1.0
165
+ *
166
+ * @param TitanFrameworkAdminPage|TitanFrameworkMetaBox $this The container currently being saved.
167
+ */
168
+ $namespace = $this->getOptionNamespace();
169
+ do_action( "tf_pre_save_options_{$namespace}", $this );
170
+ do_action(
171
+ "tf_pre_save_admin_{$namespace}",
172
+ $this,
173
+ $activeTab,
174
+ $this->options
175
+ );
176
+ $this->owner->saveInternalAdminPageOptions();
177
+ do_action(
178
+ 'tf_save_admin_' . $this->getOptionNamespace(),
179
+ $this,
180
+ $activeTab,
181
+ $this->options
182
+ );
183
+ $message = 'saved';
184
+ /*
185
+ * Reset
186
+ */
187
+ } else {
188
+
189
+ if ( 'reset' === $_POST['action'] ) {
190
+ // We are in a tab.
191
+ if ( !empty($activeTab) ) {
192
+ foreach ( $activeTab->options as $option ) {
193
+ if ( !empty($option->options) ) {
194
+ foreach ( $option->options as $group_option ) {
195
+ if ( !empty($group_option->settings['id']) ) {
196
+ $group_option->setValue( $group_option->settings['default'] );
197
+ }
198
+ }
199
+ }
200
+ if ( empty($option->settings['id']) ) {
201
+ continue;
202
+ }
203
+ $option->setValue( $option->settings['default'] );
204
+ }
205
+ }
206
+ foreach ( $this->options as $option ) {
207
+ if ( !empty($option->options) ) {
208
+ foreach ( $option->options as $group_option ) {
209
+ if ( !empty($group_option->settings['id']) ) {
210
+ $group_option->setValue( $group_option->settings['default'] );
211
+ }
212
+ }
213
+ }
214
+ if ( empty($option->settings['id']) ) {
215
+ continue;
216
+ }
217
+ $option->setValue( $option->settings['default'] );
218
+ }
219
+ // Hook 'tf_pre_reset_options_{namespace}' - action pre-saving.
220
+ do_action( 'tf_pre_reset_options_' . $this->getOptionNamespace(), $this );
221
+ do_action(
222
+ 'tf_pre_reset_admin_' . $this->getOptionNamespace(),
223
+ $this,
224
+ $activeTab,
225
+ $this->options
226
+ );
227
+ $this->owner->saveInternalAdminPageOptions();
228
+ do_action(
229
+ 'tf_reset_admin_' . $this->getOptionNamespace(),
230
+ $this,
231
+ $activeTab,
232
+ $this->options
233
+ );
234
+ $message = 'reset';
235
+ }
236
+
237
+ }
238
+
239
+ if ( 'import_mobmenu_settings' !== sanitize_text_field( $_POST['action'] ) ) {
240
+ do_action( 'tf_admin_options_saved_' . $this->getOptionNamespace() );
241
+ }
242
+ }
243
+
244
+ private function verifySecurity()
245
+ {
246
+ if ( empty($_POST) || empty($_POST['action']) ) {
247
+ return false;
248
+ }
249
+ $screen = get_current_screen();
250
+ if ( $screen->id != $this->panelID ) {
251
+ return false;
252
+ }
253
+ if ( !current_user_can( $this->settings['capability'] ) ) {
254
+ return false;
255
+ }
256
+ if ( !check_admin_referer( $this->settings['id'], TF . '_nonce' ) ) {
257
+ return false;
258
+ }
259
+ return true;
260
+ }
261
+
262
+ public function getActiveTab()
263
+ {
264
+ $this->activeTab = $this->tabs[0];
265
+ return $this->activeTab;
266
+ }
267
+
268
+ public function get_alert_messages()
269
+ {
270
+ return $this->alert_messages;
271
+ }
272
+
273
+ private function check_left_menu_assignment()
274
+ {
275
+ if ( $this->owner->getOption( 'enable_left_menu' ) ) {
276
+ if ( $this->owner->getOption( 'left_menu', '' ) == '' ) {
277
+ if ( !has_nav_menu( 'left-wp-mobile-menu' ) ) {
278
+ array_push( $this->alert_messages, 'The Left menu isnt assigned.' );
279
+ }
280
+ }
281
+ }
282
+ }
283
+
284
+ private function check_incorrect_url_settings()
285
+ {
286
+ if ( get_option( 'siteurl' ) != get_option( 'home' ) ) {
287
+ array_push( $this->alert_messages, 'You may have incorrect settings in your Site URL option in Settings -> General' );
288
+ }
289
+ }
290
+
291
+ private function check_right_menu_assignment()
292
+ {
293
+ if ( $this->owner->getOption( 'enable_right_menu' ) ) {
294
+ if ( $this->owner->getOption( 'right_menu', '' ) == '' ) {
295
+ if ( !has_nav_menu( 'right-wp-mobile-menu' ) ) {
296
+ array_push( $this->alert_messages, __( 'The Right menu isnt assigned.', 'mobile-menu' ) );
297
+ }
298
+ }
299
+ }
300
+ }
301
+
302
+ private function check_footer_menu_assignment()
303
+ {
304
+ if ( $this->owner->getOption( 'enable_footer_icons' ) ) {
305
+ if ( $this->owner->getOption( 'footer_menu', '' ) == '' ) {
306
+ if ( !has_nav_menu( 'footer-wp-mobile-menu' ) ) {
307
+ array_push( $this->alert_messages, __( 'The Footer menu isnt assigned.', 'mobile-menu' ) );
308
+ }
309
+ }
310
+ }
311
+ }
312
+
313
+ private function mm_scan_alert()
314
+ {
315
+ global $mm_fs ;
316
+ // Left Menu Enabled without menu.
317
+ $this->check_left_menu_assignment();
318
+ // Right Menu Enabled without menu.
319
+ $this->check_right_menu_assignment();
320
+ // Check Incorrect HTTPS settings.
321
+ $this->check_incorrect_url_settings();
322
+ return count( $this->alert_messages );
323
+ }
324
+
325
+ public function createAdminPage()
326
+ {
327
+ global $mm_fs ;
328
+ $alert_number = $this->mm_scan_alert();
329
+ ?>
330
+ <div class="wrap">
331
+ <div class="mobmenu-header-wrap">
332
+ <h2 class="mobmenu-title-h2"><?php
333
+ echo $this->settings['title'] ;
334
+ ?></h2>
335
+ <div class="mobmenu-header-wrap-inner">
336
+ <h2><?php
337
+ echo $this->settings['title'] ;
338
+ ?></h2>
339
+ <div class='mm-panel-search-bar'>
340
+ <input type="text" name="mm_search_settings" id="mm_search_settings" placeholder="Search Settings">
341
+ <div class="mm-search-settings-results"></div>
342
+ </div>
343
+ <div class="mm-scan-alerts">
344
+ <a href="#">
345
+ <i class="dashicons-before dashicons-bell"></i>
346
+ <span><?php
347
+ _e( "Alerts", 'mobile-menu' );
348
+ ?><span class="mm-alerts-bubble alert-number-<?php
349
+ echo $alert_number ;
350
+ ?>"><?php
351
+ echo $alert_number ;
352
+ ?></span></span>
353
+ </a>
354
+ </div>
355
+ <div class="mm-doc-icon"><a href="https://www.wpmobilemenu.com/knowledgebase/?utm_source=plugin-settings&utm_medium=user%20website&utm_campaign=documentation-link" target="_blank"><i class="dashicons-before dashicons-admin-page"></i><span>Documentation</span></a></div>
356
+ <div class="mm-version-holder">
357
+ <a href="https://www.wpmobilemenu.com/features-changelog/?utm_source=wprepo-dash&utm_medium=user%20website&utm_campaign=changelog_details" target="_blank"><?php
358
+ _e( "Version " . WP_MOBILE_MENU_VERSION . " </br>", 'mobile-menu' );
359
+ ?></a>
360
+ </div>
361
+ </div>
362
+ </div>
363
+ <?php
364
+
365
+ if ( !empty($this->settings['desc']) ) {
366
+ ?>
367
+ <p class='description'><?php
368
+ echo $this->settings['desc'] ;
369
+ ?></p>
370
+ <?php
371
+ }
372
+
373
+ ?>
374
+
375
+ <style>
376
+ .tf-sortable .mm-lang-selector {
377
+ background: url(<?php
378
+ echo WP_MOBILE_MENU_PLUGIN_URL ;
379
+ ?>/includes/assets/language-icon.png) no-repeat center top;
380
+ }
381
+ .tf-sortable .mm-cart-selector {
382
+ background: url(<?php
383
+ echo WP_MOBILE_MENU_PLUGIN_URL ;
384
+ ?>/includes/assets/cart-icon.png) no-repeat center top;
385
+ }
386
+ .tf-sortable .mm-search-selector {
387
+ background: url(<?php
388
+ echo WP_MOBILE_MENU_PLUGIN_URL ;
389
+ ?>/includes/assets/search-icon.png) no-repeat center top;
390
+ }
391
+ .tf-sortable .mm-left-menu-selector {
392
+ background: url(<?php
393
+ echo WP_MOBILE_MENU_PLUGIN_URL ;
394
+ ?>/includes/assets/left-menu-icon.png) no-repeat center top;
395
+ }
396
+ .tf-sortable .mm-right-menu-selector {
397
+ background: url(<?php
398
+ echo WP_MOBILE_MENU_PLUGIN_URL ;
399
+ ?>/includes/assets/right-menu-icon.png) no-repeat center top;
400
+ }
401
+ .tf-sortable .mm-logo-selector {
402
+ background: url(<?php
403
+ echo WP_MOBILE_MENU_PLUGIN_URL ;
404
+ ?>/includes/assets/logo-icon.png) no-repeat center top;
405
+ }
406
+ .tf-sortable .mm-shop-filter-selector {
407
+ background: url(<?php
408
+ echo WP_MOBILE_MENU_PLUGIN_URL ;
409
+ ?>/includes/assets/product-filter-icon.png) no-repeat center top;
410
+ }
411
+ </style>
412
+ <?php
413
+
414
+ if ( !$mm_fs->is_premium() ) {
415
+ $plan = 'mobmenu-standard';
416
+ } else {
417
+ $plan = 'mobmenu-premium';
418
+ }
419
+
420
+ ?>
421
+ <div class='titan-framework-panel-wrap <?php
422
+ echo $plan ;
423
+ ?>' >
424
+ <?php
425
+
426
+ if ( count( $this->tabs ) ) {
427
+ ?>
428
+ <h2 class="nav-tab-wrapper">
429
+ <?php
430
+ foreach ( $this->tabs as $tab ) {
431
+ $tab->displayTab();
432
+ }
433
+ ?>
434
+ </h2>
435
+ <?php
436
+ }
437
+
438
+
439
+ if ( !isset( $_GET['mobmenu-action'] ) || isset( $_GET['mobmenu-action'] ) && 'import-settings' !== $_GET['mobmenu-action'] ) {
440
+ $activeTab = $this->getActiveTab();
441
+ ?>
442
+
443
+ <div class='options-container active-tab-<?php
444
+ echo $activeTab->settings['id'] ;
445
+ ?>'>
446
+ <?php
447
+ // Display notification if we did something.
448
+ if ( !empty($_GET['message']) ) {
449
+
450
+ if ( 'saved' === $_GET['message'] ) {
451
+ echo TitanFrameworkAdminNotification::formNotification( __( 'Settings saved.', TF_I18NDOMAIN ), esc_html( $_GET['message'] ) ) ;
452
+ } else {
453
+ if ( 'reset' === $_GET['message'] ) {
454
+ echo TitanFrameworkAdminNotification::formNotification( __( 'Settings reset to default.', TF_I18NDOMAIN ), esc_html( $_GET['message'] ) ) ;
455
+ }
456
+ }
457
+
458
+ }
459
+ if ( $this->settings['use_form'] ) {
460
+ ?>
461
+ <form method='post'>
462
+ <?php
463
+ }
464
+ if ( $this->settings['use_form'] ) {
465
+ // Security nonce verification.
466
+ wp_nonce_field( $this->settings['id'], TF . '_nonce' );
467
+ }
468
+ ?>
469
+ <table class='form-table'>
470
+ <tbody>
471
+ <?php
472
+ do_action( 'tf_admin_page_table_start_' . $this->getOptionNamespace() );
473
+ $activeTab = $this->getActiveTab();
474
+
475
+ if ( !empty($activeTab) ) {
476
+
477
+ if ( !empty($activeTab->settings['desc']) ) {
478
+ ?>
479
+ <p class='description'><?php
480
+ echo $activeTab->settings['desc'] ;
481
+ ?></p>
482
+ <?php
483
+ }
484
+
485
+ $activeTab->displayOptions();
486
+ }
487
+
488
+ foreach ( $this->options as $option ) {
489
+ $option->display();
490
+ }
491
+ do_action( 'tf_admin_page_table_end_' . $this->getOptionNamespace() );
492
+ ?>
493
+ </tbody>
494
+ </table>
495
+ <?php
496
+ if ( $this->settings['use_form'] ) {
497
+ ?>
498
+ </form>
499
+ <?php
500
+ }
501
+ do_action( 'tf_admin_page_end_' . $this->getOptionNamespace() );
502
+ ?>
503
+ <div class='options-container active-tab-<?php
504
+ echo $activeTab->settings['id'] ;
505
+ ?>'>
506
+ </div>
507
+ </div>
508
+ </div>
509
+ </div>
510
+
511
+ <?php
512
+ do_action( 'tf_admin_page_after_' . $this->getOptionNamespace() );
513
+ } else {
514
+ do_action( 'mobile_menu_importer_page', $this->settings['id'] );
515
+ }
516
+
517
+ }
518
+
519
+ public function createTab( $settings )
520
+ {
521
+ $obj = new TitanFrameworkAdminTab( $settings, $this );
522
+ $this->tabs[] = $obj;
523
+ do_action( 'tf_admin_tab_created_' . $this->getOptionNamespace(), $obj );
524
+ return $obj;
525
+ }
526
+
527
+ public function createOption( $settings )
528
+ {
529
+ $obj = TitanFrameworkOption::factory( $settings, $this );
530
+ $this->options[] = $obj;
531
+ do_action( 'tf_create_option_' . $this->getOptionNamespace(), $obj );
532
+ return $obj;
533
+ }
534
+
535
+ }
options-framework/{titan-framework/lib → lib}/class-admin-tab.php RENAMED
@@ -52,12 +52,17 @@ class TitanFrameworkAdminTab
52
  'tab' => $this->settings['id'],
53
  ), remove_query_arg( array( 'message', 'mobmenu-action' ) ) );
54
  $tab_submenus = $this->displayTabSubmenus();
 
 
 
 
 
 
 
55
  ?>
56
- <a href="<?php
57
- echo esc_url( $url ) ;
58
- ?>" class="nav-tab <?php
59
- echo ( $this->isActiveTab() ? 'nav-tab-active' : '' ) ;
60
- ?>"><?php
61
  echo $this->settings['name'] ;
62
  echo $tab_submenus ;
63
  ?></a>
@@ -70,21 +75,37 @@ class TitanFrameworkAdminTab
70
  $output = '';
71
  $li_elements = '';
72
  $general_options_arr = array(
 
 
 
 
 
 
 
 
73
  array(
74
  'name' => __( 'Hide Theme Menu', 'mobile-menu' ),
75
- 'url' => 'hide-original-theme-menu',
76
  ),
77
  array(
78
  'name' => __( 'Miscelaneous Options', 'mobile-menu' ),
79
- 'url' => 'miscelaneous-options',
80
  ),
81
  array(
82
  'name' => __( 'Advanced Options', 'mobile-menu' ),
83
- 'url' => 'advanced-options',
 
 
 
 
84
  ),
85
  array(
86
  'name' => __( 'Import and Export', 'mobile-menu' ),
87
- 'url' => 'import-and-export',
 
 
 
 
88
  )
89
  );
90
  $header_arr = array( array(
@@ -96,15 +117,21 @@ class TitanFrameworkAdminTab
96
  ) );
97
  $woocommerce_arr = [];
98
  $right_menu_arr = array( array(
 
 
 
99
  'name' => __( 'Menu Icon', 'mobile-menu' ),
100
- 'url' => 'menu-icon',
101
  ), array(
102
  'name' => __( 'Right Panel', 'mobile-menu' ),
103
  'url' => 'right-panel-options',
104
  ) );
105
  $left_menu_arr = array( array(
 
 
 
106
  'name' => __( 'Menu Icon', 'mobile-menu' ),
107
- 'url' => 'menu-icon',
108
  ), array(
109
  'name' => __( 'Left Panel', 'mobile-menu' ),
110
  'url' => 'left-panel-options',
@@ -112,19 +139,19 @@ class TitanFrameworkAdminTab
112
  $colors_arr = array(
113
  array(
114
  'name' => __( 'General', 'mobile-menu' ),
115
- 'url' => 'general',
116
  ),
117
  array(
118
  'name' => __( 'Header', 'mobile-menu' ),
119
- 'url' => 'header',
120
  ),
121
  array(
122
  'name' => __( 'Left Menu', 'mobile-menu' ),
123
- 'url' => 'left-menu',
124
  ),
125
  array(
126
  'name' => __( 'Right Menu', 'mobile-menu' ),
127
- 'url' => 'right-menu',
128
  ),
129
  array(
130
  'name' => __( '3rd Level Menu', 'mobile-menu' ),
52
  'tab' => $this->settings['id'],
53
  ), remove_query_arg( array( 'message', 'mobmenu-action' ) ) );
54
  $tab_submenus = $this->displayTabSubmenus();
55
+
56
+ if ( $this->settings['id'] == 'general-options' ) {
57
+ $options_id = '';
58
+ } else {
59
+ $options_id = '-options';
60
+ }
61
+
62
  ?>
63
+ <a href="#" data-tab-id="<?php
64
+ echo $this->settings['id'] . $options_id ;
65
+ ?>" class="nav-tab"><?php
 
 
66
  echo $this->settings['name'] ;
67
  echo $tab_submenus ;
68
  ?></a>
75
  $output = '';
76
  $li_elements = '';
77
  $general_options_arr = array(
78
+ array(
79
+ 'name' => __( 'Getting started', 'mobile-menu' ),
80
+ 'url' => 'general-options',
81
+ ),
82
+ array(
83
+ 'name' => __( 'Visibility options', 'mobile-menu' ),
84
+ 'url' => 'general-visibility-options',
85
+ ),
86
  array(
87
  'name' => __( 'Hide Theme Menu', 'mobile-menu' ),
88
+ 'url' => 'general-hide-elements',
89
  ),
90
  array(
91
  'name' => __( 'Miscelaneous Options', 'mobile-menu' ),
92
+ 'url' => 'general-misc-options',
93
  ),
94
  array(
95
  'name' => __( 'Advanced Options', 'mobile-menu' ),
96
+ 'url' => 'general-advanced-options',
97
+ ),
98
+ array(
99
+ 'name' => __( 'Font Options', 'mobile-menu' ),
100
+ 'url' => 'font-options',
101
  ),
102
  array(
103
  'name' => __( 'Import and Export', 'mobile-menu' ),
104
+ 'url' => 'general-import-export',
105
+ ),
106
+ array(
107
+ 'name' => __( 'Alerts', 'mobile-menu' ),
108
+ 'url' => 'general-alerts',
109
  )
110
  );
111
  $header_arr = array( array(
117
  ) );
118
  $woocommerce_arr = [];
119
  $right_menu_arr = array( array(
120
+ 'name' => __( 'Main Options', 'mobile-menu' ),
121
+ 'url' => 'right-menu-options',
122
+ ), array(
123
  'name' => __( 'Menu Icon', 'mobile-menu' ),
124
+ 'url' => 'right-menu-icon',
125
  ), array(
126
  'name' => __( 'Right Panel', 'mobile-menu' ),
127
  'url' => 'right-panel-options',
128
  ) );
129
  $left_menu_arr = array( array(
130
+ 'name' => __( 'Main Options', 'mobile-menu' ),
131
+ 'url' => 'left-menu-options',
132
+ ), array(
133
  'name' => __( 'Menu Icon', 'mobile-menu' ),
134
+ 'url' => 'left-menu-icon',
135
  ), array(
136
  'name' => __( 'Left Panel', 'mobile-menu' ),
137
  'url' => 'left-panel-options',
139
  $colors_arr = array(
140
  array(
141
  'name' => __( 'General', 'mobile-menu' ),
142
+ 'url' => 'colors-options',
143
  ),
144
  array(
145
  'name' => __( 'Header', 'mobile-menu' ),
146
+ 'url' => 'header-colors',
147
  ),
148
  array(
149
  'name' => __( 'Left Menu', 'mobile-menu' ),
150
+ 'url' => 'left-menu-colors',
151
  ),
152
  array(
153
  'name' => __( 'Right Menu', 'mobile-menu' ),
154
+ 'url' => 'right-menu-colors',
155
  ),
156
  array(
157
  'name' => __( '3rd Level Menu', 'mobile-menu' ),
options-framework/{titan-framework/lib → lib}/class-meta-box.php RENAMED
File without changes
options-framework/{titan-framework/lib → lib}/class-option-ajax-button.php RENAMED
@@ -123,7 +123,6 @@ class TitanFrameworkOptionAjaxButton extends TitanFrameworkOption {
123
 
124
  }
125
 
126
-
127
  /**
128
  * Renders the option
129
  *
@@ -265,57 +264,4 @@ class TitanFrameworkOptionAjaxButton extends TitanFrameworkOption {
265
  <?php
266
  }
267
 
268
- /*
269
- * Display for theme customizer
270
- */
271
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
272
- $wp_customize->add_control( new TitanFrameworkOptionAjaxButtonControl( $wp_customize, '', array(
273
- 'label' => $this->settings['name'],
274
- 'section' => $section->getID(),
275
- 'settings' => $this->getID(),
276
- 'description' => $this->settings['desc'],
277
- 'priority' => $priority,
278
- 'options' => $this->settings,
279
- ) ) );
280
- }
281
- }
282
-
283
- /*
284
- * WP_Customize_Control with description
285
- */
286
- add_action( 'customize_register', 'registerTitanFrameworkOptionAjaxButtonControl', 1 );
287
- function registerTitanFrameworkOptionAjaxButtonControl() {
288
- class TitanFrameworkOptionAjaxButtonControl extends WP_Customize_Control {
289
- public $description;
290
- public $options;
291
-
292
- public function render_content() {
293
- TitanFrameworkOptionAjaxButton::createAjaxScript();
294
-
295
- ?>
296
- <label class='tf-ajax-button'>
297
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span><?php
298
-
299
- foreach ( $this->options['action'] as $i => $action ) {
300
- printf( '<button class="button %s" data-action="%s" data-label="%s" data-wait-label="%s" data-error-label="%s" data-success-label="%s" data-nonce="%s" data-success-callback="%s" data-error-callback="%s">%s</button>',
301
- $this->options['class'][ $i ],
302
- esc_attr( $action ),
303
- esc_attr( $this->options['label'][ $i ] ),
304
- esc_attr( $this->options['wait_label'][ $i ] ),
305
- esc_attr( $this->options['error_label'][ $i ] ),
306
- esc_attr( $this->options['success_label'][ $i ] ),
307
- esc_attr( wp_create_nonce( 'tf-ajax-button' ) ),
308
- esc_attr( $this->options['success_callback'][ $i ] ),
309
- esc_attr( $this->options['error_callback'][ $i ] ),
310
- esc_attr( $this->options['label'][ $i ] )
311
- );
312
- }
313
-
314
- if ( ! empty( $this->description ) ) {
315
- echo "<p class='description'>" . $this->description . '</p>';
316
- }
317
-
318
- ?></label><?php
319
- }
320
- }
321
  }
123
 
124
  }
125
 
 
126
  /**
127
  * Renders the option
128
  *
264
  <?php
265
  }
266
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
267
  }
options-framework/{titan-framework/lib → lib}/class-option-checkbox.php RENAMED
@@ -32,17 +32,4 @@ class TitanFrameworkOptionCheckbox extends TitanFrameworkOption {
32
  return $value == '1' ? true : false;
33
  }
34
 
35
- /*
36
- * Display for theme customizer
37
- */
38
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
39
- $wp_customize->add_control( new TitanFrameworkCustomizeControl( $wp_customize, $this->getID(), array(
40
- 'label' => $this->settings['name'],
41
- 'section' => $section->settings['id'],
42
- 'settings' => $this->getID(),
43
- 'type' => 'checkbox',
44
- 'description' => $this->settings['desc'],
45
- 'priority' => $priority,
46
- ) ) );
47
- }
48
  }
32
  return $value == '1' ? true : false;
33
  }
34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  }
options-framework/{titan-framework/lib → lib}/class-option-code.php RENAMED
File without changes
options-framework/lib/class-option-color.php ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
+ }
5
+ class TitanFrameworkOptionColor extends TitanFrameworkOption {
6
+
7
+ /**
8
+ * Default settings
9
+ * @var array
10
+ */
11
+ public $defaultSecondarySettings = array(
12
+
13
+ /**
14
+ * (Optional) If true, an additional control will become available in the color picker for adjusting the alpha/opacity value of the color. You can get rgba colors with the option.
15
+ *
16
+ * @since 1.9
17
+ * @var boolean
18
+ */
19
+ 'alpha' => false,
20
+ );
21
+
22
+ function __construct( $settings, $owner ) {
23
+ parent::__construct( $settings, $owner );
24
+ tf_add_action_once( 'admin_enqueue_scripts', array( $this, 'enqueueColorPickerScript' ) );
25
+ tf_add_action_once( 'admin_footer', array( $this, 'startColorPicker' ) );
26
+ }
27
+
28
+
29
+ /**
30
+ * Display for options and meta
31
+ *
32
+ * @since 1.0
33
+ *
34
+ * @return void
35
+ */
36
+ public function display() {
37
+
38
+ $this->echoOptionHeader();
39
+
40
+ printf( '<input class="tf-colorpicker" type="text" name="%s" id="%s" value="%s" data-default-color="%s" data-custom-width="0" %s/>',
41
+ esc_attr( $this->getID() ),
42
+ esc_attr( $this->getID() ),
43
+ esc_attr( $this->getValue() ),
44
+ esc_attr( $this->getValue() ),
45
+ ! empty( $this->settings['alpha'] ) ? "data-alpha='true'" : '' // Used by wp-color-picker-alpha
46
+ );
47
+
48
+ $this->echoOptionFooter();
49
+ }
50
+
51
+
52
+ /**
53
+ * Enqueue the colorpicker scripts
54
+ *
55
+ * @since 1.9
56
+ *
57
+ * @return void
58
+ */
59
+ public function enqueueColorPickerScript($hook) {
60
+
61
+ if ( $hook == 'toplevel_page_mobile-menu-options' ) {
62
+ wp_enqueue_script( 'wp-color-picker' );
63
+ wp_enqueue_style( 'wp-color-picker' );
64
+ wp_enqueue_script( 'wp-color-picker-alpha', TitanFramework::getURL( '../js/min/wp-color-picker-alpha-min.js', __FILE__ ), array( 'wp-color-picker' ), TF_VERSION );
65
+ }
66
+ }
67
+
68
+
69
+ /**
70
+ * Load the javascript to init the colorpicker
71
+ *
72
+ * @since 1.9
73
+ *
74
+ * @return void
75
+ */
76
+ public function startColorPicker($hook) {
77
+
78
+
79
+ ?>
80
+ <script>
81
+
82
+ wpColorPicker_i18n = {"clear":"Clear","defaultString":"Default","pick":"Select Color","current":"Current Color"};
83
+ wpColorPickerL10n = wpColorPicker_i18n;
84
+
85
+ jQuery(document).ready(function() {
86
+ 'use strict';
87
+ if ( typeof jQuery.fn.wpColorPicker !== 'undefined' ) {
88
+ jQuery('.tf-colorpicker').wpColorPicker();
89
+ }
90
+ });
91
+ </script>
92
+
93
+ <?php
94
+ }
95
+
96
+ }
options-framework/lib/class-option-custom.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Custom option
4
+ *
5
+ * @package Titan Framework
6
+ */
7
+
8
+ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly.
9
+ }
10
+
11
+ /**
12
+ * Custom option class
13
+ *
14
+ * @since 1.0
15
+ */
16
+ class TitanFrameworkOptionCustom extends TitanFrameworkOption {
17
+
18
+ /**
19
+ * Default settings specific to this option
20
+ * @var array
21
+ */
22
+ public $defaultSecondarySettings = array(
23
+ 'custom' => '', // Custom HTML
24
+ );
25
+
26
+ /**
27
+ * Display for options and meta
28
+ */
29
+ public function display() {
30
+ if ( ! empty( $this->settings['name'] ) ) {
31
+
32
+ $this->echoOptionHeader();
33
+ echo $this->settings['custom'];
34
+ $this->echoOptionFooter( false );
35
+
36
+ } else {
37
+
38
+ $this->echoOptionHeaderBare();
39
+ echo $this->settings['custom'];
40
+ $this->echoOptionFooterBare( false );
41
+
42
+ }
43
+ }
44
+
45
+ }
options-framework/{titan-framework/lib → lib}/class-option-date.php RENAMED
@@ -41,7 +41,6 @@ class TitanFrameworkOptionDate extends TitanFrameworkOption {
41
  }
42
  }
43
 
44
-
45
  /**
46
  * Cleans up the serialized value before saving
47
  *
@@ -59,7 +58,6 @@ class TitanFrameworkOptionDate extends TitanFrameworkOption {
59
  return strtotime( $value );
60
  }
61
 
62
-
63
  /**
64
  * Cleans the value for getOption
65
  *
@@ -74,7 +72,6 @@ class TitanFrameworkOptionDate extends TitanFrameworkOption {
74
  return $value;
75
  }
76
 
77
-
78
  /**
79
  * Enqueues the jQuery UI scripts
80
  *
@@ -139,7 +136,6 @@ class TitanFrameworkOptionDate extends TitanFrameworkOption {
139
  <?php
140
  }
141
 
142
-
143
  /**
144
  * Displays the option for admin pages and meta boxes
145
  *
@@ -169,77 +165,4 @@ class TitanFrameworkOptionDate extends TitanFrameworkOption {
169
  );
170
  $this->echoOptionFooter( false );
171
  }
172
-
173
-
174
- /**
175
- * Registers the theme customizer control, for displaying the option
176
- *
177
- * @param WP_Customize $wp_enqueue_script The customize object
178
- * @param TitanFrameworkCustomizerSection $section The section where this option will be placed
179
- * @param int $priority The order of this control in the section
180
- * @return void
181
- * @since 1.7
182
- */
183
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
184
- $wp_customize->add_control( new TitanFrameworkOptionDateControl( $wp_customize, $this->getID(), array(
185
- 'label' => $this->settings['name'],
186
- 'section' => $section->settings['id'],
187
- 'settings' => $this->getID(),
188
- 'description' => $this->settings['desc'],
189
- 'priority' => $priority,
190
- 'date' => $this->settings['date'],
191
- 'time' => $this->settings['time'],
192
- ) ) );
193
- }
194
- }
195
-
196
-
197
- /*
198
- * We create a new control for the theme customizer
199
- */
200
- add_action( 'customize_register', 'registerTitanFrameworkOptionDateControl', 1 );
201
-
202
-
203
- /**
204
- * Creates the option for the theme customizer
205
- *
206
- * @return void
207
- * @since 1.3
208
- */
209
- function registerTitanFrameworkOptionDateControl() {
210
- class TitanFrameworkOptionDateControl extends WP_Customize_Control {
211
- public $description;
212
- public $date;
213
- public $time;
214
-
215
- public function render_content() {
216
-
217
- TitanFrameworkOptionDate::createCalendarScript();
218
-
219
- $dateFormat = 'Y-m-d H:i';
220
- $placeholder = 'YYYY-MM-DD HH:MM';
221
- if ( $this->date && ! $this->time ) {
222
- $dateFormat = 'Y-m-d';
223
- $placeholder = 'YYYY-MM-DD';
224
- } else if ( ! $this->date && $this->time ) {
225
- $dateFormat = 'H:i';
226
- $placeholder = 'HH:MM';
227
- }
228
-
229
- $class = $this->date ? ' date' : '';
230
- $class .= $this->time ? ' time' : ''
231
- ?>
232
- <label class='tf-date'>
233
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
234
- <input class="input-date<?php echo $class ?>" <?php $this->link(); ?> placeholder="<?php echo $placeholder ?>" type="text" value="<?php echo $this->value() ?>" />
235
-
236
- <?php
237
- if ( ! empty( $this->description ) ) {
238
- echo "<p class='description'>{$this->description}</p>";
239
- }
240
- ?>
241
- </label>
242
- <?php
243
- }
244
- }
245
  }
41
  }
42
  }
43
 
 
44
  /**
45
  * Cleans up the serialized value before saving
46
  *
58
  return strtotime( $value );
59
  }
60
 
 
61
  /**
62
  * Cleans the value for getOption
63
  *
72
  return $value;
73
  }
74
 
 
75
  /**
76
  * Enqueues the jQuery UI scripts
77
  *
136
  <?php
137
  }
138
 
 
139
  /**
140
  * Displays the option for admin pages and meta boxes
141
  *
165
  );
166
  $this->echoOptionFooter( false );
167
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  }
options-framework/{titan-framework/lib → lib}/class-option-editor.php RENAMED
@@ -39,18 +39,4 @@ class TitanFrameworkOptionEditor extends TitanFrameworkOption {
39
  }
40
  return stripslashes( $value );
41
  }
42
-
43
-
44
- /*
45
- * Display for theme customizer
46
- */
47
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
48
- $wp_customize->add_control( new TitanFrameworkCustomizeControl( $wp_customize, $this->getID(), array(
49
- 'label' => $this->settings['name'],
50
- 'section' => $section->settings['id'],
51
- 'settings' => $this->getID(),
52
- 'description' => $this->settings['desc'],
53
- 'priority' => $priority,
54
- ) ) );
55
- }
56
  }
39
  }
40
  return stripslashes( $value );
41
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  }
options-framework/{titan-framework/lib → lib}/class-option-enable.php RENAMED
@@ -107,74 +107,4 @@ class TitanFrameworkOptionEnable extends TitanFrameworkOption {
107
 
108
  return $value == '1' ? true : false;
109
  }
110
-
111
- /*
112
- * Display for theme customizer
113
- */
114
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
115
- $wp_customize->add_control( new TitanFrameworkOptionEnableControl( $wp_customize, $this->getID(), array(
116
- 'label' => $this->settings['name'],
117
- 'section' => $section->settings['id'],
118
- 'settings' => $this->getID(),
119
- 'description' => $this->settings['desc'],
120
- 'priority' => $priority,
121
- 'options' => $this->settings,
122
- ) ) );
123
- }
124
- }
125
-
126
-
127
- /*
128
- * We create a new control for the theme customizer
129
- */
130
- add_action( 'customize_register', 'registerTitanFrameworkOptionEnableControl', 1 );
131
- function registerTitanFrameworkOptionEnableControl() {
132
- class TitanFrameworkOptionEnableControl extends WP_Customize_Control {
133
- public $description;
134
- public $options;
135
-
136
- private static $firstLoad = true;
137
-
138
- public function render_content() {
139
-
140
- if ( empty( $this->options['enabled'] ) ) {
141
- $this->options['enabled'] = __( 'Enabled', TF_I18NDOMAIN );
142
- }
143
- if ( empty( $this->options['disabled'] ) ) {
144
- $this->options['disabled'] = __( 'Disabled', TF_I18NDOMAIN );
145
- }
146
- ?>
147
- <div class='tf-enable'>
148
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
149
- <input type="checkbox" value="1" <?php $this->link(); ?>>
150
- <span class="button button-<?php echo checked( $this->value(), 1, false ) ? 'primary' : 'secondary' ?>"><?php echo $this->options['enabled'] ?></span><span class="button button-<?php echo checked( $this->value(), 1, false ) ? 'secondary' : 'primary' ?>"><?php echo $this->options['disabled'] ?></span>
151
- </div>
152
- <?php
153
-
154
- echo "<p class='description'>{$this->description}</p>";
155
-
156
- // load the javascript to init the colorpicker
157
- if ( self::$firstLoad ) :
158
- ?>
159
- <script>
160
- jQuery(document).ready(function($) {
161
- "use strict";
162
- $('body').on('click', '.tf-enable .button-secondary', function() {
163
- $(this).parent().find('.button').toggleClass('button-primary button-secondary');
164
- var checkBox = $(this).parents('.tf-enable').find('input');
165
- if ( checkBox.is(':checked') ) {
166
- checkBox.removeAttr('checked');
167
- } else {
168
- checkBox.attr('checked', 'checked');
169
- }
170
- checkBox.trigger('change');
171
- });
172
- });
173
- </script>
174
- <?php
175
- endif;
176
-
177
- self::$firstLoad = false;
178
- }
179
- }
180
  }
107
 
108
  return $value == '1' ? true : false;
109
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  }
options-framework/{titan-framework/lib → lib}/class-option-file.php RENAMED
@@ -137,20 +137,6 @@ class TitanFrameworkOptionFile extends TitanFrameworkOption {
137
  $this->echoOptionFooter();
138
  }
139
 
140
- /*
141
- * Display for theme customizer.
142
- */
143
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
144
- $wp_customize->add_control( new TitanFrameworkOptionFileUploadControl( $wp_customize, $this->getID(), array(
145
- 'label' => $this->settings['name'],
146
- 'section' => $section->getID(),
147
- 'settings' => $this->getID(),
148
- 'description' => $this->settings['desc'],
149
- 'priority' => $priority,
150
- 'caption' => $this->settings['label'],
151
- ) ) );
152
- }
153
-
154
  public static function createUploaderScript() {
155
  if ( ! self::$firstLoad ) {
156
  return;
@@ -238,75 +224,3 @@ class TitanFrameworkOptionFile extends TitanFrameworkOption {
238
  <?php
239
  }
240
  }
241
-
242
- /*
243
- * We create a new control for the theme customizer.
244
- */
245
- add_action( 'customize_register', 'registerTitanFrameworkOptionFileUploadControl', 1 );
246
- function registerTitanFrameworkOptionFileUploadControl() {
247
- class TitanFrameworkOptionFileUploadControl extends WP_Customize_Control {
248
- public $description;
249
- public $caption;
250
-
251
- public function render_content() {
252
- TitanFrameworkOptionFile::createUploaderScript();
253
-
254
- $previewFile = '';
255
- $value = $this->value();
256
- if ( ! is_array( $value ) ) {
257
- $value = $this->value();
258
- }
259
-
260
- if ( ! empty( $value ) ) {
261
- $previewFile = "<i class='dashicons dashicons-no-alt remove'></i><p>" . basename( get_attached_file( $value ) ) . "</p>";
262
- } else {
263
- $previewFile = $this->caption;
264
- }
265
-
266
- ?>
267
- <div class='tf-file'>
268
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
269
- <div class='tf-file-upload'><?php echo $previewFile ?></div>
270
- <input type='hidden' value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->link(); ?>/>
271
- </div>
272
- <?php
273
-
274
- if ( ! empty( $this->description ) ) {
275
- echo "<p class='description'>{$this->description}</p>";
276
- }
277
- }
278
- }
279
- }
280
-
281
-
282
-
283
- if ( ! function_exists( 'tf_file_upload_option_customizer_get_value' ) ) {
284
-
285
- add_action( 'wp_ajax_tf_file_upload_option_customizer_get_value', 'tf_file_upload_option_customizer_get_value' );
286
-
287
- /**
288
- * Returns the image URL from an attachment ID & size.
289
- *
290
- * @see TitanFrameworkOptionUpload->preLivePreview().
291
- */
292
- function tf_file_upload_option_customizer_get_value() {
293
-
294
- if ( ! empty( $_POST['nonce'] ) && ! empty( $_POST['id'] ) ) {
295
-
296
- $nonce = sanitize_text_field( $_POST['nonce'] );
297
- $attachmentID = sanitize_text_field( $_POST['id'] );
298
- // $size = sanitize_text_field( $_POST['size'] );
299
-
300
- if ( wp_verify_nonce( $nonce, 'tf_file_upload_option_nonce' ) ) {
301
- $attachment = $attachmentID;
302
- if ( ! empty( $attachment ) ) {
303
- wp_send_json_success( $attachment );
304
- }
305
- }
306
- }
307
-
308
- // Instead of doing a wp_send_json_error, send a blank value instead so.
309
- // Javascript adjustments still get executed.
310
- wp_send_json_success( '' );
311
- }
312
- }
137
  $this->echoOptionFooter();
138
  }
139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  public static function createUploaderScript() {
141
  if ( ! self::$firstLoad ) {
142
  return;
224
  <?php
225
  }
226
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/{titan-framework/lib → lib}/class-option-font.php RENAMED
@@ -109,7 +109,6 @@ class TitanFrameworkOptionFont extends TitanFrameworkOption {
109
  *
110
  * @return void
111
  *
112
- * @see TitanFrameworkCustomizer->livePreviewMainScript()
113
  */
114
  public function generateCustomizerPreviewJS() {
115
  ?>
@@ -951,422 +950,4 @@ class TitanFrameworkOptionFont extends TitanFrameworkOption {
951
  return $value;
952
  }
953
 
954
-
955
- /**
956
- * Registers the theme customizer control, for displaying the option
957
- *
958
- * @param WP_Customize $wp_enqueue_script The customize object
959
- * @param TitanFrameworkCustomizerSection $section The section where this option will be placed
960
- * @param int $priority The order of this control in the section
961
- * @return void
962
- * @since 1.4
963
- */
964
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
965
- $wp_customize->add_control( new TitanFrameworkOptionFontControl( $wp_customize, $this->getID(), array(
966
- 'label' => $this->settings['name'],
967
- 'section' => $section->settings['id'],
968
- 'settings' => $this->getID(),
969
- 'description' => $this->settings['desc'],
970
- 'priority' => $priority,
971
- 'params' => $this->settings,
972
- ) ) );
973
- }
974
- }
975
-
976
-
977
-
978
- /*
979
- * We create a new control for the theme customizer
980
- */
981
- add_action( 'customize_register', 'registerTitanFrameworkOptionFontControl', 1 );
982
-
983
-
984
- /**
985
- * Creates the option for the theme customizer
986
- *
987
- * @return void
988
- * @since 1.4
989
- */
990
- function registerTitanFrameworkOptionFontControl() {
991
- class TitanFrameworkOptionFontControl extends WP_Customize_Control {
992
- public $description;
993
- public $params;
994
-
995
- public function render_content() {
996
- $this->params['show_preview'] = false;
997
- TitanFrameworkOptionFont::createFontScript();
998
-
999
- ?>
1000
- <div class='tf-font'>
1001
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
1002
- <?php
1003
-
1004
- // Get the current value and merge with defaults
1005
- $value = $this->value();
1006
- if ( is_serialized( $value ) ) {
1007
- $value = unserialize( $value );
1008
- }
1009
- if ( ! is_array( $value ) ) {
1010
- $value = array();
1011
- }
1012
- $value = array_merge( TitanFrameworkOptionFont::$defaultStyling, $value );
1013
-
1014
- /*
1015
- * Create all the fields
1016
- */
1017
- $visibilityAttrs = '';
1018
- if ( ! $this->params['show_font_family'] ) {
1019
- $visibilityAttrs = "data-visible='false' style='display: none'";
1020
- }
1021
- ?>
1022
- <div>
1023
- <label <?php echo $visibilityAttrs ?>>
1024
- Font Family
1025
- <select class='tf-font-sel-family'>
1026
- <option value='inherit'>inherit</option>
1027
- <?php
1028
-
1029
- if( $this->params['fonts'] ) {
1030
- ?>
1031
- <optgroup label="Custom Fonts" class='customf-fonts'>
1032
- <?php
1033
-
1034
- foreach ( $this->params['fonts'] as $family => $label ) {
1035
- printf( "<option value='%s'%s>%s</option>",
1036
- $family,
1037
- selected( $value['font-family'], $family, false ),
1038
- $label
1039
- );
1040
- }
1041
-
1042
- ?>
1043
- </optgroup>
1044
- <?php
1045
- }
1046
-
1047
- if ( $this->params['show_websafe_fonts'] ) {
1048
- ?>
1049
- <optgroup label="Web Safe Fonts" class='safe'>
1050
- <?php
1051
- foreach ( TitanFrameworkOptionFont::$webSafeFonts as $family => $label ) {
1052
- printf( "<option value='%s'%s>%s</option>",
1053
- $family,
1054
- selected( $value['font-family'], $family, false ),
1055
- $label
1056
- );
1057
- }
1058
- ?>
1059
- </optgroup>
1060
- <?php
1061
- }
1062
- ?>
1063
-
1064
- <?php
1065
- if ( $this->params['show_google_fonts'] ) {
1066
- ?>
1067
- <optgroup label="Google WebFonts" class='google'>
1068
- <?php
1069
- $allFonts = titan_get_googlefonts();
1070
- foreach ( $allFonts as $key => $fontStuff ) {
1071
-
1072
- // Show only the include_fonts (font names) if provided, uses regex.
1073
- if ( ! empty( $this->params['include_fonts'] ) ) {
1074
- if ( is_array( $this->params['include_fonts'] ) ) {
1075
- $fontNameMatch = false;
1076
- foreach ( $this->params['include_fonts'] as $fontNamePattern ) {
1077
- if ( ! is_string( $fontNamePattern ) ) {
1078
- continue;
1079
- }
1080
- $fontNamePattern = '/' . trim( $fontNamePattern, '/' ) . '/';
1081
- if ( preg_match( $fontNamePattern . 'i', $fontStuff['name'] ) ) {
1082
- $fontNameMatch = true;
1083
- break;
1084
- }
1085
- }
1086
- if ( ! $fontNameMatch ) {
1087
- continue;
1088
- }
1089
- } else if ( is_string( $this->params['include_fonts'] ) ) {
1090
- $fontNamePattern = '/' . trim( $this->params['include_fonts'], '/' ) . '/';
1091
- if ( ! preg_match( $fontNamePattern . 'i', $fontStuff['name'] ) ) {
1092
- continue;
1093
- }
1094
- }
1095
- }
1096
-
1097
- printf( "<option value='%s'%s>%s</option>",
1098
- esc_attr( $fontStuff['name'] ),
1099
- selected( $value['font-family'], $fontStuff['name'], false ),
1100
- $fontStuff['name']
1101
- );
1102
- }
1103
- ?>
1104
- </optgroup>
1105
- <?php
1106
- // End the show_google_fonts conditional
1107
- }
1108
- ?>
1109
- </select>
1110
- </label>
1111
- <?php
1112
-
1113
- $visibilityAttrs = '';
1114
- if ( ! $this->params['show_color'] ) {
1115
- $visibilityAttrs = "data-visible='false' style='display: none'";
1116
- }
1117
- ?>
1118
- <label <?php echo $visibilityAttrs ?>>
1119
- Color
1120
- <input class='tf-font-sel-color' type="text" value="<?php echo esc_attr( $value['color'] ) ?>" data-default-color="<?php echo esc_attr( $value['color'] ) ?>"/>
1121
- </label>
1122
- <?php
1123
-
1124
- $visibilityAttrs = '';
1125
- if ( ! $this->params['show_font_size'] ) {
1126
- $visibilityAttrs = "data-visible='false' style='display: none'";
1127
- }
1128
- ?>
1129
- <label <?php echo $visibilityAttrs ?>>
1130
- Font Size
1131
- <select class='tf-font-sel-size'>
1132
- <option value='inherit'>inherit</option>
1133
- <?php
1134
- for ( $i = 1; $i <= 150; $i++ ) {
1135
- printf( "<option value='%s'%s>%s</option>",
1136
- esc_attr( $i . 'px' ),
1137
- selected( $value['font-size'], $i . 'px', false ),
1138
- $i . 'px'
1139
- );
1140
- }
1141
- ?>
1142
- </select>
1143
- </label>
1144
- <?php
1145
-
1146
- $visibilityAttrs = '';
1147
- if ( ! $this->params['show_font_weight'] ) {
1148
- $visibilityAttrs = "data-visible='false' style='display: none'";
1149
- }
1150
- ?>
1151
- <label <?php echo $visibilityAttrs ?>>
1152
- Font Weight
1153
- <select class='tf-font-sel-weight'>
1154
- <option value='inherit'>inherit</option>
1155
- <?php
1156
- $options = array( 'normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '700', '800', '900' );
1157
- foreach ( $options as $option ) {
1158
- printf( "<option value='%s'%s>%s</option>",
1159
- esc_attr( $option ),
1160
- selected( $value['font-weight'], $option, false ),
1161
- $option
1162
- );
1163
- }
1164
- ?>
1165
- </select>
1166
- </label>
1167
- <?php
1168
-
1169
- $visibilityAttrs = '';
1170
- if ( ! $this->params['show_font_style'] ) {
1171
- $visibilityAttrs = "data-visible='false' style='display: none'";
1172
- }
1173
- ?>
1174
- <label <?php echo $visibilityAttrs ?>>
1175
- Font Style
1176
- <select class='tf-font-sel-style'>
1177
- <?php
1178
- $options = array( 'normal', 'italic' );
1179
- foreach ( $options as $option ) {
1180
- printf( "<option value='%s'%s>%s</option>",
1181
- esc_attr( $option ),
1182
- selected( $value['font-style'], $option, false ),
1183
- $option
1184
- );
1185
- }
1186
- ?>
1187
- </select>
1188
- </label>
1189
- <?php
1190
-
1191
- $visibilityAttrs = '';
1192
- if ( ! $this->params['show_line_height'] ) {
1193
- $visibilityAttrs = "data-visible='false' style='display: none'";
1194
- }
1195
- ?>
1196
- <label <?php echo $visibilityAttrs ?>>
1197
- Line Height
1198
- <select class='tf-font-sel-height'>
1199
- <?php
1200
- for ( $i = .5; $i <= 3; $i += 0.1 ) {
1201
- printf( "<option value='%s'%s>%s</option>",
1202
- esc_attr( $i . 'em' ),
1203
- selected( $value['line-height'], $i . 'em', false ),
1204
- $i . 'em'
1205
- );
1206
- }
1207
- ?>
1208
- </select>
1209
- </label>
1210
- <?php
1211
-
1212
- $visibilityAttrs = '';
1213
- if ( ! $this->params['show_letter_spacing'] ) {
1214
- $visibilityAttrs = "data-visible='false' style='display: none'";
1215
- }
1216
- ?>
1217
- <label <?php echo $visibilityAttrs ?>>
1218
- Letter Spacing
1219
- <select class='tf-font-sel-spacing'>
1220
- <option value='normal'>normal</option>
1221
- <?php
1222
- for ( $i = -20; $i <= 20; $i++ ) {
1223
- printf( "<option value='%s'%s>%s</option>",
1224
- esc_attr( $i . 'px' ),
1225
- selected( $value['letter-spacing'], $i . 'px', false ),
1226
- $i . 'px'
1227
- );
1228
- }
1229
- ?>
1230
- </select>
1231
- </label>
1232
- <?php
1233
-
1234
- $visibilityAttrs = '';
1235
- if ( ! $this->params['show_text_transform'] ) {
1236
- $visibilityAttrs = "data-visible='false' style='display: none'";
1237
- }
1238
- ?>
1239
- <label <?php echo $visibilityAttrs ?>>
1240
- Text Transform
1241
- <select class='tf-font-sel-transform'>
1242
- <?php
1243
- $options = array( 'none', 'capitalize', 'uppercase', 'lowercase' );
1244
- foreach ( $options as $option ) {
1245
- printf( "<option value='%s'%s>%s</option>",
1246
- esc_attr( $option ),
1247
- selected( $value['text-transform'], $option, false ),
1248
- $option
1249
- );
1250
- }
1251
- ?>
1252
- </select>
1253
- </label>
1254
- <?php
1255
-
1256
- $visibilityAttrs = '';
1257
- if ( ! $this->params['show_font_variant'] ) {
1258
- $visibilityAttrs = "data-visible='false' style='display: none'";
1259
- }
1260
- ?>
1261
- <label <?php echo $visibilityAttrs ?>>
1262
- Font Variant
1263
- <select class='tf-font-sel-variant'>
1264
- <?php
1265
- $options = array( 'normal', 'small-caps' );
1266
- foreach ( $options as $option ) {
1267
- printf( "<option value='%s'%s>%s</option>",
1268
- esc_attr( $option ),
1269
- selected( $value['font-variant'], $option, false ),
1270
- $option
1271
- );
1272
- }
1273
- ?>
1274
- </select>
1275
- </label>
1276
- <?php
1277
-
1278
- $visibilityAttrs = '';
1279
- if ( ! $this->params['show_text_shadow'] ) {
1280
- $visibilityAttrs = "data-visible='false' style='display: none'";
1281
- }
1282
- ?>
1283
- <label <?php echo $visibilityAttrs ?>>
1284
- Shadow Location
1285
- <select class='tf-font-sel-location'>
1286
- <?php
1287
- $options = array( 'none', 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right' );
1288
- foreach ( $options as $option ) {
1289
- printf( "<option value='%s'%s>%s</option>",
1290
- esc_attr( $option ),
1291
- selected( $value['text-shadow-location'], $option, false ),
1292
- $option
1293
- );
1294
- }
1295
- ?>
1296
- </select>
1297
- </label>
1298
- <label style='display: none'>
1299
- Shadow Distance
1300
- <select class='tf-font-sel-distance'>
1301
- <?php
1302
- for ( $i = 0; $i <= 10; $i++ ) {
1303
- printf( "<option value='%s'%s>%s</option>",
1304
- esc_attr( $i . 'px' ),
1305
- selected( $value['text-shadow-distance'], $i . 'px', false ),
1306
- $i . 'px'
1307
- );
1308
- }
1309
- ?>
1310
- </select>
1311
- </label>
1312
- <label style='display: none'>
1313
- Shadow Blur
1314
- <select class='tf-font-sel-blur'>
1315
- <?php
1316
- $options = array( '0px', '1px', '2px', '3px', '4px', '5px', '10px', '20px' );
1317
- foreach ( $options as $option ) {
1318
- printf( "<option value='%s'%s>%s</option>",
1319
- esc_attr( $option ),
1320
- selected( $value['text-shadow-blur'], $option, false ),
1321
- $option
1322
- );
1323
- }
1324
- ?>
1325
- </select>
1326
- </label>
1327
- <label style='display: none'>
1328
- Shadow Color
1329
- <input class="tf-font-sel-shadow-color" type="text" value="<?php echo esc_attr( $value['text-shadow-color'] ) ?>" data-default-color="<?php echo esc_attr( $value['text-shadow-color'] ) ?>"/>
1330
- </label>
1331
- <label style='display: none'>
1332
- Shadow Opacity
1333
- <select class='tf-font-sel-opacity'>
1334
- <?php
1335
- $options = array( '1', '0.9', '0.8', '0.7', '0.6', '0.5', '0.4', '0.3', '0.2', '0.1', '0' );
1336
- foreach ( $options as $option ) {
1337
- printf( "<option value='%s'%s>%s</option>",
1338
- esc_attr( $option ),
1339
- selected( $value['text-shadow-opacity'], $option, false ),
1340
- $option
1341
- );
1342
- }
1343
- ?>
1344
- </select>
1345
- </label>
1346
- </div>
1347
- <?php
1348
-
1349
- $visibilityAttrs = '';
1350
- if ( ! $this->params['show_preview'] ) {
1351
- $visibilityAttrs = "data-visible='false' style='display: none'";
1352
- }
1353
- ?>
1354
- <div <?php echo $visibilityAttrs ?>>
1355
- <iframe></iframe>
1356
- <i class='dashicons dashicons-admin-appearance btn-dark'></i>
1357
- <input type='hidden' class='tf-font-sel-dark' value='<?php echo esc_attr( $value['dark'] ? 'dark' : '' ) ?>'/>
1358
- </div>
1359
- <?php
1360
-
1361
- if ( ! is_serialized( $value ) ) {
1362
- $value = serialize( $value );
1363
- }
1364
-
1365
- ?>
1366
- <input type='hidden' class='tf-for-saving' <?php $this->link() ?> value='<?php echo esc_attr( $value ) ?>'/>
1367
- </div>
1368
- <?php
1369
- echo "<p class='description'>{$this->description}</p>";
1370
- }
1371
- }
1372
  }
109
  *
110
  * @return void
111
  *
 
112
  */
113
  public function generateCustomizerPreviewJS() {
114
  ?>
950
  return $value;
951
  }
952
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
953
  }
options-framework/{titan-framework/lib → lib}/class-option-gallery.php RENAMED
File without changes
options-framework/{titan-framework/lib → lib}/class-option-group.php RENAMED
File without changes
options-framework/lib/class-option-heading.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Heading option
4
+ *
5
+ * @package Titan Framework
6
+ */
7
+
8
+ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly.
9
+ }
10
+
11
+ /**
12
+ * Heading Option
13
+ *
14
+ * A heading for separating your options in an admin page or meta box
15
+ *
16
+ * <strong>Creating a heading option with a description:</strong>
17
+ * <pre>$adminPage->createOption( array(
18
+ * 'name' => __( 'General Settings', 'default' ),
19
+ * 'type' => 'heading',
20
+ * 'desc' => __( 'Settings for the general usage of the plugin', 'default' ),
21
+ * ) );</pre>
22
+ *
23
+ * @since 1.0
24
+ * @type heading
25
+ * @availability Admin Pages|Meta Boxes|Customizer
26
+ * @no id,default,livepreview,css,hidden
27
+ */
28
+ class TitanFrameworkOptionHeading extends TitanFrameworkOption {
29
+
30
+ /**
31
+ * Display for options and meta
32
+ */
33
+ public function display() {
34
+ $headingID = str_replace( ' ', '-', strtolower( $this->settings['name'] ) );
35
+ ?>
36
+ <tr valign="top" class="even first tf-heading">
37
+ <th scope="row" class="first last" colspan="2">
38
+ <h3 id="<?php echo esc_attr( $headingID ) ?>"><?php echo $this->settings['name'] ?></h3>
39
+ <?php
40
+ if ( ! empty( $this->settings['desc'] ) ) {
41
+ ?><p class='description'><?php echo $this->settings['desc'] ?></p><?php
42
+ }
43
+ ?>
44
+ </th>
45
+ </tr>
46
+ <?php
47
+ }
48
+
49
+ }
options-framework/lib/class-option-iframe.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Iframe option
4
+ *
5
+ * @package Titan Framework
6
+ */
7
+
8
+ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly.
9
+ }
10
+
11
+ /**
12
+ * Iframe option class
13
+ *
14
+ * @since 1.0
15
+ */
16
+ class TitanFrameworkOptionIframe extends TitanFrameworkOption {
17
+
18
+ /**
19
+ * Default settings specific to this option
20
+ * @var array
21
+ */
22
+ public $defaultSecondarySettings = array(
23
+ 'url' => '',
24
+ 'height' => '400', // In pixels.
25
+ );
26
+
27
+ /**
28
+ * Display for options and meta
29
+ */
30
+ public function display() {
31
+
32
+ $this->echoOptionHeader();
33
+
34
+ printf( '<iframe frameborder="0" src="%s" style="height: %spx; width:100%%;"></iframe>',
35
+ $this->settings['url'],
36
+ $this->settings['height']
37
+ );
38
+ $this->echoOptionFooter();
39
+
40
+ }
41
+
42
+ }
options-framework/lib/class-option-multicheck-categories.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
+ }
5
+ class TitanFrameworkOptionMulticheckCategories extends TitanFrameworkOptionMulticheck {
6
+
7
+ public $defaultSecondarySettings = array(
8
+ 'options' => array(),
9
+ 'orderby' => 'name',
10
+ 'order' => 'ASC',
11
+ 'taxonomy' => 'category',
12
+ 'hide_empty' => false,
13
+ 'show_count' => false,
14
+ 'select_all' => false
15
+ );
16
+
17
+ /*
18
+ * Display for options and meta
19
+ */
20
+ public function display() {
21
+ $args = array(
22
+ 'orderby' => $this->settings['orderby'],
23
+ 'order' => $this->settings['order'],
24
+ 'taxonomy' => $this->settings['taxonomy'],
25
+ 'hide_empty' => $this->settings['hide_empty'] ? '1' : '0',
26
+ );
27
+
28
+ $categories = get_categories( $args );
29
+
30
+ $this->settings['options'] = array();
31
+ foreach ( $categories as $category ) {
32
+ $this->settings['options'][ $category->term_id ] = $category->name . ( $this->settings['show_count'] ? ' (' . $category->count . ')' : '' );
33
+ }
34
+
35
+ parent::display();
36
+ }
37
+
38
+ }
options-framework/lib/class-option-multicheck-pages.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
+ }
5
+ class TitanFrameworkOptionMulticheckPages extends TitanFrameworkOptionMulticheck {
6
+
7
+ public $defaultSecondarySettings = array(
8
+ 'options' => array(),
9
+ 'select_all' => false
10
+ );
11
+
12
+ private static $allPages;
13
+
14
+ /*
15
+ * Display for options and meta
16
+ */
17
+ public function display() {
18
+
19
+ // Remember the pages so as not to perform any more lookups
20
+ if ( ! isset( self::$allPages ) ) {
21
+ self::$allPages = get_pages();
22
+ }
23
+
24
+ $this->settings['options'] = array();
25
+ foreach ( self::$allPages as $page ) {
26
+ $title = $page->post_title;
27
+ if ( empty( $title ) ) {
28
+ $title = sprintf( __( 'Untitled %s', TF_I18NDOMAIN ), '(ID #' . $page->ID . ')' );
29
+ }
30
+ $this->settings['options'][ $page->ID ] = $title;
31
+ }
32
+
33
+ parent::display();
34
+ }
35
+
36
+ }
options-framework/lib/class-option-multicheck-post-types.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
+ }
5
+ class TitanFrameworkOptionMulticheckPostTypes extends TitanFrameworkOptionMulticheck {
6
+
7
+ public $defaultSecondarySettings = array(
8
+ 'options' => array(),
9
+ 'public' => true,
10
+ 'value' => 'all',
11
+ 'slug' => true,
12
+ 'select_all' => false
13
+ );
14
+
15
+ /*
16
+ * Display for options and meta
17
+ */
18
+ public function display() {
19
+
20
+ // Fetch post types.
21
+ $post_types = tf_get_post_types( $this->settings['public'], $this->settings['value'] );
22
+
23
+ $this->settings['options'] = array();
24
+ foreach ( $post_types as $post_type ) {
25
+
26
+ $slug = $post_type->name;
27
+
28
+ $slugname = true == $this->settings['slug'] ? ' (' . $slug . ')' : '';
29
+
30
+ $name = $post_type->name;
31
+ if ( ! empty( $post_type->labels->singular_name ) ) {
32
+ $name = $post_type->labels->singular_name . $slugname;
33
+ }
34
+
35
+ $this->settings['options'][ $slug ] = $name;
36
+ }
37
+
38
+ parent::display();
39
+ }
40
+
41
+ }
options-framework/lib/class-option-multicheck-posts.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
+ }
5
+ class TitanFrameworkOptionMulticheckPosts extends TitanFrameworkOptionMulticheck {
6
+
7
+ public $defaultSecondarySettings = array(
8
+ 'options' => array(),
9
+ 'post_type' => 'post',
10
+ 'num' => -1,
11
+ 'post_status' => 'any',
12
+ 'orderby' => 'post_date',
13
+ 'order' => 'DESC',
14
+ 'select_all' => false
15
+ );
16
+
17
+ /*
18
+ * Display for options and meta
19
+ */
20
+ public function display() {
21
+ $args = array(
22
+ 'post_type' => $this->settings['post_type'],
23
+ 'posts_per_page' => $this->settings['num'],
24
+ 'post_status' => $this->settings['post_status'],
25
+ 'orderby' => $this->settings['orderby'],
26
+ 'order' => $this->settings['order'],
27
+ );
28
+
29
+ $posts = get_posts( $args );
30
+
31
+ $this->settings['options'] = array();
32
+ foreach ( $posts as $post ) {
33
+ $title = $post->post_title;
34
+ if ( empty( $title ) ) {
35
+ $title = sprintf( __( 'Untitled %s', TF_I18NDOMAIN ), '(ID #' . $post->ID . ')' );
36
+ }
37
+ $this->settings['options'][ $post->ID ] = $title;
38
+ }
39
+
40
+ parent::display();
41
+ }
42
+
43
+ }
options-framework/lib/class-option-multicheck.php ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
+ }
5
+ class TitanFrameworkOptionMulticheck extends TitanFrameworkOption {
6
+
7
+ public $defaultSecondarySettings = array(
8
+ 'options' => array(),
9
+ 'select_all' => false,
10
+ );
11
+
12
+ /**
13
+ * Constructor
14
+ *
15
+ * @param array $settings Option settings
16
+ * @param string $owner Namespace
17
+ *
18
+ * @since 1.11
19
+ */
20
+ function __construct( $settings, $owner ) {
21
+ parent::__construct( $settings, $owner );
22
+
23
+ tf_add_action_once( 'admin_enqueue_scripts', array( $this, 'load_select_scripts' ) );
24
+ tf_add_action_once( 'customize_controls_enqueue_scripts', array( $this, 'load_select_scripts' ) );
25
+
26
+ }
27
+
28
+
29
+ /*
30
+ * Display for options and meta
31
+ */
32
+ public function display() {
33
+ $this->echoOptionHeader( true );
34
+
35
+ echo '<fieldset>';
36
+
37
+ $savedValue = $this->getValue();
38
+
39
+ if ( ! empty( $this->settings['select_all'] ) ) {
40
+ $select_all_label = __( 'Select All' );
41
+ if ( is_string( $this->settings['select_all'] ) ) {
42
+ $select_all_label = $this->settings['select_all'];
43
+ }
44
+ printf('<label style="margin-bottom: 1em !important;"><input class="tf_checkbox_selectall" type="checkbox" /> %s </label><br>',
45
+ esc_html( $select_all_label )
46
+ );
47
+ }
48
+
49
+ foreach ( $this->settings['options'] as $value => $label ) {
50
+
51
+ printf('<label for="%s"><input id="%s" type="checkbox" name="%s[]" value="%s" %s/> %s</label><br>',
52
+ $this->getID() . $value,
53
+ $this->getID() . $value,
54
+ $this->getID(),
55
+ esc_attr( $value ),
56
+ checked( in_array( $value, $savedValue ), true, false ),
57
+ $label
58
+ );
59
+ }
60
+
61
+ echo '</fieldset>';
62
+
63
+ $this->echoOptionFooter( false );
64
+
65
+ }
66
+
67
+ /**
68
+ * Load the multicheck-selectall script
69
+ *
70
+ * @since 1.11
71
+ * @return void
72
+ */
73
+ public function load_select_scripts() {
74
+
75
+ wp_enqueue_script( 'tf-multicheck-select-all', TitanFramework::getURL( '../js/multicheck-select-all.js', __FILE__ ), array( 'jquery' ), TF_VERSION, true );
76
+
77
+ }
78
+
79
+ public function cleanValueForSaving( $value ) {
80
+ if ( empty( $value ) ) {
81
+ return array();
82
+ }
83
+ if ( is_serialized( $value ) ) {
84
+ return $value;
85
+ }
86
+ // CSV
87
+ if ( is_string( $value ) ) {
88
+ $value = explode( ',', $value );
89
+ }
90
+ return serialize( $value );
91
+ }
92
+
93
+ public function cleanValueForGetting( $value ) {
94
+ if ( empty( $value ) ) {
95
+ return array();
96
+ }
97
+ if ( is_array( $value ) ) {
98
+ return $value;
99
+ }
100
+ if ( is_serialized( $value ) ) {
101
+ return unserialize( $value );
102
+ }
103
+ if ( is_string( $value ) ) {
104
+ return explode( ',', $value );
105
+ }
106
+ }
107
+
108
+ }
options-framework/{titan-framework/lib → lib}/class-option-note.php RENAMED
@@ -14,6 +14,7 @@ class TitanFrameworkOptionNote extends TitanFrameworkOption {
14
  * Display for options and meta
15
  */
16
  public function display() {
 
17
  $this->echoOptionHeader();
18
 
19
  $color = $this->settings['color'] == 'green' ? '' : 'error';
@@ -36,35 +37,16 @@ class TitanFrameworkOptionNote extends TitanFrameworkOption {
36
  ?></div><?php
37
  }
38
 
39
- $this->echoOptionFooter( false );
40
- }
41
-
42
- /*
43
- * Display for theme customizer
44
- */
45
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
46
- $wp_customize->add_control( new TitanFrameworkOptionNoteControl( $wp_customize, $this->getID(), array(
47
- 'label' => $this->settings['name'],
48
- 'section' => $section->getID(),
49
- 'settings' => $this->getID(),
50
- 'description' => $this->settings['desc'],
51
- 'priority' => $priority,
52
- ) ) );
53
- }
54
- }
55
 
56
- /*
57
- * WP_Customize_Control with description
58
- */
59
- add_action( 'customize_register', 'registerTitanFrameworkOptionNoteControl', 1 );
60
- function registerTitanFrameworkOptionNoteControl() {
61
- class TitanFrameworkOptionNoteControl extends WP_Customize_Control {
62
- public $description;
63
-
64
- public function render_content() {
65
- if ( ! empty( $this->description ) ) {
66
- echo "<p class='description'>" . $this->description . '</p>';
67
  }
 
68
  }
 
 
 
69
  }
 
70
  }
14
  * Display for options and meta
15
  */
16
  public function display() {
17
+
18
  $this->echoOptionHeader();
19
 
20
  $color = $this->settings['color'] == 'green' ? '' : 'error';
37
  ?></div><?php
38
  }
39
 
40
+ if ( $this->settings['name'] == 'Alerts' ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
42
+ foreach ( $this->owner->owner->get_alert_messages() as $message ) {
43
+ echo '<p class="mm-alert-message"> - ' . $message . '</p>';
 
 
 
 
 
 
 
 
 
44
  }
45
+
46
  }
47
+
48
+ $this->echoOptionFooter( false );
49
+
50
  }
51
+
52
  }
options-framework/{titan-framework/lib → lib}/class-option-number.php RENAMED
@@ -155,76 +155,4 @@ class TitanFrameworkOptionNumber extends TitanFrameworkOption {
155
  );
156
  $this->echoOptionFooter( false );
157
  }
158
-
159
-
160
- /**
161
- * Registers the theme customizer control, for displaying the option
162
- *
163
- * @param WP_Customize $wp_enqueue_script The customize object
164
- * @param TitanFrameworkCustomizerSection $section The section where this option will be placed
165
- * @param int $priority The order of this control in the section
166
- * @return void
167
- * @since 1.0
168
- */
169
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
170
- $wp_customize->add_control( new TitanFrameworkOptionNumberControl( $wp_customize, $this->getID(), array(
171
- 'label' => $this->settings['name'],
172
- 'section' => $section->getID(),
173
- 'settings' => $this->getID(),
174
- 'description' => $this->settings['desc'],
175
- 'priority' => $priority,
176
- 'size' => $this->settings['size'],
177
- 'min' => $this->settings['min'],
178
- 'max' => $this->settings['max'],
179
- 'step' => $this->settings['step'],
180
- 'unit' => $this->settings['unit'],
181
- ) ) );
182
- }
183
- }
184
-
185
-
186
-
187
- /*
188
- * We create a new control for the theme customizer
189
- */
190
- add_action( 'customize_register', 'registerTitanFrameworkOptionNumberControl', 1 );
191
-
192
-
193
- /**
194
- * Creates the option for the theme customizer
195
- *
196
- * @return void
197
- * @since 1.0
198
- */
199
- function registerTitanFrameworkOptionNumberControl() {
200
- class TitanFrameworkOptionNumberControl extends WP_Customize_Control {
201
- public $description;
202
- public $size;
203
- public $min;
204
- public $max;
205
- public $step;
206
- public $unit;
207
-
208
- private static $firstLoad = true;
209
-
210
- public function render_content() {
211
- // Print out the jQuery slider initializer
212
- if ( self::$firstLoad ) {
213
- TitanFrameworkOptionNumber::createSliderScript();
214
- }
215
- self::$firstLoad = false;
216
-
217
- ?>
218
- <label class='tf-number'>
219
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
220
- <span class='number-slider'></span>
221
- <input class="<?php echo esc_attr( $this->size ) ?>-text" min="<?php echo esc_attr( $this->min ) ?>" max="<?php echo esc_attr( $this->max ) ?>" step="<?php echo esc_attr( $this->step ) ?>" type="number" value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->link(); ?> />
222
- <?php echo esc_html( $this->unit ) ?>
223
- </label>
224
- <?php
225
- if ( ! empty( $this->description ) ) {
226
- echo "<p class='description'>{$this->description}</p>";
227
- }
228
- }
229
- }
230
  }
155
  );
156
  $this->echoOptionFooter( false );
157
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  }
options-framework/{titan-framework/lib → lib}/class-option-radio-image.php RENAMED
@@ -74,62 +74,4 @@ class TitanFrameworkOptionRadioImage extends TitanFrameworkOption {
74
  return $value;
75
  }
76
 
77
- /*
78
- * Display for theme customizer
79
- */
80
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
81
- $wp_customize->add_control( new TitanFrameworkOptionRadioImageControl( $wp_customize, $this->getID(), array(
82
- 'label' => $this->settings['name'],
83
- 'section' => $section->settings['id'],
84
- 'type' => 'select',
85
- 'choices' => $this->settings['options'],
86
- 'settings' => $this->getID(),
87
- 'description' => $this->settings['desc'],
88
- 'priority' => $priority,
89
- 'is_font_icon' => $this->settings['is_font_icon']
90
- ) ) );
91
- }
92
- }
93
-
94
-
95
- /*
96
- * We create a new control for the theme customizer
97
- */
98
- add_action( 'customize_register', 'registerTitanFrameworkOptionRadioImageControl', 1 );
99
- function registerTitanFrameworkOptionRadioImageControl() {
100
- class TitanFrameworkOptionRadioImageControl extends WP_Customize_Control {
101
- public $description;
102
- public $is_font_icon;
103
-
104
- public function render_content() {
105
-
106
- ?><span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span><?php
107
-
108
- if ( ! empty( $this->description ) ) {
109
- echo "<p class='description'>" . $this->description . '</p>';
110
- }
111
-
112
- // print the images
113
- $value = $this->value();
114
- foreach ( $this->choices as $key => $imageURL ) {
115
- // Get the correct value, we might get a blank if index / value is 0
116
- if ( $value === '' ) {
117
- $value = $key;
118
- }
119
- ?>
120
- <span class='tf-radio-image'>
121
- <label>
122
- <input type="radio" name="<?php echo esc_attr( $this->id ) ?>" value="<?php echo esc_attr( $key ) ?>" <?php $this->link(); checked( $value, $key ); ?>/>
123
- <?php if ($this->is_font_icon){ ?>
124
- <span class="tf-radio-image-font-icon <?php echo esc_attr( $imageURL ) ?>"></span>
125
- <?php } else { ?>
126
- <img src="<?php echo esc_attr( $imageURL ) ?>"/>
127
- <?php } ?>
128
- </input>
129
- </label>
130
- </span>
131
- <?php
132
- }
133
- }
134
- }
135
  }
74
  return $value;
75
  }
76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  }
options-framework/{titan-framework/lib → lib}/class-option-radio-palette.php RENAMED
@@ -81,21 +81,6 @@ class TitanFrameworkOptionRadioPalette extends TitanFrameworkOption {
81
  return $value;
82
  }
83
 
84
- /*
85
- * Display for theme customizer
86
- */
87
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
88
- $wp_customize->add_control( new TitanFrameworkOptionRadioPaletteControl( $wp_customize, $this->getID(), array(
89
- 'label' => $this->settings['name'],
90
- 'section' => $section->settings['id'],
91
- 'type' => 'select',
92
- 'choices' => $this->settings['options'],
93
- 'settings' => $this->getID(),
94
- 'description' => $this->settings['desc'],
95
- 'priority' => $priority,
96
- ) ) );
97
- }
98
-
99
  // For live previews, we need to give our options to javascript and then get the proper value from it
100
  public function preLivePreview( $optionID, $optionType, $option ) {
101
  if ( $optionID != $this->settings['id'] || empty( $this->settings['options'] ) ) {
@@ -112,49 +97,3 @@ class TitanFrameworkOptionRadioPalette extends TitanFrameworkOption {
112
  <?php
113
  }
114
  }
115
-
116
-
117
- /*
118
- * We create a new control for the theme customizer
119
- */
120
- add_action( 'customize_register', 'registerTitanFrameworkOptionRadioPaletteControl', 1 );
121
- function registerTitanFrameworkOptionRadioPaletteControl() {
122
- class TitanFrameworkOptionRadioPaletteControl extends WP_Customize_Control {
123
- public $description;
124
-
125
- public function render_content() {
126
- // Get the correct value, we might get a blank if index / value is 0
127
- $value = $this->value();
128
- if ( $value == '' ) {
129
- $value = 0;
130
- }
131
-
132
- ?><span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span><?php
133
-
134
- if ( ! empty( $this->description ) ) {
135
- echo "<p class='description'>" . $this->description . '</p>';
136
- }
137
-
138
- // print the palettes
139
- foreach ( $this->choices as $key => $colorSet ) {
140
- if ( ! is_array( $colorSet ) ) {
141
- continue;
142
- }
143
- ?>
144
- <span class='tf-radio-palette'>
145
- <label>
146
- <input type="radio" name="<?php echo $this->id ?>" value="<?php echo esc_attr( $key ) ?>" <?php $this->link(); checked( $value, $key ); ?>/>
147
- <span>
148
- <?php
149
- foreach ( $colorSet as $color ) {
150
- echo "<span style='background: {$color}'></span>";
151
- }
152
- ?>
153
- </span>
154
- </label>
155
- </span>
156
- <?php
157
- }
158
- }
159
- }
160
- }
81
  return $value;
82
  }
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  // For live previews, we need to give our options to javascript and then get the proper value from it
85
  public function preLivePreview( $optionID, $optionType, $option ) {
86
  if ( $optionID != $this->settings['id'] || empty( $this->settings['options'] ) ) {
97
  <?php
98
  }
99
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/{titan-framework/lib → lib}/class-option-radio.php RENAMED
@@ -31,19 +31,4 @@ class TitanFrameworkOptionRadio extends TitanFrameworkOption {
31
 
32
  $this->echoOptionFooter( false );
33
  }
34
-
35
- /*
36
- * Display for theme customizer
37
- */
38
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
39
- $wp_customize->add_control( new TitanFrameworkCustomizeControl( $wp_customize, $this->getID(), array(
40
- 'label' => $this->settings['name'],
41
- 'section' => $section->settings['id'],
42
- 'settings' => $this->getID(),
43
- 'choices' => $this->settings['options'],
44
- 'type' => 'radio',
45
- 'description' => $this->settings['desc'],
46
- 'priority' => $priority,
47
- ) ) );
48
- }
49
  }
31
 
32
  $this->echoOptionFooter( false );
33
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  }
options-framework/lib/class-option-save.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
+ }
5
+ class TitanFrameworkOptionSave extends TitanFrameworkOption {
6
+
7
+ public $defaultSecondarySettings = array(
8
+ 'save' => '',
9
+ 'action' => 'save',
10
+ );
11
+
12
+ public function display() {
13
+ if ( ! empty( $this->owner->postID ) ) {
14
+ return;
15
+ }
16
+
17
+ if ( empty( $this->settings['save'] ) ) {
18
+ $this->settings['save'] = __( 'Save Changes', TF_I18NDOMAIN );
19
+ }
20
+
21
+ ?>
22
+ </tbody>
23
+ </table>
24
+
25
+ <p class='submit'>
26
+ <button name="action" value="<?php echo $this->settings['action'] ?>" class="button button-primary">
27
+ <?php echo $this->settings['save'] ?>
28
+ </button>
29
+ </p>
30
+
31
+ <table class='form-table'>
32
+ <tbody>
33
+ <?php
34
+ }
35
+ }
options-framework/{titan-framework/lib → lib}/class-option-select-categories.php RENAMED
@@ -42,7 +42,6 @@ class TitanFrameworkOptionSelectCategories extends TitanFrameworkOptionSelect {
42
  }
43
  }
44
 
45
-
46
  /**
47
  * Display for options and meta
48
  */
@@ -51,13 +50,4 @@ class TitanFrameworkOptionSelectCategories extends TitanFrameworkOptionSelect {
51
  parent::display();
52
  }
53
 
54
-
55
- /**
56
- * Display for theme customizer
57
- */
58
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
59
- $this->create_select_options();
60
- parent::registerCustomizerControl( $wp_customize, $section, $priority );
61
-
62
- }
63
  }
42
  }
43
  }
44
 
 
45
  /**
46
  * Display for options and meta
47
  */
50
  parent::display();
51
  }
52
 
 
 
 
 
 
 
 
 
 
53
  }
options-framework/{titan-framework/lib → lib}/class-option-select-pages.php RENAMED
@@ -45,13 +45,4 @@ class TitanFrameworkOptionSelectPages extends TitanFrameworkOptionSelect {
45
  parent::display();
46
  }
47
 
48
-
49
- /*
50
- * Display for theme customizer
51
- */
52
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
53
- $this->create_select_options();
54
- parent::registerCustomizerControl( $wp_customize, $section, $priority );
55
- }
56
-
57
  }
45
  parent::display();
46
  }
47
 
 
 
 
 
 
 
 
 
 
48
  }
options-framework/{titan-framework/lib → lib}/class-option-select-post-types.php RENAMED
@@ -41,7 +41,6 @@ class TitanFrameworkOptionSelectPostTypes extends TitanFrameworkOptionSelect {
41
  }
42
  }
43
 
44
-
45
  /*
46
  * Display for options and meta
47
  */
@@ -50,13 +49,4 @@ class TitanFrameworkOptionSelectPostTypes extends TitanFrameworkOptionSelect {
50
  parent::display();
51
  }
52
 
53
-
54
- /*
55
- * Display for theme customizer
56
- */
57
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
58
- $this->create_select_options();
59
- parent::registerCustomizerControl( $wp_customize, $section, $priority );
60
- }
61
-
62
  }
41
  }
42
  }
43
 
 
44
  /*
45
  * Display for options and meta
46
  */
49
  parent::display();
50
  }
51
 
 
 
 
 
 
 
 
 
 
52
  }
options-framework/{titan-framework/lib → lib}/class-option-select-posts.php RENAMED
@@ -54,13 +54,4 @@ class TitanFrameworkOptionSelectPosts extends TitanFrameworkOptionSelect {
54
  parent::display();
55
  }
56
 
57
-
58
- /*
59
- * Display for theme customizer
60
- */
61
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
62
- $this->create_select_options();
63
- parent::registerCustomizerControl( $wp_customize, $section, $priority );
64
- }
65
-
66
  }
54
  parent::display();
55
  }
56
 
 
 
 
 
 
 
 
 
 
57
  }
options-framework/{titan-framework/lib → lib}/class-option-select.php RENAMED
@@ -28,10 +28,10 @@ class TitanFrameworkOptionSelect extends TitanFrameworkOption {
28
  parent::__construct( $settings, $owner );
29
 
30
  tf_add_action_once( 'admin_enqueue_scripts', array( $this, 'load_select_scripts' ) );
31
- tf_add_action_once( 'customize_controls_enqueue_scripts', array( $this, 'load_select_scripts' ) );
32
 
33
  tf_add_action_once( 'admin_head', array( $this, 'init_select_script' ) );
34
- tf_add_action_once( 'customize_controls_print_footer_scripts', array( $this, 'init_select_script' ) );
35
  }
36
 
37
 
@@ -56,25 +56,6 @@ class TitanFrameworkOptionSelect extends TitanFrameworkOption {
56
  $this->echoOptionFooter();
57
  }
58
 
59
-
60
- /*
61
- * Display for theme customizer
62
- */
63
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
64
-
65
- $wp_customize->add_control( new TitanFrameworkOptionSelectControl( $wp_customize, $this->getID(), array(
66
- 'label' => $this->settings['name'],
67
- 'section' => $section->settings['id'],
68
- 'type' => 'select',
69
- 'choices' => $this->settings['options'],
70
- 'settings' => $this->getID(),
71
- 'description' => $this->settings['desc'],
72
- 'priority' => $priority,
73
- ) ) );
74
-
75
- }
76
-
77
-
78
  /**
79
  * Register and load the select2 script
80
  *
@@ -84,7 +65,6 @@ class TitanFrameworkOptionSelect extends TitanFrameworkOption {
84
  public function load_select_scripts() {
85
 
86
  wp_enqueue_script( 'tf-select2', TitanFramework::getURL( '../js/select2/select2.min.js', __FILE__ ), array( 'jquery' ), TF_VERSION, true );
87
-
88
  wp_enqueue_style( 'tf-select2-style', TitanFramework::getURL( '../css/select2/select2.min.css', __FILE__ ), null, TF_VERSION, 'all' );
89
  wp_enqueue_style( 'tf-select-option-style', TitanFramework::getURL( '../css/class-option-select.css', __FILE__ ), null, TF_VERSION, 'all' );
90
 
@@ -125,32 +105,6 @@ class TitanFrameworkOptionSelect extends TitanFrameworkOption {
125
  }
126
 
127
 
128
- /*
129
- * We create a new control for the theme customizer (for the grouped options only)
130
- */
131
- add_action( 'customize_register', 'registerTitanFrameworkOptionSelectControl', 1 );
132
- function registerTitanFrameworkOptionSelectControl() {
133
- class TitanFrameworkOptionSelectControl extends WP_Customize_Control {
134
- public $description;
135
-
136
- public function render_content() {
137
- ?>
138
- <label>
139
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
140
- <select class="tf-select" <?php $this->link(); ?>>
141
- <?php tf_parse_select_options( $this->choices, (array) $this->value() ); ?>
142
- ?></select>
143
- </select>
144
- </label>
145
- <?php
146
- if ( ! empty( $this->description ) ) {
147
- echo "<p class='description'>{$this->description}</p>";
148
- }
149
- }
150
- }
151
- }
152
-
153
-
154
  /**
155
  * Helper function for parsing select options
156
  *
28
  parent::__construct( $settings, $owner );
29
 
30
  tf_add_action_once( 'admin_enqueue_scripts', array( $this, 'load_select_scripts' ) );
31
+ //tf_add_action_once( 'customize_controls_enqueue_scripts', array( $this, 'load_select_scripts' ) );
32
 
33
  tf_add_action_once( 'admin_head', array( $this, 'init_select_script' ) );
34
+ //tf_add_action_once( 'customize_controls_print_footer_scripts', array( $this, 'init_select_script' ) );
35
  }
36
 
37
 
56
  $this->echoOptionFooter();
57
  }
58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  /**
60
  * Register and load the select2 script
61
  *
65
  public function load_select_scripts() {
66
 
67
  wp_enqueue_script( 'tf-select2', TitanFramework::getURL( '../js/select2/select2.min.js', __FILE__ ), array( 'jquery' ), TF_VERSION, true );
 
68
  wp_enqueue_style( 'tf-select2-style', TitanFramework::getURL( '../css/select2/select2.min.css', __FILE__ ), null, TF_VERSION, 'all' );
69
  wp_enqueue_style( 'tf-select-option-style', TitanFramework::getURL( '../css/class-option-select.css', __FILE__ ), null, TF_VERSION, 'all' );
70
 
105
  }
106
 
107
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  /**
109
  * Helper function for parsing select options
110
  *
options-framework/{titan-framework/lib → lib}/class-option-separator.php RENAMED
File without changes
options-framework/{titan-framework/lib → lib}/class-option-sortable.php RENAMED
@@ -234,112 +234,4 @@ class TitanFrameworkOptionSortable extends TitanFrameworkOption {
234
  }
235
 
236
 
237
- /**
238
- * Registers the theme customizer control, for displaying the option
239
- *
240
- * @param WP_Customize $wp_enqueue_script The customize object
241
- * @param TitanFrameworkCustomizerSection $section The section where this option will be placed
242
- * @param int $priority The order of this control in the section
243
- * @return void
244
- * @since 1.4
245
- */
246
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
247
- $wp_customize->add_control( new TitanFrameworkOptionSortableControl( $wp_customize, $this->getID(), array(
248
- 'label' => $this->settings['name'],
249
- 'section' => $section->settings['id'],
250
- 'settings' => $this->getID(),
251
- 'description' => $this->settings['desc'],
252
- 'orientation' => $this->settings['orientation'],
253
- 'priority' => $priority,
254
- 'options' => $this->settings['options'],
255
- 'visible_button' => $this->settings['visible_button'],
256
- ) ) );
257
- }
258
- }
259
-
260
-
261
-
262
- /*
263
- * We create a new control for the theme customizer
264
- */
265
- add_action( 'customize_register', 'registerTitanFrameworkOptionSortableControl', 1 );
266
-
267
-
268
- /**
269
- * Creates the option for the theme customizer
270
- *
271
- * @return void
272
- * @since 1.4
273
- */
274
- function registerTitanFrameworkOptionSortableControl() {
275
- class TitanFrameworkOptionSortableControl extends WP_Customize_Control {
276
- public $description;
277
- public $options;
278
- public $visible_button;
279
-
280
- public function render_content() {
281
- TitanFrameworkOptionSortable::createSortableScript();
282
-
283
- if ( ! is_array( $this->options ) ) {
284
- return;
285
- }
286
- if ( ! count( $this->options ) ) {
287
- return;
288
- }
289
-
290
- ?>
291
- <label class='tf-sortable'>
292
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
293
- <?php
294
-
295
- $values = $this->value();
296
- if ( $values == '' ) {
297
- $values = array_keys( $this->options );
298
- }
299
- if ( is_serialized( $values ) ) {
300
- $values = unserialize( $values );
301
- }
302
- if ( count( $values ) != count( $this->options ) ) {
303
- $this->visible_button = true;
304
- }
305
-
306
- $visibleButton = '';
307
- if ( $this->visible_button == true ) {
308
- $visibleButton = "<i class='dashicons dashicons-visibility visibility'></i>";
309
- }
310
- ?>
311
- <ul>
312
- <?php
313
- foreach ( $values as $dummy => $value ) {
314
- printf( "<li data-value='%s'><i class='dashicons dashicons-menu'></i>%s%s</li>",
315
- esc_attr( $value ),
316
- $visibleButton,
317
- $this->options[ $value ]
318
- );
319
- }
320
-
321
- $invisibleKeys = array_diff( array_keys( $this->options ), $values );
322
- foreach ( $invisibleKeys as $dummy => $value ) {
323
- printf( "<li data-value='%s'><i class='dashicons dashicons-menu'></i>%s%s</li>",
324
- esc_attr( $value ),
325
- $visibleButton,
326
- $this->options[ $value ]
327
- );
328
- }
329
- ?>
330
- </ul>
331
- <div class='clear: both'></div>
332
- <?php
333
-
334
- if ( ! is_serialized( $values ) ) {
335
- $values = serialize( $values );
336
- }
337
-
338
- ?>
339
- <input type='hidden' <?php $this->link(); ?> value='<?php echo esc_attr( $values ) ?>'/>
340
- </label>
341
- <?php
342
- echo "<p class='description'>{$this->description}</p>";
343
- }
344
- }
345
  }
234
  }
235
 
236
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
  }
options-framework/{titan-framework/lib → lib}/class-option-text.php RENAMED
@@ -132,20 +132,4 @@ class TitanFrameworkOptionText extends TitanFrameworkOption {
132
  return $value;
133
  }
134
 
135
- /**
136
- * Display for theme customizer
137
- *
138
- * @param WP_Customize $wp_customize The customizer object.
139
- * @param TitanFrameworkCustomizer $section The customizer section.
140
- * @param int $priority The display priority of the control.
141
- */
142
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
143
- $wp_customize->add_control( new TitanFrameworkCustomizeControl( $wp_customize, $this->getID(), array(
144
- 'label' => $this->settings['name'],
145
- 'section' => $section->settings['id'],
146
- 'settings' => $this->getID(),
147
- 'description' => $this->settings['desc'],
148
- 'priority' => $priority,
149
- ) ) );
150
- }
151
  }
132
  return $value;
133
  }
134
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  }
options-framework/lib/class-option-textarea.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
+ }
5
+ class TitanFrameworkOptionTextarea extends TitanFrameworkOption {
6
+
7
+ public $defaultSecondarySettings = array(
8
+ 'placeholder' => '', // show this when blank
9
+ 'is_code' => false, // if true, a more code-like font will be used
10
+ 'sanitize_callbacks' => array(),
11
+ );
12
+
13
+ /*
14
+ * Display for options and meta
15
+ */
16
+ public function display() {
17
+ $this->echoOptionHeader( true );
18
+ printf("<textarea class='large-text %s' name=\"%s\" placeholder=\"%s\" id=\"%s\" rows='10' cols='50'>%s</textarea>",
19
+ $this->settings['is_code'] ? 'code' : '',
20
+ $this->getID(),
21
+ $this->settings['placeholder'],
22
+ $this->getID(),
23
+ esc_textarea( stripslashes( $this->getValue() ) )
24
+ );
25
+ $this->echoOptionFooter( false );
26
+ }
27
+
28
+ public function cleanValueForSaving( $value ) {
29
+ if ( ! empty( $this->settings['sanitize_callbacks'] ) ) {
30
+ foreach ( $this->settings['sanitize_callbacks'] as $callback ) {
31
+ $value = call_user_func_array( $callback, array( $value, $this ) );
32
+ }
33
+ }
34
+
35
+ return $value;
36
+ }
37
+
38
+ }
options-framework/{titan-framework/lib → lib}/class-option-upload.php RENAMED
@@ -145,10 +145,15 @@ class TitanFrameworkOptionUpload extends TitanFrameworkOption {
145
  // Gives us an array with the first element as the src or false on fail.
146
  $value = wp_get_attachment_image_src( $value, array( 150, 150 ) );
147
  }
148
- if ( ! is_array( $value ) ) {
149
- $value = $this->getValue();
 
150
  } else {
151
- $value = $value[0];
 
 
 
 
152
  }
153
 
154
  $previewImage = '';
@@ -166,19 +171,6 @@ class TitanFrameworkOptionUpload extends TitanFrameworkOption {
166
  $this->echoOptionFooter();
167
  }
168
 
169
- /*
170
- * Display for theme customizer.
171
- */
172
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
173
- $wp_customize->add_control( new TitanFrameworkOptionUploadControl( $wp_customize, $this->getID(), array(
174
- 'label' => $this->settings['name'],
175
- 'section' => $section->getID(),
176
- 'settings' => $this->getID(),
177
- 'description' => $this->settings['desc'],
178
- 'priority' => $priority,
179
- ) ) );
180
- }
181
-
182
  public static function createUploaderScript() {
183
  if ( ! self::$firstLoad ) {
184
  return;
@@ -336,78 +328,3 @@ class TitanFrameworkOptionUpload extends TitanFrameworkOption {
336
  <?php
337
  }
338
  }
339
-
340
- /*
341
- * We create a new control for the theme customizer.
342
- */
343
- add_action( 'customize_register', 'registerTitanFrameworkOptionUploadControl', 1 );
344
- function registerTitanFrameworkOptionUploadControl() {
345
- class TitanFrameworkOptionUploadControl extends WP_Customize_Control {
346
- public $description;
347
-
348
- public function render_content() {
349
- TitanFrameworkOptionUpload::createUploaderScript();
350
-
351
- $previewImage = '';
352
- $value = $this->value();
353
- if ( is_numeric( $value ) ) {
354
- // Gives us an array with the first element as the src or false on fail.
355
- $value = wp_get_attachment_image_src( $value, array( 150, 150 ) );
356
- }
357
- if ( ! is_array( $value ) ) {
358
- $value = $this->value();
359
- } else {
360
- $value = $value[0];
361
- }
362
-
363
- if ( ! empty( $value ) ) {
364
- $previewImage = "<i class='dashicons dashicons-no-alt remove'></i><img src='" . esc_url( $value ) . "' style='display: none'/>";
365
- }
366
-
367
- ?>
368
- <div class='tf-upload'>
369
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
370
- <div class='thumbnail tf-image-preview'><?php echo $previewImage ?></div>
371
- <input type='hidden' value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->link(); ?>/>
372
- </div>
373
- <?php
374
-
375
- if ( ! empty( $this->description ) ) {
376
- echo "<p class='description'>{$this->description}</p>";
377
- }
378
- }
379
- }
380
- }
381
-
382
-
383
-
384
- if ( ! function_exists( 'tf_upload_option_customizer_get_value' ) ) {
385
-
386
- add_action( 'wp_ajax_tf_upload_option_customizer_get_value', 'tf_upload_option_customizer_get_value' );
387
-
388
- /**
389
- * Returns the image URL from an attachment ID & size.
390
- *
391
- * @see TitanFrameworkOptionUpload->preLivePreview().
392
- */
393
- function tf_upload_option_customizer_get_value() {
394
-
395
- if ( ! empty( $_POST['nonce'] ) && ! empty( $_POST['id'] ) && ! empty( $_POST['size'] ) ) {
396
-
397
- $nonce = sanitize_text_field( $_POST['nonce'] );
398
- $attachmentID = sanitize_text_field( $_POST['id'] );
399
- $size = sanitize_text_field( $_POST['size'] );
400
-
401
- if ( wp_verify_nonce( $nonce, 'tf_upload_option_nonce' ) ) {
402
- $attachment = wp_get_attachment_image_src( $attachmentID, $size );
403
- if ( ! empty( $attachment ) ) {
404
- wp_send_json_success( $attachment[0] );
405
- }
406
- }
407
- }
408
-
409
- // Instead of doing a wp_send_json_error, send a blank value instead so.
410
- // Javascript adjustments still get executed.
411
- wp_send_json_success( '' );
412
- }
413
- }
145
  // Gives us an array with the first element as the src or false on fail.
146
  $value = wp_get_attachment_image_src( $value, array( 150, 150 ) );
147
  }
148
+
149
+ if ( !$value ) {
150
+ $value = "";
151
  } else {
152
+ if ( ! is_array( $value ) ) {
153
+ $value = $this->getValue();
154
+ } else {
155
+ $value = $value[0];
156
+ }
157
  }
158
 
159
  $previewImage = '';
171
  $this->echoOptionFooter();
172
  }
173
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  public static function createUploaderScript() {
175
  if ( ! self::$firstLoad ) {
176
  return;
328
  <?php
329
  }
330
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/{titan-framework/lib → lib}/class-option.php RENAMED
@@ -113,14 +113,6 @@ class TitanFrameworkOption {
113
 
114
  $className = 'TitanFrameworkOption' . str_replace( ' ', '', ucwords( str_replace( '-', ' ', $settings['type'] ) ) );
115
 
116
- // assume all the classes are already required
117
- if ( ! class_exists( $className ) && ! class_exists( $settings['type'] ) ) {
118
- TitanFramework::displayFrameworkError(
119
- sprintf( __( 'Option type or extended class %s does not exist.', TF_I18NDOMAIN ), '<code>' . $settings['type'] . '</code>', $settings ),
120
- $settings );
121
- return null;
122
- }
123
-
124
  if ( class_exists( $className ) ) {
125
  $obj = new $className( $settings, $owner );
126
  return $obj;
@@ -138,7 +130,6 @@ class TitanFrameworkOption {
138
  $this->settings = array_merge( $this->settings, $settings );
139
 
140
  $this->type = is_a( $owner, 'TitanFrameworkMetaBox' ) ? self::TYPE_META : self::TYPE_ADMIN;
141
- $this->type = is_a( $owner, 'TitanFrameworkCustomizer' ) ? self::TYPE_CUSTOMIZER : $this->type;
142
 
143
  // Generate a unique ID depending on the settings for those without IDs
144
  if ( empty( $this->settings['id'] ) && $this->settings['type'] != 'save' ) {
@@ -146,6 +137,14 @@ class TitanFrameworkOption {
146
  }
147
  }
148
 
 
 
 
 
 
 
 
 
149
 
150
  public function getValue( $postID = null ) {
151
 
@@ -179,22 +178,10 @@ class TitanFrameworkOption {
179
  $value = get_theme_mod( $this->getID(), $this->settings['default'] );
180
  }
181
 
182
- /**
183
- * Allow others to change the value of the option before it gets cleaned
184
- *
185
- * @since 1.9.2
186
- */
187
- $value = apply_filters( 'tf_pre_get_value_' . $this->getOptionNamespace(), $value, $postID, $this );
188
-
189
  // Apply cleaning method for the value (for serialized data, slashes, etc).
190
  $value = $this->cleanValueForGetting( $value );
191
 
192
- /**
193
- * Allow others to change the value of the option after it gets cleaned
194
- *
195
- * @since 1.9
196
- */
197
- return apply_filters( 'tf_get_value_' . $this->settings['type'] . '_' . $this->getOptionNamespace(), $value, $postID, $this );
198
  }
199
 
200
 
@@ -228,8 +215,6 @@ class TitanFrameworkOption {
228
 
229
  }
230
 
231
- do_action( 'tf_set_value_' . $this->settings['type'] . '_' . $this->getOptionNamespace(), $value, $postID, $this );
232
-
233
  return true;
234
  }
235
 
@@ -297,12 +282,13 @@ class TitanFrameworkOption {
297
 
298
  $id = $this->getID();
299
  $name = $this->getName();
 
300
  $evenOdd = self::$rowIndex++ % 2 == 0 ? 'odd' : 'even';
301
 
302
  $style = $this->getHidden() == true ? 'style="display: none"' : '';
303
 
304
  ?>
305
- <tr valign="top" class="row-<?php echo self::$rowIndex ?> <?php echo $evenOdd ?>" <?php echo $style ?>>
306
  <th scope="row" class="first">
307
  <label for="<?php echo ! empty( $id ) ? $id : '' ?>"><?php echo ! empty( $name ) ? $name : '' ?></label>
308
  </th>
@@ -429,8 +415,4 @@ class TitanFrameworkOption {
429
  return stripslashes( $value );
430
  }
431
 
432
- /* overridden */
433
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
434
-
435
- }
436
  }
113
 
114
  $className = 'TitanFrameworkOption' . str_replace( ' ', '', ucwords( str_replace( '-', ' ', $settings['type'] ) ) );
115
 
 
 
 
 
 
 
 
 
116
  if ( class_exists( $className ) ) {
117
  $obj = new $className( $settings, $owner );
118
  return $obj;
130
  $this->settings = array_merge( $this->settings, $settings );
131
 
132
  $this->type = is_a( $owner, 'TitanFrameworkMetaBox' ) ? self::TYPE_META : self::TYPE_ADMIN;
 
133
 
134
  // Generate a unique ID depending on the settings for those without IDs
135
  if ( empty( $this->settings['id'] ) && $this->settings['type'] != 'save' ) {
137
  }
138
  }
139
 
140
+
141
+ public function getClass( $postID = null ) {
142
+
143
+ if ( ! empty( $this->settings['class'] ) ) {
144
+ return $this->settings['class'];
145
+ }
146
+ return '';
147
+ }
148
 
149
  public function getValue( $postID = null ) {
150
 
178
  $value = get_theme_mod( $this->getID(), $this->settings['default'] );
179
  }
180
 
 
 
 
 
 
 
 
181
  // Apply cleaning method for the value (for serialized data, slashes, etc).
182
  $value = $this->cleanValueForGetting( $value );
183
 
184
+ return $value;
 
 
 
 
 
185
  }
186
 
187
 
215
 
216
  }
217
 
 
 
218
  return true;
219
  }
220
 
282
 
283
  $id = $this->getID();
284
  $name = $this->getName();
285
+ $optionClass = $this->getClass();
286
  $evenOdd = self::$rowIndex++ % 2 == 0 ? 'odd' : 'even';
287
 
288
  $style = $this->getHidden() == true ? 'style="display: none"' : '';
289
 
290
  ?>
291
+ <tr valign="top" class="row-<?php echo self::$rowIndex ?> <?php echo $evenOdd ?> <?php echo $optionClass; ?>" <?php echo $style ?>>
292
  <th scope="row" class="first">
293
  <label for="<?php echo ! empty( $id ) ? $id : '' ?>"><?php echo ! empty( $name ) ? $name : '' ?></label>
294
  </th>
415
  return stripslashes( $value );
416
  }
417
 
 
 
 
 
418
  }
options-framework/{titan-framework/lib → lib}/class-titan-css.php RENAMED
@@ -95,13 +95,10 @@ class TitanFrameworkCSS
95
  $mobmenu_options = TitanFramework::getInstance( 'mobmenu' );
96
  $is_mobile_only = $mobmenu_options->getOption( 'only_mobile_devices' );
97
  $is_testing_mode = $mobmenu_options->getOption( 'only_testing_mode' );
98
-
99
  $mobmenu_action = '';
100
-
101
- if ( isset($_GET['mobmenu-action']) ) {
102
- $mobmenu_action = $_GET['mobmenu-action'];
103
  }
104
-
105
  if ( $mobmenu_action == 'find-element' || $is_testing_mode && current_user_can( 'administrator' ) || !$is_testing_mode && (!$is_mobile_only || $is_mobile_only && wp_is_mobile()) ) {
106
  // Only enqueue the generated css if we have the settings for it.
107
 
95
  $mobmenu_options = TitanFramework::getInstance( 'mobmenu' );
96
  $is_mobile_only = $mobmenu_options->getOption( 'only_mobile_devices' );
97
  $is_testing_mode = $mobmenu_options->getOption( 'only_testing_mode' );
 
98
  $mobmenu_action = '';
99
+ if ( isset( $_GET['mobmenu-action'] ) ) {
100
+ $mobmenu_action = $_GET['mobmenu-action'];
 
101
  }
 
102
  if ( $mobmenu_action == 'find-element' || $is_testing_mode && current_user_can( 'administrator' ) || !$is_testing_mode && (!$is_mobile_only || $is_mobile_only && wp_is_mobile()) ) {
103
  // Only enqueue the generated css if we have the settings for it.
104
 
options-framework/{titan-framework/lib → lib}/class-titan-framework.php RENAMED
@@ -41,7 +41,7 @@ class TitanFramework {
41
  /**
42
  * All main containers (admin pages, meta boxes, customizer section)
43
  *
44
- * @var array of TitanFrameworkAdminPage, TitanFrameworkMetaBox, & TitanFrameworkCustomizer
45
  */
46
  private $mainContainers = array();
47
 
@@ -163,7 +163,7 @@ class TitanFramework {
163
 
164
  add_action( 'admin_enqueue_scripts', array( $this, 'loadAdminScripts' ) );
165
  add_action( 'tf_create_option_' . $this->optionNamespace, array( $this, 'rememberAllOptions' ) );
166
- add_filter( 'tf_create_option_continue_' . $this->optionNamespace, array( $this, 'removeChildThemeOptions' ), 10, 2 );
167
 
168
  // Create a save option filter for customizer options.
169
  add_filter( 'pre_update_option', array( $this, 'addCustomizerSaveFilter' ), 10, 3 );
@@ -347,23 +347,6 @@ class TitanFramework {
347
  return $this->createAdminPage( $settings );
348
  }
349
 
350
-
351
- /**
352
- * Create a sample content only.
353
- * Use createSampleContent() with 'type' => 'sample-panel' or createSamplePanel() instead.
354
- *
355
- * @since 1.11
356
- *
357
- * @param array $settings The arguments for creating the sample conent page.
358
- *
359
- * @return TitanFrameworkAdminPage The created sample coennt page.
360
- */
361
- public function createSampleContentPage( $settings ) {
362
- $settings['type'] = 'sample-panel';
363
- return $this->createContainer( $settings );
364
- }
365
-
366
-
367
  /**
368
  * Create a admin page
369
  *
@@ -395,40 +378,6 @@ class TitanFramework {
395
  return $this->createContainer( $settings );
396
  }
397
 
398
-
399
- /**
400
- * Create a customizer section
401
- *
402
- * @deprecated 1.9 Use createContainer() with 'type' => 'customizer' or createCustomizer instead.
403
- * @since 1.0
404
- *
405
- * @param array $settings The arguments for creating a customizer section.
406
- *
407
- * @return TitanFrameworkCustomizer The created section
408
- */
409
- public function createThemeCustomizerSection( $settings ) {
410
- // _deprecated_function( __FUNCTION__, '1.9', 'createContainer' );
411
- return $this->createCustomizer( $settings );
412
- }
413
-
414
-
415
- /**
416
- * Create a customizer section
417
- *
418
- * @since 1.9
419
- *
420
- * @param array $settings The arguments for creating a customizer section.
421
- *
422
- * @return TitanFrameworkCustomizer The created section
423
- */
424
- public function createCustomizer( $settings ) {
425
- $settings['type'] = 'customizer';
426
- $container = $this->createContainer( $settings );
427
- do_action( 'tf_theme_customizer_created_' . $this->optionNamespace, $container );
428
- return $container;
429
- }
430
-
431
-
432
  /**
433
  * Creates a container (e.g. admin page, meta box, customizer section) depending
434
  * on the `type` parameter given in $settings
@@ -437,7 +386,7 @@ class TitanFramework {
437
  *
438
  * @param array $settings The arguments for creating the container.
439
  *
440
- * @return TitanFrameworkCustomizer|TitanFrameworkAdminPage|TitanFrameworkMetaBox The created container
441
  */
442
  public function createContainer( $settings ) {
443
  if ( empty( $settings['type'] ) ) {
@@ -532,7 +481,7 @@ class TitanFramework {
532
  $value = $option->getValue( $postID );
533
  }
534
 
535
- return apply_filters( 'tf_get_option_' . $this->optionNamespace, $value, $optionName, $postID );
536
  } else {
537
  $value = $this->getInternalAdminPageOption( $optionName );
538
 
41
  /**
42
  * All main containers (admin pages, meta boxes, customizer section)
43
  *
44
+ * @var array of TitanFrameworkAdminPage, TitanFrameworkMetaBox
45
  */
46
  private $mainContainers = array();
47
 
163
 
164
  add_action( 'admin_enqueue_scripts', array( $this, 'loadAdminScripts' ) );
165
  add_action( 'tf_create_option_' . $this->optionNamespace, array( $this, 'rememberAllOptions' ) );
166
+ //add_filter( 'tf_create_option_continue_' . $this->optionNamespace, array( $this, 'removeChildThemeOptions' ), 10, 2 );
167
 
168
  // Create a save option filter for customizer options.
169
  add_filter( 'pre_update_option', array( $this, 'addCustomizerSaveFilter' ), 10, 3 );
347
  return $this->createAdminPage( $settings );
348
  }
349
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
  /**
351
  * Create a admin page
352
  *
378
  return $this->createContainer( $settings );
379
  }
380
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
381
  /**
382
  * Creates a container (e.g. admin page, meta box, customizer section) depending
383
  * on the `type` parameter given in $settings
386
  *
387
  * @param array $settings The arguments for creating the container.
388
  *
389
+ * @return TitanFrameworkAdminPage|TitanFrameworkMetaBox The created container
390
  */
391
  public function createContainer( $settings ) {
392
  if ( empty( $settings['type'] ) ) {
481
  $value = $option->getValue( $postID );
482
  }
483
 
484
+ return $value;
485
  } else {
486
  $value = $this->getInternalAdminPageOption( $optionName );
487
 
options-framework/{titan-framework/lib → lib}/functions-googlefonts.php RENAMED
File without changes
options-framework/{titan-framework/lib → lib}/functions-utils.php RENAMED
File without changes
options-framework/{titan-framework/lib → lib}/iframe-font-preview.php RENAMED
File without changes
options-framework/{titan-framework/titan-framework.php → option-framework.php} RENAMED
@@ -35,7 +35,6 @@ defined( 'TF_PLUGIN_BASENAME' ) or define( 'TF_PLUGIN_BASENAME', plugin_basename
35
  require_once( TF_PATH . 'lib/class-admin-notification.php' );
36
  require_once( TF_PATH . 'lib/class-admin-page.php' );
37
  require_once( TF_PATH . 'lib/class-admin-tab.php' );
38
- require_once( TF_PATH . 'lib/class-customizer.php' );
39
  require_once( TF_PATH . 'lib/class-meta-box.php' );
40
  require_once( TF_PATH . 'lib/class-option.php' );
41
  require_once( TF_PATH . 'lib/class-option-ajax-button.php' );
@@ -75,16 +74,15 @@ require_once( TF_PATH . 'lib/class-option-upload.php' );
75
  require_once( TF_PATH . 'lib/class-option-file.php' );
76
  require_once( TF_PATH . 'lib/class-titan-css.php' );
77
  require_once( TF_PATH . 'lib/class-titan-framework.php' );
78
- require_once( TF_PATH . 'lib/class-wp-customize-control.php' );
79
  require_once( TF_PATH . 'lib/functions-googlefonts.php' );
80
  require_once( TF_PATH . 'lib/functions-utils.php' );
81
 
82
  /**
83
- * Titan Framework Plugin Class
84
  *
85
  * @since 1.0
86
  */
87
- class TitanFrameworkPlugin {
88
 
89
 
90
  /**
@@ -94,7 +92,6 @@ class TitanFrameworkPlugin {
94
  */
95
  function __construct() {
96
  add_action( 'plugins_loaded', array( $this, 'force_load_first' ), 10, 1 );
97
- add_filter( 'plugin_row_meta', array( $this, 'plugin_links' ), 10, 2 );
98
 
99
  // Create the options.
100
  add_action( 'init', array( $this, 'trigger_option_creation' ), 1 );
@@ -154,36 +151,6 @@ class TitanFrameworkPlugin {
154
 
155
  return $plugins;
156
  }
157
-
158
-
159
- /**
160
- * Adds links to the docs and GitHub
161
- *
162
- * @since 1.1.1
163
- * @access public
164
- *
165
- * @param array $plugin_meta The current array of links.
166
- * @param string $plugin_file The plugin file.
167
- * @return array The current array of links together with our additions
168
- **/
169
- public function plugin_links( $plugin_meta, $plugin_file ) {
170
- if ( TF_PLUGIN_BASENAME === $plugin_file ) {
171
- $plugin_meta[] = sprintf( "<a href='%s' target='_blank'>%s</a>",
172
- 'http://www.titanframework.net/docs',
173
- __( 'Documentation', TF_I18NDOMAIN )
174
- );
175
- $plugin_meta[] = sprintf( "<a href='%s' target='_blank'>%s</a>",
176
- 'https://github.com/gambitph/Titan-Framework',
177
- __( 'GitHub Repo', TF_I18NDOMAIN )
178
- );
179
- $plugin_meta[] = sprintf( "<a href='%s' target='_blank'>%s</a>",
180
- 'https://github.com/gambitph/Titan-Framework/issues',
181
- __( 'Issue Tracker', TF_I18NDOMAIN )
182
- );
183
- }
184
- return $plugin_meta;
185
- }
186
  }
187
 
188
-
189
- new TitanFrameworkPlugin();
35
  require_once( TF_PATH . 'lib/class-admin-notification.php' );
36
  require_once( TF_PATH . 'lib/class-admin-page.php' );
37
  require_once( TF_PATH . 'lib/class-admin-tab.php' );
 
38
  require_once( TF_PATH . 'lib/class-meta-box.php' );
39
  require_once( TF_PATH . 'lib/class-option.php' );
40
  require_once( TF_PATH . 'lib/class-option-ajax-button.php' );
74
  require_once( TF_PATH . 'lib/class-option-file.php' );
75
  require_once( TF_PATH . 'lib/class-titan-css.php' );
76
  require_once( TF_PATH . 'lib/class-titan-framework.php' );
 
77
  require_once( TF_PATH . 'lib/functions-googlefonts.php' );
78
  require_once( TF_PATH . 'lib/functions-utils.php' );
79
 
80
  /**
81
+ * Option Framework Plugin Class
82
  *
83
  * @since 1.0
84
  */
85
+ class OptionFrameworkPlugin {
86
 
87
 
88
  /**
92
  */
93
  function __construct() {
94
  add_action( 'plugins_loaded', array( $this, 'force_load_first' ), 10, 1 );
 
95
 
96
  // Create the options.
97
  add_action( 'init', array( $this, 'trigger_option_creation' ), 1 );
151
 
152
  return $plugins;
153
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  }
155
 
156
+ new OptionFrameworkPlugin();
 
options-framework/titan-framework/.jshintrc DELETED
@@ -1,29 +0,0 @@
1
- /**
2
- * WordPress standards from https://develop.svn.wordpress.org/trunk/.jshintrc
3
- */
4
-
5
- {
6
- "boss": true,
7
- "curly": true,
8
- "eqeqeq": true,
9
- "eqnull": true,
10
- "es3": true,
11
- "expr": true,
12
- "immed": true,
13
- "noarg": true,
14
- "onevar": true,
15
- "quotmark": "single",
16
- "trailing": true,
17
- "undef": true, // This reports `console` in `console.log()` as an error
18
- "unused": true,
19
-
20
- "browser": true,
21
-
22
- "globals": {
23
- "_": false,
24
- "Backbone": false,
25
- "jQuery": false,
26
- "JSON": false,
27
- "wp": false
28
- }
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/.scrutinizer.yml DELETED
@@ -1,10 +0,0 @@
1
- checks:
2
- php:
3
- custom_coding_standard:
4
- git_repository: 'https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards'
5
- ruleset_path: 'WordPress-Core/ruleset.xml'
6
- tools:
7
- external_code_coverage: true
8
- php_code_sniffer:
9
- config:
10
- standard: "WordPress"
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/.tm_properties DELETED
@@ -1,19 +0,0 @@
1
- # Inspired from https://github.com/hmans/homedir/blob/master/.tm_properties
2
-
3
- # Extra files to include
4
- #
5
- myExtraIncludes = ".tm_properties,.htaccess,.gitignore,.jshintrc,.travis.yml,.scrutinizer.yml"
6
- fileBrowserGlob = "{*,$myExtraIncludes}"
7
- include = "{$include,$myExtraIncludes}"
8
-
9
- # Hide log, vendor and tmp directories from search popups.
10
- #
11
- myExtraExcludes = "coverage,node_modules,vendor,bower_components"
12
- excludeInFileChooser = "{$excludeInFileChooser,$myExtraExcludes}"
13
- excludeInFolderSearch = "{$excludeInFolderSearch,$myExtraExcludes}"
14
-
15
- # Default editing configuration
16
- #
17
- softWrap = false
18
- softTabs = false
19
- tabSize = 4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/.travis.yml DELETED
@@ -1,36 +0,0 @@
1
- # Tell Travis CI we're using PHP
2
- language: php
3
-
4
- # PHP version used in first build configuration.
5
- php:
6
- - "hhvm"
7
- - "7.0"
8
- - "5.6"
9
- - "5.5"
10
- - "5.4"
11
- - "5.3"
12
- # - "5.2"
13
-
14
- # WordPress version used in first build configuration.
15
- env:
16
- - WP_VERSION=latest WP_MULTISITE=0
17
- - WP_VERSION=4.2 WP_MULTISITE=0
18
- - WP_VERSION=4.1 WP_MULTISITE=0
19
- - WP_VERSION=latest WP_MULTISITE=1
20
- - WP_VERSION=4.2 WP_MULTISITE=1
21
- - WP_VERSION=4.1 WP_MULTISITE=1
22
-
23
- # Clones WordPress and configures our testing environment.
24
- before_script:
25
- - bash bin/install-wp-tests.sh wordpress_test root '' localhost $WP_VERSION
26
- - export PLUGIN_SLUG=$(basename $(pwd))
27
- - cd ..
28
- - mv $PLUGIN_SLUG "/tmp/wordpress/wp-content/plugins/$PLUGIN_SLUG"
29
- - cd "/tmp/wordpress/wp-content/plugins/$PLUGIN_SLUG"
30
-
31
- script:
32
- - phpunit --coverage-text --coverage-clover=coverage.clover
33
-
34
- after_success:
35
- - wget https://scrutinizer-ci.com/ocular.phar
36
- - php ocular.phar code-coverage:upload --format=php-clover coverage.clover
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-admin-page.php DELETED
@@ -1,484 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
- }
5
- class TitanFrameworkAdminPage {
6
-
7
- private $defaultSettings = array(
8
- 'name' => '', // Name of the menu item
9
- 'title' => '', // Title displayed on the top of the admin panel
10
- 'parent' => null, // id of parent, if blank, then this is a top level menu
11
- 'id' => '', // Unique ID of the menu item
12
- 'capability' => 'manage_options', // User role
13
- 'icon' => 'dashicons-admin-generic', // Menu icon for top level menus only http://melchoyce.github.io/dashicons/
14
- 'position' => null, // Menu position. Can be used for both top and sub level menus
15
- 'use_form' => true, // If false, options will not be wrapped in a form
16
- 'desc' => '', // Description displayed below the title
17
- );
18
-
19
- public $settings;
20
- public $options = array();
21
- public $tabs = array();
22
- public $owner;
23
-
24
- public $panelID;
25
-
26
- private $activeTab = null;
27
- private static $idsUsed = array();
28
-
29
- function __construct( $settings, $owner ) {
30
- $this->owner = $owner;
31
-
32
- if ( ! is_admin() ) {
33
- return;
34
- }
35
-
36
- $this->settings = array_merge( $this->defaultSettings, $settings );
37
- // $this->options = $options;
38
- if ( empty( $this->settings['name'] ) ) {
39
- return;
40
- }
41
-
42
- if ( empty( $this->settings['title'] ) ) {
43
- $this->settings['title'] = $this->settings['name'];
44
- }
45
-
46
- if ( empty( $this->settings['id'] ) ) {
47
- $prefix = '';
48
- if ( ! empty( $this->settings['parent'] ) ) {
49
- $prefix = str_replace( ' ', '-', trim( strtolower( $this->settings['parent'] ) ) ) . '-';
50
- }
51
- $this->settings['id'] = $prefix . str_replace( ' ', '-', trim( strtolower( $this->settings['name'] ) ) );
52
- $this->settings['id'] = str_replace( '&', '-', $this->settings['id'] );
53
- }
54
-
55
- // make sure all our IDs are unique
56
- $suffix = '';
57
- while ( in_array( $this->settings['id'] . $suffix, self::$idsUsed ) ) {
58
- if ( $suffix == '' ) {
59
- $suffix = 2;
60
- } else {
61
- $suffix++;
62
- }
63
- }
64
- $this->settings['id'] .= $suffix;
65
-
66
- // keep track of all IDs used
67
- self::$idsUsed[] = $this->settings['id'];
68
-
69
- $priority = -1;
70
- if ( $this->settings['parent'] ) {
71
- $priority = intval( $this->settings['position'] );
72
- }
73
-
74
- add_action( 'admin_menu', array( $this, 'register' ), $priority );
75
- }
76
-
77
- public function createAdminPanel( $settings ) {
78
- $settings['parent'] = $this->settings['id'];
79
- return $this->owner->createAdminPanel( $settings );
80
- }
81
-
82
- public function createSampleContentPage( $settings ) {
83
- $settings['parent'] = $this->settings['id'];
84
- return $this->owner->createSampleContentPage( $settings );
85
- }
86
-
87
- public function register() {
88
- // Parent menu
89
- if ( empty( $this->settings['parent'] ) ) {
90
- $this->panelID = add_menu_page( $this->settings['name'],
91
- $this->settings['title'],
92
- $this->settings['capability'],
93
- $this->settings['id'],
94
- array( $this, 'createAdminPage' ),
95
- $this->settings['icon'],
96
- $this->settings['position'] );
97
- // Sub menu
98
- } else {
99
- $this->panelID = add_submenu_page( $this->settings['parent'],
100
- $this->settings['name'],
101
- $this->settings['title'],
102
- $this->settings['capability'],
103
- $this->settings['id'],
104
- array( $this, 'createAdminPage' ) );
105
- }
106
-
107
- add_action( 'load-' . $this->panelID, array( $this, 'saveOptions' ) );
108
-
109
- }
110
-
111
- public function getOptionNamespace() {
112
- return $this->owner->optionNamespace;
113
- }
114
-
115
-
116
- public function save_single_option( $option ) {
117
- if ( empty( $option->settings['id'] ) ) {
118
- return;
119
- }
120
-
121
- if ( isset( $_POST[ $this->getOptionNamespace() . '_' . $option->settings['id'] ] ) ) {
122
- $value = $_POST[ $this->getOptionNamespace() . '_' . $option->settings['id'] ];
123
- } else {
124
- $value = '';
125
- }
126
-
127
- $option->setValue( $value );
128
- }
129
-
130
-
131
- public function saveOptions() {
132
- if ( ! $this->verifySecurity() ) {
133
- return;
134
- }
135
-
136
- $message = '';
137
- $activeTab = $this->getActiveTab();
138
-
139
- /*
140
- * Save
141
- */
142
-
143
- if ( 'save' === $_POST['action'] ) {
144
-
145
- // we are in a tab.
146
- if ( ! empty( $activeTab ) ) {
147
- foreach ( $activeTab->options as $option ) {
148
- $this->save_single_option( $option );
149
-
150
- if ( ! empty( $option->options ) ) {
151
- foreach ( $option->options as $group_option ) {
152
- $this->save_single_option( $group_option );
153
- }
154
- }
155
- }
156
- }
157
-
158
- foreach ( $this->options as $option ) {
159
- $this->save_single_option( $option );
160
-
161
- if ( ! empty( $option->options ) ) {
162
- foreach ( $option->options as $group_option ) {
163
- $this->save_single_option( $group_option );
164
- }
165
- }
166
- }
167
-
168
- // Hook 'tf_pre_save_options_{namespace}' - action pre-saving.
169
- /**
170
- * Fired right before options are saved.
171
- *
172
- * @since 1.0
173
- *
174
- * @param TitanFrameworkAdminPage|TitanFrameworkCustomizer|TitanFrameworkMetaBox $this The container currently being saved.
175
- */
176
- $namespace = $this->getOptionNamespace();
177
- do_action( "tf_pre_save_options_{$namespace}", $this );
178
- do_action( "tf_pre_save_admin_{$namespace}", $this, $activeTab, $this->options );
179
-
180
- $this->owner->saveInternalAdminPageOptions();
181
-
182
- do_action( 'tf_save_admin_' . $this->getOptionNamespace(), $this, $activeTab, $this->options );
183
-
184
- $message = 'saved';
185
-
186
- /*
187
- * Reset
188
- */
189
-
190
- } else if ( 'reset' === $_POST['action'] ) {
191
-
192
- // We are in a tab.
193
- if ( ! empty( $activeTab ) ) {
194
- foreach ( $activeTab->options as $option ) {
195
-
196
- if ( ! empty( $option->options ) ) {
197
- foreach ( $option->options as $group_option ) {
198
-
199
- if ( ! empty( $group_option->settings['id'] ) ) {
200
- $group_option->setValue( $group_option->settings['default'] );
201
- }
202
- }
203
- }
204
-
205
- if ( empty( $option->settings['id'] ) ) {
206
- continue;
207
- }
208
-
209
- $option->setValue( $option->settings['default'] );
210
- }
211
- }
212
-
213
- foreach ( $this->options as $option ) {
214
-
215
- if ( ! empty( $option->options ) ) {
216
- foreach ( $option->options as $group_option ) {
217
-
218
- if ( ! empty( $group_option->settings['id'] ) ) {
219
- $group_option->setValue( $group_option->settings['default'] );
220
- }
221
- }
222
- }
223
-
224
- if ( empty( $option->settings['id'] ) ) {
225
- continue;
226
- }
227
-
228
- $option->setValue( $option->settings['default'] );
229
- }
230
-
231
- // Hook 'tf_pre_reset_options_{namespace}' - action pre-saving.
232
- do_action( 'tf_pre_reset_options_' . $this->getOptionNamespace(), $this );
233
- do_action( 'tf_pre_reset_admin_' . $this->getOptionNamespace(), $this, $activeTab, $this->options );
234
-
235
- $this->owner->saveInternalAdminPageOptions();
236
-
237
- do_action( 'tf_reset_admin_' . $this->getOptionNamespace(), $this, $activeTab, $this->options );
238
-
239
- $message = 'reset';
240
- }
241
-
242
- if ( 'import_mobmenu_settings' !== sanitize_text_field( $_POST['action'] ) ) {
243
-
244
- // urlencode to allow special characters in the url
245
- $url = wp_get_referer();
246
- $activeTab = $this->getActiveTab();
247
- $url = add_query_arg( 'page', urlencode( $this->settings['id'] ), $url );
248
- if ( ! empty( $activeTab ) ) {
249
- $url = add_query_arg( 'tab', urlencode( $activeTab->settings['id'] ), $url );
250
- }
251
- if ( ! empty( $message ) ) {
252
- $url = add_query_arg( 'message', $message, $url );
253
- }
254
-
255
- do_action( 'tf_admin_options_saved_' . $this->getOptionNamespace() );
256
-
257
- wp_redirect( esc_url_raw( $url ) );
258
- }
259
- }
260
-
261
- private function verifySecurity() {
262
- if ( empty( $_POST ) || empty( $_POST['action'] ) ) {
263
- return false;
264
- }
265
-
266
- $screen = get_current_screen();
267
- if ( $screen->id != $this->panelID ) {
268
- return false;
269
- }
270
-
271
- if ( ! current_user_can( $this->settings['capability'] ) ) {
272
- return false;
273
- }
274
-
275
- if ( ! check_admin_referer( $this->settings['id'], TF . '_nonce' ) ) {
276
- return false;
277
- }
278
-
279
- return true;
280
- }
281
-
282
- public function getActiveTab() {
283
- if ( ! count( $this->tabs ) ) {
284
- return '';
285
- }
286
- if ( ! empty( $this->activeTab ) ) {
287
- return $this->activeTab;
288
- }
289
-
290
- if ( empty( $_GET['tab'] ) ) {
291
- $this->activeTab = $this->tabs[0];
292
- return $this->activeTab;
293
- }
294
-
295
- foreach ( $this->tabs as $tab ) {
296
- if ( $tab->settings['id'] == $_GET['tab'] ) {
297
- $this->activeTab = $tab;
298
- return $this->activeTab;
299
- }
300
- }
301
-
302
- $this->activeTab = $this->tabs[0];
303
- return $this->activeTab;
304
- }
305
-
306
- public function createAdminPage() {
307
- do_action( 'tf_admin_page_before_' . $this->getOptionNamespace() );
308
-
309
- ?>
310
- <div class="wrap">
311
- <h2><?php echo $this->settings['title']; ?></h2>
312
- <?php
313
- if ( ! empty( $this->settings['desc'] ) ) {
314
- ?>
315
- <p class='description'><?php echo $this->settings['desc']; ?></p>
316
- <?php
317
- }
318
- ?>
319
-
320
- <div class='mm-panel-search-bar'>
321
- <input type="text" name="mm_search_settings" id="mm_search_settings" placeholder="Search Settings">
322
- <label> &lt;- Type here to find the desired settings</label>
323
- <div class="mm-search-settings-results"></div>
324
- <div class="mm-version-holder">
325
- <span><?php _e( "WP Mobile Menu Version " . WP_MOBILE_MENU_VERSION . " </br>", 'mobile-menu' ); ?></span>
326
- <a href="https://www.wpmobilemenu.com/?utm_source=wprepo-dash&utm_medium=user%20website&utm_campaign=changelog_details" target="_blank">View version details</a>
327
- </div>
328
- </div>
329
- <style>
330
- .tf-sortable .mm-lang-selector {
331
- background: url(<?php echo WP_MOBILE_MENU_PLUGIN_URL;?>/includes/assets/language-icon.png) no-repeat center top;
332
- }
333
- .tf-sortable .mm-cart-selector {
334
- background: url(<?php echo WP_MOBILE_MENU_PLUGIN_URL;?>/includes/assets/cart-icon.png) no-repeat center top;
335
- }
336
- .tf-sortable .mm-search-selector {
337
- background: url(<?php echo WP_MOBILE_MENU_PLUGIN_URL;?>/includes/assets/search-icon.png) no-repeat center top;
338
- }
339
- .tf-sortable .mm-left-menu-selector {
340
- background: url(<?php echo WP_MOBILE_MENU_PLUGIN_URL;?>/includes/assets/left-menu-icon.png) no-repeat center top;
341
- }
342
- .tf-sortable .mm-right-menu-selector {
343
- background: url(<?php echo WP_MOBILE_MENU_PLUGIN_URL;?>/includes/assets/right-menu-icon.png) no-repeat center top;
344
- }
345
- .tf-sortable .mm-logo-selector {
346
- background: url(<?php echo WP_MOBILE_MENU_PLUGIN_URL;?>/includes/assets/logo-icon.png) no-repeat center top;
347
- }
348
- .tf-sortable .mm-shop-filter-selector {
349
- background: url(<?php echo WP_MOBILE_MENU_PLUGIN_URL;?>/includes/assets/product-filter-icon.png) no-repeat center top;
350
- }
351
- </style>
352
- <div class='titan-framework-panel-wrap'>
353
-
354
- <?php
355
-
356
- if ( count( $this->tabs ) ) :
357
- ?>
358
- <h2 class="nav-tab-wrapper">
359
- <?php
360
-
361
- foreach ( $this->tabs as $tab ) {
362
- $tab->displayTab();
363
- }
364
-
365
- ?>
366
- </h2>
367
- <?php
368
- endif;
369
-
370
- if ( ! isset( $_GET['mobmenu-action'] ) || ( isset( $_GET['mobmenu-action'] ) && 'import-settings' !== $_GET['mobmenu-action'] ) ) {
371
- $activeTab = $this->getActiveTab();
372
- ?>
373
-
374
- <div class='options-container active-tab-<?php echo $activeTab->settings['id']; ?>'>
375
- <?php
376
-
377
- // Display notification if we did something.
378
- if ( ! empty( $_GET['message'] ) ) {
379
- if ( 'saved' === $_GET['message'] ) {
380
- echo TitanFrameworkAdminNotification::formNotification( __( 'Settings saved.', TF_I18NDOMAIN ), esc_html( $_GET['message'] ) );
381
- } else if ( 'reset' === $_GET['message'] ) {
382
- echo TitanFrameworkAdminNotification::formNotification( __( 'Settings reset to default.', TF_I18NDOMAIN ), esc_html( $_GET['message'] ) );
383
- }
384
- }
385
-
386
- if ( $this->settings['use_form'] ) :
387
- ?>
388
- <form method='post'>
389
- <?php
390
- endif;
391
-
392
- if ( $this->settings['use_form'] ) {
393
- // Security nonce verification.
394
- wp_nonce_field( $this->settings['id'], TF . '_nonce' );
395
- }
396
-
397
- ?>
398
- <table class='form-table'>
399
- <tbody>
400
- <?php
401
-
402
- do_action( 'tf_admin_page_table_start_' . $this->getOptionNamespace() );
403
-
404
- $activeTab = $this->getActiveTab();
405
- if ( ! empty( $activeTab ) ) {
406
-
407
- if ( ! empty( $activeTab->settings['desc'] ) ) {
408
- ?>
409
- <p class='description'><?php echo $activeTab->settings['desc']; ?></p>
410
- <?php
411
- }
412
-
413
- $activeTab->displayOptions();
414
- }
415
-
416
- foreach ( $this->options as $option ) {
417
- $option->display();
418
- }
419
-
420
- do_action( 'tf_admin_page_table_end_' . $this->getOptionNamespace() );
421
-
422
- ?>
423
- </tbody>
424
- </table>
425
- <?php
426
-
427
- if ( $this->settings['use_form'] ) :
428
- ?>
429
- </form>
430
- <?php
431
- endif;
432
-
433
- // Reset form. We use JS to trigger a reset from other buttons within the main form.
434
- // This is used by class-option-save.php.
435
- if ( $this->settings['use_form'] ) :
436
- ?>
437
- <form method='post' id='tf-reset-form'>
438
- <?php
439
- // security
440
- wp_nonce_field( $this->settings['id'], TF . '_nonce' );
441
- ?>
442
- <input type='hidden' name='action' value='reset'/>
443
- </form>
444
- <?php
445
- endif;
446
-
447
- do_action( 'tf_admin_page_end_' . $this->getOptionNamespace() );
448
-
449
- ?>
450
- <div class='options-container active-tab-<?php echo $activeTab->settings['id']; ?>'>
451
- </div>
452
- </div>
453
- </div>
454
- </div>
455
- <?php
456
-
457
- do_action( 'tf_admin_page_after_' . $this->getOptionNamespace() );
458
- } else {
459
- do_action( 'mobile_menu_importer_page', $this->settings['id'] );
460
- }
461
- }
462
-
463
- public function createTab( $settings ) {
464
- $obj = new TitanFrameworkAdminTab( $settings, $this );
465
- $this->tabs[] = $obj;
466
-
467
- do_action( 'tf_admin_tab_created_' . $this->getOptionNamespace(), $obj );
468
-
469
- return $obj;
470
- }
471
-
472
- public function createOption( $settings ) {
473
- if ( ! apply_filters( 'tf_create_option_continue_' . $this->getOptionNamespace(), true, $settings ) ) {
474
- return null;
475
- }
476
-
477
- $obj = TitanFrameworkOption::factory( $settings, $this );
478
- $this->options[] = $obj;
479
-
480
- do_action( 'tf_create_option_' . $this->getOptionNamespace(), $obj );
481
-
482
- return $obj;
483
- }
484
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-customizer.php DELETED
@@ -1,403 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
- }
5
- class TitanFrameworkCustomizer {
6
-
7
- private $defaultSettings = array(
8
- 'name' => '', // Name of the menu item
9
- // 'parent' => null, // slug of parent, if blank, then this is a top level menu
10
- 'id' => '', // Unique ID of the menu item
11
- 'panel' => '', // The Name of the panel to create
12
- 'panel_desc' => '', // The description to display on the panel
13
- 'panel_id' => '', // The panel ID to create / add to. If this is blank & `panel` is given, this will be generated
14
- 'capability' => 'edit_theme_options', // User role
15
- // 'icon' => 'dashicons-admin-generic', // Menu icon for top level menus only
16
- 'desc' => '', // Description
17
- 'position' => 30,// Menu position for top level menus only
18
- );
19
-
20
- public $settings;
21
- public $options = array();
22
- public $owner;
23
-
24
- // Makes sure we only load live previewing CSS only once
25
- private static $namespacesWithPrintedPreviewCSS = array();
26
-
27
- function __construct( $settings, $owner ) {
28
- $this->owner = $owner;
29
-
30
- $this->settings = array_merge( $this->defaultSettings, $settings );
31
-
32
- if ( empty( $this->settings['name'] ) ) {
33
- $this->settings['name'] = __( 'More Options', TF_I18NDOMAIN );
34
- }
35
-
36
- if ( empty( $this->settings['id'] ) ) {
37
- $this->settings['id'] = $this->owner->optionNamespace . '_' . str_replace( ' ', '-', trim( strtolower( $this->settings['name'] ) ) );
38
- }
39
-
40
- if ( empty( $this->settings['panel_id'] ) && ! empty( $this->settings['panel'] ) ) {
41
- $this->settings['panel_id'] = $this->owner->optionNamespace . '_' . str_replace( ' ', '-', trim( strtolower( $this->settings['panel'] ) ) );
42
- }
43
-
44
- // Register the customizer control.
45
- add_action( 'customize_register', array( $this, 'register' ) );
46
-
47
- // Enqueue required customizer styles & scripts.
48
- tf_add_action_once( 'customize_controls_enqueue_scripts', array( $this, 'loadUploaderScript' ) );
49
-
50
- // Clear local storage, we use it for remembering modified customizer values.
51
- tf_add_action_once( 'customize_controls_print_footer_scripts', array( $this, 'initLocalStorage' ) );
52
-
53
- // Generate the custom CSS for live previews.
54
- tf_add_action_once( 'wp_ajax_tf_generate_customizer_css', array( $this, 'ajaxGenerateCustomizerCSS' ) );
55
-
56
- // Modify the values of the options for the generation of CSS with the values from the customizer $_POST.
57
- global $wp_customize;
58
- if ( isset( $wp_customize ) ) {
59
- tf_add_filter_once( 'tf_pre_get_value_' . $this->owner->optionNamespace, array( $this, 'useCustomizerModifiedValue' ), 10, 3 );
60
- }
61
- }
62
-
63
- public function loadUploaderScript() {
64
- wp_enqueue_media();
65
- wp_enqueue_script( 'tf-theme-customizer-serialize', TitanFramework::getURL( '../js/min/serialize-min.js', __FILE__ ) );
66
- wp_enqueue_style( 'tf-admin-theme-customizer-styles', TitanFramework::getURL( '../css/admin-theme-customizer-styles.css', __FILE__ ) );
67
- }
68
-
69
- public function getID() {
70
- return $this->settings['id'];
71
- }
72
-
73
-
74
- /**
75
- * Ajax handler for generating CSS based on the existing options with values changed to
76
- * match the customizer modified values.
77
- *
78
- * @since 1.9.2
79
- *
80
- * @return void
81
- */
82
- public function ajaxGenerateCustomizerCSS() {
83
-
84
- // This value is passed back to the live preview ajax handler in $this->livePreviewMainScript()
85
- $generated = array(
86
- 'css' => '',
87
- );
88
-
89
- foreach ( TitanFramework::getAllInstances() as $framework ) {
90
-
91
- // Modify the values of the options for the generation of CSS with the values from the customizer $_POST.
92
- $namespace = $framework->optionNamespace;
93
- add_filter( "tf_pre_get_value_{$namespace}", array( $this, 'useCustomizerModifiedValue' ), 10, 3 );
94
-
95
- // Generate our new CSS based on the customizer values
96
- $css = $framework->cssInstance->generateCSS();
97
-
98
- $generated['css'] .= $css;
99
-
100
- /**
101
- * Allow options to add customizer live preview parameters. The tf_generate_customizer_preview_js hook allows for manipulating these values.
102
- *
103
- * @since 1.9.2
104
- *
105
- * @see tf_generate_customizer_preview_js
106
- */
107
- $generated = apply_filters( "tf_generate_customizer_preview_css_{$namespace}", $generated );
108
-
109
- }
110
-
111
- wp_send_json_success( $generated );
112
- }
113
-
114
-
115
- /**
116
- * Override the getOption value with the customizer value which comes from the $_POST array
117
- *
118
- * @since 1.9.2
119
- *
120
- * @param mixed $value The value of the option.
121
- * @param int $postID The post ID if there is one (always null in this case).
122
- * @param TitanFrameworkOption $option The option being parsed.
123
- *
124
- * @return mixed The new value
125
- *
126
- * @see tf_pre_get_value_{namespace}
127
- */
128
- public function useCustomizerModifiedValue( $value, $postID, $option ) {
129
- if ( empty( $_POST ) ) {
130
- return $value;
131
- }
132
- if ( ! is_array( $_POST ) ) {
133
- return $value;
134
- }
135
- if ( array_key_exists( $option->getID(), $_POST ) ) {
136
- return $_POST[ $option->getID() ];
137
- }
138
-
139
- if ( ! empty( $_POST['customized'] ) ) {
140
- $customizedSettings = (array) json_decode( stripslashes( $_POST['customized'] ) );
141
- if ( is_array( $customizedSettings ) && ! empty( $customizedSettings ) ) {
142
- if ( array_key_exists( $option->getID(), $customizedSettings ) ) {
143
- return $customizedSettings[ $option->getID() ];
144
- }
145
- }
146
- }
147
- return $value;
148
- }
149
-
150
-
151
- /**
152
- * Prints the script that clears the JS local storage when customizer loads, this ensures we start fresh.
153
- * Use localStorage so we can still use values when the customizer refreshes.
154
- *
155
- * @since 1.9.2
156
- *
157
- * @return void
158
- */
159
- public function initLocalStorage() {
160
- ?>
161
- <script>
162
- if ( typeof localStorage !== 'undefined' ) {
163
- localStorage.clear();
164
- }
165
- </script>
166
- <?php
167
- }
168
-
169
-
170
- /**
171
- * Prints the script that uses ajax to adjust the live customizer CSS.
172
- * Use localStorage so we can still use values when the customizer refreshes.
173
- *
174
- * @since 1.9.2
175
- *
176
- * @return void
177
- */
178
- public function livePreviewMainScript() {
179
- ?>
180
- <script>
181
- window.tf_refresh_css = function() {
182
- if ( typeof localStorage !== 'undefined' ) {
183
-
184
- // Using localStorage directly as an object-value dictionary doesn't work in FF, create a new object
185
- var localStorageData = {}, keys = Object.keys( localStorage );
186
- for ( var i in keys ) {
187
- localStorageData[ keys[ i ] ] = localStorage.getItem( keys[ i ] );
188
- }
189
-
190
- wp.ajax.send( 'tf_generate_customizer_css', {
191
- success: function( data ) {
192
-
193
- // Add the modified CSS Titan has generated from the preview values.
194
- var style = document.querySelector('style#tf_live_preview');
195
- if ( ! style ) {
196
- var style = document.createElement('STYLE');
197
- style.setAttribute( 'id', 'tf_live_preview' );
198
- style.innerHTML = data.css;
199
- document.head.appendChild( style );
200
- } else {
201
- style.innerHTML = data.css;
202
- }
203
-
204
- <?php
205
- /**
206
- * Render additional Javascript code for handling different data received for
207
- * live previewing
208
- *
209
- * @since 1.9.2
210
- *
211
- * @see $this->ajaxGenerateCustomizerCSS()
212
- */
213
- do_action( 'tf_generate_customizer_preview_js' );
214
- ?>
215
- },
216
- data: localStorageData
217
- });
218
-
219
- }
220
- };
221
- </script>
222
- <?php
223
- }
224
-
225
-
226
- /**
227
- * Prints the script PER option that handles customizer option changes for live previews
228
- *
229
- * @since 1.0
230
- *
231
- * @return void
232
- */
233
- public function livePreview() {
234
-
235
- $printStart = false;
236
- foreach ( $this->options as $option ) {
237
-
238
- if ( empty( $option->settings['css'] ) && empty( $option->settings['livepreview'] ) ) {
239
- continue;
240
- }
241
-
242
- // Print the starting script tag.
243
- if ( ! $printStart ) {
244
- $printStart = true;
245
- ?>
246
- <script>
247
- jQuery(document).ready(function($) {
248
- <?php
249
- }
250
-
251
- ?>
252
- wp.customize( '<?php echo $option->getID() ?>', function( v ) {
253
- v.bind( function( value ) {
254
- <?php
255
-
256
- if ( empty( $option->settings['livepreview'] ) ) {
257
-
258
- /**
259
- * If css parameter is given and there is no custom livepreview,
260
- * we can simulate live previewing using just the css parameter.
261
- */
262
- ?>
263
- if ( typeof localStorage !== 'undefined' ) {
264
- localStorage.setItem( '<?php echo $option->getID() ?>', value );
265
- }
266
- window.tf_refresh_css();
267
- <?php
268
-
269
- } else {
270
-
271
- /**
272
- * If the livepreview parameter is given, use that. This is the original behavior.
273
- */
274
- // Some options may want to insert custom jQuery code before manipulation of live preview/
275
- if ( ! empty( $option->settings['id'] ) ) {
276
- do_action( 'tf_livepreview_pre_' . $this->owner->optionNamespace, $option->settings['id'], $option->settings['type'], $option );
277
- }
278
-
279
- echo $option->settings['livepreview'];
280
-
281
- // Some options may want to insert custom jQuery code after manipulation of live preview.
282
- if ( ! empty( $option->settings['id'] ) ) {
283
- do_action( 'tf_livepreview_post_' . $this->owner->optionNamespace, $option->settings['id'], $option->settings['type'], $option );
284
- }
285
- }
286
-
287
- ?>
288
- } );
289
- } );
290
- <?php
291
-
292
- }
293
-
294
- // Print the ending script tag.
295
- if ( $printStart ) {
296
- ?>
297
- });
298
- </script>
299
- <?php
300
- }
301
- }
302
-
303
-
304
- /**
305
- * Prints out CSS styles for the current namespace refresh previewing
306
- *
307
- * @since 1.3
308
- *
309
- * @return void
310
- *
311
- * @see self::$namespacesWithPrintedPreviewCSS
312
- */
313
- public function printPreviewCSS() {
314
-
315
- // Only print the styles once per namespace
316
- if ( ! in_array( $this->owner->optionNamespace, self::$namespacesWithPrintedPreviewCSS ) ) {
317
- self::$namespacesWithPrintedPreviewCSS[] = $this->owner->optionNamespace;
318
-
319
- echo '<style id="titan-preview-' . esc_attr( $this->owner->optionNamespace ) . '">';
320
- echo $this->owner->cssInstance->generateCSS();
321
- echo '</style>';
322
- }
323
- }
324
-
325
- public function register( $wp_customize ) {
326
- add_action( 'wp_head', array( $this, 'printPreviewCSS' ), 1000 );
327
-
328
- // Create the panel
329
- if ( ! empty( $this->settings['panel_id'] ) ) {
330
- $existingPanels = $wp_customize->panels();
331
-
332
- if ( ! array_key_exists( $this->settings['panel_id'], $existingPanels ) ) {
333
- $wp_customize->add_panel( $this->settings['panel_id'], array(
334
- 'title' => $this->settings['panel'],
335
- 'priority' => $this->settings['position'],
336
- 'capability' => $this->settings['capability'],
337
- 'description' => ! empty( $this->settings['panel_desc'] ) ? $this->settings['panel_desc'] : '',
338
- ) );
339
- }
340
- }
341
-
342
- // Create the section
343
- $existingSections = $wp_customize->sections();
344
-
345
- if ( ! array_key_exists( $this->settings['id'], $existingSections ) ) {
346
- $wp_customize->add_section( $this->settings['id'], array(
347
- 'title' => $this->settings['name'],
348
- 'priority' => $this->settings['position'],
349
- 'description' => $this->settings['desc'],
350
- 'capability' => $this->settings['capability'],
351
- 'panel' => empty( $this->settings['panel_id'] ) ? '' : $this->settings['panel_id'],
352
- ) );
353
- }
354
-
355
- // Unfortunately we have to call each option's register from here
356
- foreach ( $this->options as $index => $option ) {
357
- if ( ! empty( $option->settings['id'] ) ) {
358
-
359
- $namespace = $this->owner->optionNamespace;
360
- $option_type = $option->settings['type'];
361
- $transport = empty( $option->settings['livepreview'] ) && empty( $option->settings['css'] ) ? 'refresh' : 'postMessage';
362
-
363
- // Allow options to override the transport parameter
364
- if ( ! empty( $option->settings['transport'] ) ) {
365
- $transport = $option->settings['transport'];
366
- }
367
-
368
- /**
369
- * Allow options to override the transport mode of an option in the customizer
370
- *
371
- * @since 1.9.2
372
- */
373
- $transport = apply_filters( "tf_customizer_transport_{$option_type}_{$namespace}", $transport, $option );
374
-
375
- $wp_customize->add_setting( $option->getID(), array(
376
- 'default' => $option->settings['default'],
377
- 'transport' => $transport,
378
- 'sanitize_callback' => $option->settings['sanitize_callback'], // Sanitize callback function can be used before storing to DB
379
- ) );
380
- }
381
-
382
- // We add the index here, this will be used to order the controls because of this minor bug:
383
- // https://core.trac.wordpress.org/ticket/20733
384
- $option->registerCustomizerControl( $wp_customize, $this, $index + 100 );
385
- }
386
-
387
- add_action( 'wp_footer', array( $this, 'livePreview' ) );
388
- tf_add_action_once( 'wp_footer', array( $this, 'livePreviewMainScript' ) );
389
- }
390
-
391
- public function createOption( $settings ) {
392
- if ( ! apply_filters( 'tf_create_option_continue_' . $this->owner->optionNamespace, true, $settings ) ) {
393
- return null;
394
- }
395
-
396
- $obj = TitanFrameworkOption::factory( $settings, $this );
397
- $this->options[] = $obj;
398
-
399
- do_action( 'tf_create_option_' . $this->owner->optionNamespace, $obj );
400
-
401
- return $obj;
402
- }
403
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-option-color.php DELETED
@@ -1,177 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
- }
5
- class TitanFrameworkOptionColor extends TitanFrameworkOption {
6
-
7
- /**
8
- * Default settings
9
- * @var array
10
- */
11
- public $defaultSecondarySettings = array(
12
-
13
- /**
14
- * (Optional) If true, an additional control will become available in the color picker for adjusting the alpha/opacity value of the color. You can get rgba colors with the option.
15
- *
16
- * @since 1.9
17
- * @var boolean
18
- */
19
- 'alpha' => false,
20
- );
21
-
22
- function __construct( $settings, $owner ) {
23
- parent::__construct( $settings, $owner );
24
- tf_add_action_once( 'admin_enqueue_scripts', array( $this, 'enqueueColorPickerScript' ) );
25
- tf_add_action_once( 'admin_footer', array( $this, 'startColorPicker' ) );
26
- }
27
-
28
-
29
- /**
30
- * Display for options and meta
31
- *
32
- * @since 1.0
33
- *
34
- * @return void
35
- */
36
- public function display() {
37
-
38
- $this->echoOptionHeader();
39
-
40
- printf( '<input class="tf-colorpicker" type="text" name="%s" id="%s" value="%s" data-default-color="%s" data-custom-width="0" %s/>',
41
- esc_attr( $this->getID() ),
42
- esc_attr( $this->getID() ),
43
- esc_attr( $this->getValue() ),
44
- esc_attr( $this->getValue() ),
45
- ! empty( $this->settings['alpha'] ) ? "data-alpha='true'" : '' // Used by wp-color-picker-alpha
46
- );
47
-
48
- $this->echoOptionFooter();
49
- }
50
-
51
-
52
- /**
53
- * Enqueue the colorpicker scripts
54
- *
55
- * @since 1.9
56
- *
57
- * @return void
58
- */
59
- public function enqueueColorPickerScript($hook) {
60
-
61
- if ( $hook == 'toplevel_page_mobile-menu-options' ) {
62
- wp_enqueue_script( 'wp-color-picker' );
63
- wp_enqueue_style( 'wp-color-picker' );
64
- wp_enqueue_script( 'wp-color-picker-alpha', TitanFramework::getURL( '../js/min/wp-color-picker-alpha-min.js', __FILE__ ), array( 'wp-color-picker' ), TF_VERSION );
65
- }
66
- }
67
-
68
-
69
- /**
70
- * Load the javascript to init the colorpicker
71
- *
72
- * @since 1.9
73
- *
74
- * @return void
75
- */
76
- public function startColorPicker($hook) {
77
-
78
-
79
- ?>
80
- <script>
81
-
82
- wpColorPicker_i18n = {"clear":"Clear","defaultString":"Default","pick":"Select Color","current":"Current Color"};
83
- wpColorPickerL10n = wpColorPicker_i18n;
84
-
85
- jQuery(document).ready(function() {
86
- 'use strict';
87
- if ( typeof jQuery.fn.wpColorPicker !== 'undefined' ) {
88
- jQuery('.tf-colorpicker').wpColorPicker();
89
- }
90
- });
91
- </script>
92
-
93
- <?php
94
- }
95
-
96
-
97
- /**
98
- * Display for theme customizer
99
- *
100
- * @since 1.0
101
- *
102
- * @param WP_Customize $wp_customize
103
- * @param TitanFrameworkCustomizer $section
104
- * @param int $priority The location/priority of this option inside the section.
105
- *
106
- * @return void
107
- */
108
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
109
- $wp_customize->add_control( new TitanFrameworkOptionColorControl( $wp_customize, $this->getID(), array(
110
- 'label' => $this->settings['name'],
111
- 'section' => $section->getID(),
112
- 'settings' => $this->getID(),
113
- 'description' => $this->settings['desc'],
114
- 'priority' => $priority,
115
- 'alpha' => $this->settings['alpha'],
116
- ) ) );
117
- }
118
- }
119
-
120
-
121
- add_action( 'customize_register', 'registerTitanFrameworkOptionColorControl', 1 );
122
-
123
-
124
- function registerTitanFrameworkOptionColorControl() {
125
- class TitanFrameworkOptionColorControl extends WP_Customize_Color_Control {
126
-
127
- public $alpha;
128
-
129
- function __construct( $manager, $id, $args = array() ) {
130
- parent::__construct( $manager, $id, $args );
131
- tf_add_action_once( 'customize_controls_print_footer_scripts', array( $this, 'printOpacityOverrideTemplate' ) );
132
- }
133
-
134
- public function enqueue() {
135
- parent::enqueue();
136
- wp_enqueue_script( 'wp-color-picker-alpha', TitanFramework::getURL( '../js/min/wp-color-picker-alpha-min.js', __FILE__ ), array( 'wp-color-picker' ), TF_VERSION );
137
- }
138
-
139
- public function to_json() {
140
- parent::to_json();
141
- $this->json['alpha'] = $this->alpha;
142
- }
143
-
144
- public function printOpacityOverrideTemplate() {
145
-
146
- // Get the template for the color control, don't print it out.
147
- ob_start();
148
- $this->content_template();
149
- $contents = ob_get_contents();
150
- ob_end_clean();
151
-
152
- // Modify the template to include our alpha parameter.
153
- $contents = str_replace( '<input', '<input {{ alpha }} data-custom-width="0"', $contents );
154
- ?>
155
- <script type="text/html" id="tmpl-customize-control-color-content-tf">
156
- <#
157
- var alpha = '';
158
- if ( data.alpha ) {
159
- alpha = ' data-alpha=true'; // Quotes added automatically.
160
- }
161
- #>
162
- <?php echo $contents ?>
163
- </script>
164
- <?php
165
-
166
- // Override the original color content template. Don't use jQuery here since it will be too late
167
- // We're sure that the templates have already been printed out
168
- // We can't modify the original output, so we just adjust the ID so that we won't use the original one
169
- ?>
170
- <script>
171
- document.querySelector("#tmpl-customize-control-color-content").setAttribute("id", "tmpl-customize-control-color-content-old");
172
- document.querySelector("#tmpl-customize-control-color-content-tf").setAttribute("id", "tmpl-customize-control-color-content");
173
- </script>
174
- <?php
175
- }
176
- }
177
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-option-custom.php DELETED
@@ -1,94 +0,0 @@
1
- <?php
2
- /**
3
- * Custom option
4
- *
5
- * @package Titan Framework
6
- */
7
-
8
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly.
9
- }
10
-
11
- /**
12
- * Custom option class
13
- *
14
- * @since 1.0
15
- */
16
- class TitanFrameworkOptionCustom extends TitanFrameworkOption {
17
-
18
- /**
19
- * Default settings specific to this option
20
- * @var array
21
- */
22
- public $defaultSecondarySettings = array(
23
- 'custom' => '', // Custom HTML
24
- );
25
-
26
- /**
27
- * Display for options and meta
28
- */
29
- public function display() {
30
- if ( ! empty( $this->settings['name'] ) ) {
31
-
32
- $this->echoOptionHeader();
33
- echo $this->settings['custom'];
34
- $this->echoOptionFooter( false );
35
-
36
- } else {
37
-
38
- $this->echoOptionHeaderBare();
39
- echo $this->settings['custom'];
40
- $this->echoOptionFooterBare( false );
41
-
42
- }
43
- }
44
-
45
- /**
46
- * Display for theme customizer
47
- *
48
- * @param WP_Customize $wp_customize The customizer object.
49
- * @param TitanFrameworkCustomizer $section The customizer section.
50
- * @param int $priority The display priority of the control.
51
- */
52
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
53
- $wp_customize->add_control( new TitanFrameworkOptionCustomControl( $wp_customize, $this->getID(), array(
54
- 'label' => $this->settings['name'],
55
- 'section' => $section->settings['id'],
56
- 'type' => 'select',
57
- 'settings' => $this->getID(),
58
- 'priority' => $priority,
59
- 'custom' => $this->settings['custom'],
60
- ) ) );
61
- }
62
- }
63
-
64
-
65
- // We create a new control for the theme customizer.
66
- add_action( 'customize_register', 'register_titan_framework_option_custom_control', 1 );
67
-
68
- /**
69
- * Register the customizer control
70
- */
71
- function register_titan_framework_option_custom_control() {
72
-
73
- /**
74
- * Custom option class
75
- *
76
- * @since 1.0
77
- */
78
- class TitanFrameworkOptionCustomControl extends WP_Customize_Control {
79
-
80
- /**
81
- * The custom content control
82
- *
83
- * @var bool
84
- */
85
- public $custom;
86
-
87
- /**
88
- * Renders the control
89
- */
90
- public function render_content() {
91
- echo $this->custom;
92
- }
93
- }
94
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-option-edd-license.php DELETED
@@ -1,489 +0,0 @@
1
- <?php
2
- /**
3
- * EDD License Activation.
4
- *
5
- * This class is meant to handle Easy Digital Downloads licenses.
6
- * When a license is entered, it's checked with the server through
7
- * the EDD API. If the license is valid it is activated and
8
- * the activation result is saved as a transient.
9
- *
10
- * As the licensed can be deactivated directly from the server,
11
- * a regular check needs to be done on the license in order to make sure
12
- * that the status is up to date.
13
- *
14
- * The required option parameters for the activator to work are:
15
- *
16
- * - (string) $server URL of the shop where the license was generated
17
- * - (string) $item_name The name of the item as set in the shop
18
- *
19
- * @author Julien Liabeuf <julien@liabeuf.fr>
20
- * @link http://julienliabeuf.com
21
- */
22
-
23
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
24
- }
25
- if ( class_exists( 'TitanFrameworkOption' ) ) {
26
-
27
- class TitanFrameworkOptionEddLicense extends TitanFrameworkOption {
28
-
29
- public $defaultSecondarySettings = array(
30
- 'placeholder' => '',
31
- 'is_password' => false,
32
- 'server' => false,
33
- // Whether or not a license number is mandatory for checking for new version. Without license number it still won't be possible to update though. Users will just see that there is a new version available.
34
- 'update_check_license_required' => false,
35
- 'wp_override' => false,
36
- );
37
-
38
- /**
39
- * Constructor
40
- *
41
- * @since 1.7.1
42
- *
43
- * @param array $settings Option settings
44
- * @param string $owner
45
- */
46
- function __construct( $settings, $owner ) {
47
- parent::__construct( $settings, $owner );
48
-
49
- add_action( 'admin_init', array( $this, 'checkUpdates' ), 10, 0 );
50
- add_action( 'tf_create_option_' . $this->getOptionNamespace(), array( $this, 'activateLicense' ) );
51
- }
52
-
53
- /**
54
- * Activated the given EDD license.
55
- *
56
- * @return void
57
- * @since 1.7.1
58
- */
59
- public function activateLicense( $option ) {
60
- if ( $this->settings['id'] != $option->settings['id'] ) {
61
- return;
62
- }
63
-
64
- /* Get the license */
65
- $license = esc_attr( $this->getValue() );
66
-
67
- /* License ID */
68
- $key = substr( md5( $license ), 0, 10 );
69
-
70
- /* If the license is set we can handle activation. */
71
- if ( strlen( $license ) > 0 ) {
72
-
73
- /* First of all we check if the user requested a manual activation */
74
- if ( isset( $_GET['eddactivate'] ) && '1' == $_GET['eddactivate'] ) {
75
-
76
- global $pagenow;
77
-
78
- if ( isset( $_GET ) ) {
79
- $get = (array) $_GET;
80
- }
81
-
82
- if ( isset( $get['eddactivate'] ) ) {
83
- unset( $get['eddactivate'] );
84
- }
85
-
86
- $this->check( $license, 'activate_license' );
87
-
88
- /* Redirect to the settings page without the eddactivate parameter (otherwise it's used in all tabs links) */
89
- wp_redirect( wp_sanitize_redirect( add_query_arg( $get, admin_url( $pagenow ) ) ) );
90
- }
91
-
92
- /* First activation of the license. */
93
- if ( false == get_transient( "tf_edd_license_try_$key" ) ) {
94
- $this->check( $license, 'activate_license' );
95
- }
96
- }
97
-
98
- }
99
-
100
- /**
101
- * Display for options and meta
102
- */
103
- public function display() {
104
-
105
- /* Get the license */
106
- $license = esc_attr( $this->getValue() );
107
-
108
- /* License ID */
109
- $key = substr( md5( $license ), 0, 10 );
110
-
111
- $this->echoOptionHeader();
112
-
113
- printf( '<input class="regular-text" name="%s" placeholder="%s" id="%s" type="%s" value="%s" />',
114
- $this->getID(),
115
- $this->settings['placeholder'],
116
- $this->getID(),
117
- $this->settings['is_password'] ? 'password' : 'text',
118
- $license );
119
-
120
- /* If the license is set, we display its status and check it if necessary. */
121
- if ( strlen( $license ) > 0 ) {
122
-
123
- /* Get the license activation status */
124
- $status = get_transient( "tf_edd_license_status_$key" );
125
-
126
- /* If no transient is found or it is expired to check the license again. */
127
- if ( false == $status ) {
128
- $status = $this->check( $license );
129
- }
130
-
131
- switch ( $status ) {
132
-
133
- case 'valid':
134
- ?><p class="description"><?php esc_html_e( 'Your license is valid and active.', TF_I18NDOMAIN ); ?></p><?php
135
- break;
136
-
137
- case 'invalid':
138
- ?><p class="description"><?php esc_html_e( 'Your license is invalid.', TF_I18NDOMAIN ); ?></p><?php
139
- break;
140
-
141
- case 'inactive':
142
-
143
- global $pagenow;
144
-
145
- if ( isset( $_GET ) ) {
146
- $get = (array) $_GET;
147
- }
148
-
149
- $get['eddactivate'] = true;
150
- $url = esc_url( add_query_arg( $get, admin_url( $pagenow ) ) );
151
- ?>
152
- <a href="<?php echo $url; ?>" class="button-secondary"><?php esc_html_e( 'Activate', TF_I18NDOMAIN ); ?></a>
153
- <p class="description"><?php esc_html_e( 'Your license is valid but inactive. Click the button above to activate it.', TF_I18NDOMAIN ); ?></p><?php
154
-
155
- break;
156
-
157
- case 'no_response':
158
- ?><p class="description"><?php esc_html_e( 'The remote server did not return a valid response. You can retry by hitting the &laquo;Save&raquo; button again.', TF_I18NDOMAIN ); ?></p><?php
159
- break;
160
-
161
- }
162
- } else {
163
- ?><p class="description"><?php esc_html_e( 'Entering your license key is mandatory to get the product updates.', TF_I18NDOMAIN ); ?></p><?php
164
- }
165
-
166
- $this->echoOptionFooter();
167
-
168
- }
169
-
170
- /*
171
- * Display for theme customizer
172
- */
173
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
174
- /**
175
- * @var WP_Customize_Manager $wp_customize
176
- */
177
- $wp_customize->add_control( new TitanFrameworkCustomizeControl( $wp_customize, $this->getID(), array(
178
- 'label' => $this->settings['name'],
179
- 'section' => $section->settings['id'],
180
- 'settings' => $this->getID(),
181
- 'description' => $this->settings['desc'],
182
- 'priority' => $priority,
183
- ) ) );
184
- }
185
-
186
- /**
187
- * Check license status.
188
- *
189
- * The function makes an API call to the remote server and
190
- * requests the license status.
191
- *
192
- * This function check (only) the license status or activate it
193
- * depending on the $action parameter. The license status is then
194
- * stored as a transient, and if an activation was made, an activation
195
- * transient is also set in order to avoid activating when
196
- * checking only is required.
197
- *
198
- * @param string $license License key
199
- * @param string $action Action to take (check_license or activate_license)
200
- * @return string Current license status
201
- */
202
- public function check( $license = '', $action = 'check_license' ) {
203
-
204
- if ( empty( $license ) ) {
205
- return false;
206
- }
207
-
208
- /* Sanitize the key. */
209
- $license = trim( sanitize_key( $license ) );
210
-
211
- /* Set the transients lifetime. */
212
- $status_lifetime = apply_filters( 'tf_edd_license_status_lifetime', 48 * 60 * 60 ); // Default is set to two days
213
- $activation_lifetime = apply_filters( 'tf_edd_license_activation_lifetime', 365 * 24 * 60 * 60 ); // Default is set to one year
214
-
215
- /* Prepare the data to send with the API request. */
216
- $api_params = array(
217
- 'edd_action' => $action,
218
- 'license' => $license,
219
- 'url' => home_url(),
220
- );
221
-
222
- /**
223
- * Set the item ID or name. ID has the highest priority
224
- *
225
- * @since 1.7.4
226
- */
227
- if ( isset( $this->settings['item_id'] ) ) {
228
- $api_params['item_id'] = urlencode( $this->settings['item_id'] );
229
- } elseif ( isset( $this->settings['item_name'] ) ) {
230
- $api_params['item_name'] = urlencode( $this->settings['item_name'] );
231
- }
232
-
233
- if ( ! isset( $api_params['item_id'] ) && ! isset( $api_params['item_name'] ) ) {
234
- return false;
235
- }
236
-
237
- /* Call the API. */
238
- $response = wp_remote_get( add_query_arg( $api_params, $this->settings['server'] ), array( 'timeout' => 15, 'sslverify' => false ) );
239
-
240
- /* Check for request error. */
241
- if ( is_wp_error( $response ) ) {
242
- return false;
243
- }
244
-
245
- /* Decode license data. */
246
- $license_data = json_decode( wp_remote_retrieve_body( $response ) );
247
-
248
- /* If the remote server didn't return a valid response we just return an error and don't set any transients so that activation will be tried again next time the option is saved */
249
- if ( ! is_object( $license_data ) || empty( $license_data ) || ! isset( $license_data->license ) ) {
250
- return 'no_response';
251
- }
252
-
253
- /* License ID */
254
- $key = substr( md5( $license ), 0, 10 );
255
-
256
- if ( 'activate_license' == $action ) {
257
-
258
- /**
259
- * If the license is invalid we can set all transients right away.
260
- * The user will need to modify its license anyways so there is no risk
261
- * of preventing further activation attempts.
262
- */
263
- if ( 'invalid' == $license_data->license ) {
264
- set_transient( "tf_edd_license_status_$key", 'invalid', $status_lifetime );
265
- set_transient( "tf_edd_license_try_$key", true, $activation_lifetime );
266
- return 'invalid';
267
- }
268
-
269
- /**
270
- * Because sometimes EDD returns a "success" status even though the license hasn't been activated,
271
- * we need to check the license status after activating it. Only then we can safely set the
272
- * transients and avoid further activation attempts issues.
273
- *
274
- * @link https://github.com/gambitph/Titan-Framework/issues/203
275
- */
276
- $status = $this->check( $license );
277
-
278
- if ( in_array( $status, array( 'valid', 'inactive' ) ) ) {
279
-
280
- /* We set the "try" transient only as the status will be set by the second instance of this method when we check the license status */
281
- set_transient( "tf_edd_license_try_$key", true, $activation_lifetime );
282
-
283
- }
284
- } else {
285
-
286
- /* Set the status transient. */
287
- set_transient( "tf_edd_license_status_$key", $license_data->license, $status_lifetime );
288
-
289
- }
290
-
291
- /* Return the license status. */
292
- return $license_data->license;
293
-
294
- }
295
-
296
- /**
297
- * Check for plugin updates.
298
- *
299
- * This method is called throughout the entire WordPress admin
300
- * and uses the EDD plugin updater class to check for new updates.
301
- *
302
- * @since 1.7.2
303
- * @return boolean True if an update check was done, false otherwise
304
- */
305
- public function checkUpdates() {
306
-
307
- /* Check if we have all the required parameters. */
308
- if ( ! isset( $this->settings['server'] ) || ! isset( $this->settings['name'] ) || ! isset( $this->settings['file'] ) ) {
309
- return false;
310
- }
311
-
312
- /* Make sure the file actually exists. */
313
- if ( ! file_exists( $this->settings['file'] ) ) {
314
- return false;
315
- }
316
-
317
- /* Retrieve license key */
318
- $license_key = trim( esc_attr( $this->getValue() ) );
319
-
320
- // Abort if license key is empty and one is required for update check
321
- if ( empty( $license_key ) && true === $this->settings['update_check_license_required'] ) {
322
- return false;
323
- }
324
-
325
- /* Check what type of item the file is */
326
- $item_is = $this->item_is( $this->settings['file'] );
327
-
328
- /* Item name */
329
- $item_name = isset( $this->settings['item_name'] ) ? sanitize_text_field( $this->settings['item_name'] ) : false;
330
- $item_id = isset( $this->settings['item_id'] ) ? (int) $this->settings['item_id'] : false;
331
-
332
- /* Prepare updater arguments */
333
- $args = array(
334
- 'license' => $license_key, // Item license key
335
- );
336
-
337
- /* Add license ID or name for identification */
338
- if ( false != $item_id ) {
339
- $args['item_id'] = $item_id;
340
- } elseif ( false != $item_name ) {
341
- $args['item_name'] = $item_name;
342
- }
343
-
344
- /* Load the plugin updater class and add required parameters. */
345
- if ( 'plugin' == $item_is ) {
346
-
347
- if ( ! class_exists( 'TITAN_EDD_SL_Plugin_Updater' ) ) {
348
- include( TF_PATH . 'inc/edd-licensing/EDD_SL_Plugin_Updater.php' );
349
- }
350
-
351
- $plugin = get_plugin_data( $this->settings['file'] );
352
- $args['version'] = $plugin['Version'];
353
- $args['author'] = $plugin['Author'];
354
- $args['wp_override'] = $this->settings['wp_override'];
355
-
356
- } /* Load the theme updater class and add required parameters. */
357
- elseif ( in_array( $item_is, array( 'theme-parent', 'theme-child' ) ) ) {
358
-
359
- if ( ! class_exists( 'TITAN_EDD_Theme_Updater' ) ) {
360
- include( TF_PATH . 'inc/edd-licensing/theme-updater-class.php' );
361
- }
362
-
363
- add_filter( 'http_request_args', array( $this, 'disable_wporg_request' ), 5, 2 );
364
-
365
- $theme_dir = explode( '/', substr( str_replace( get_theme_root(), '', $this->settings['file'] ), 1 ) );
366
- $theme = wp_get_theme( $theme_dir[0], get_theme_root() );
367
-
368
- /* Make sure the theme exists. */
369
- if ( ! $theme->exists() ) {
370
- return false;
371
- }
372
-
373
- $args['version'] = $theme->get( 'Version' );
374
- $args['author'] = $theme->get( 'Author' );
375
- $args['remote_api_url'] = esc_url( $this->settings['server'] );
376
-
377
- /* Set the update messages. */
378
- $strings = array(
379
- 'theme-license' => __( 'Theme License', 'edd-theme-updater' ),
380
- 'enter-key' => __( 'Enter your theme license key.', 'edd-theme-updater' ),
381
- 'license-key' => __( 'License Key', 'edd-theme-updater' ),
382
- 'license-action' => __( 'License Action', 'edd-theme-updater' ),
383
- 'deactivate-license' => __( 'Deactivate License', 'edd-theme-updater' ),
384
- 'activate-license' => __( 'Activate License', 'edd-theme-updater' ),
385
- 'status-unknown' => __( 'License status is unknown.', 'edd-theme-updater' ),
386
- 'renew' => __( 'Renew?', 'edd-theme-updater' ),
387
- 'unlimited' => __( 'unlimited', 'edd-theme-updater' ),
388
- 'license-key-is-active' => __( 'License key is active.', 'edd-theme-updater' ),
389
- 'expires%s' => __( 'Expires %s.', 'edd-theme-updater' ),
390
- '%1$s/%2$-sites' => __( 'You have %1$s / %2$s sites activated.', 'edd-theme-updater' ),
391
- 'license-key-expired-%s' => __( 'License key expired %s.', 'edd-theme-updater' ),
392
- 'license-key-expired' => __( 'License key has expired.', 'edd-theme-updater' ),
393
- 'license-keys-do-not-match' => __( 'License keys do not match.', 'edd-theme-updater' ),
394
- 'license-is-inactive' => __( 'License is inactive.', 'edd-theme-updater' ),
395
- 'license-key-is-disabled' => __( 'License key is disabled.', 'edd-theme-updater' ),
396
- 'site-is-inactive' => __( 'Site is inactive.', 'edd-theme-updater' ),
397
- 'license-status-unknown' => __( 'License status is unknown.', 'edd-theme-updater' ),
398
- 'update-notice' => __( "Updating this theme will lose any customizations you have made. 'Cancel' to stop, 'OK' to update.", 'edd-theme-updater' ),
399
- 'update-available' => __( '<strong>%1$s %2$s</strong> is available. <a href="%3$s" class="thickbox" title="%4s">Check out what\'s new</a> or <a href="%5$s"%6$s>update now</a>.', 'edd-theme-updater' ),
400
- );
401
-
402
- } /* What the hell is this?? */
403
- else {
404
- return false;
405
- }
406
-
407
- /* Update server URL */
408
- $endpoint = esc_url( $this->settings['server'] );
409
-
410
- /* Setup updater */
411
- if ( 'plugin' == $item_is ) {
412
- $edd_updater = new TITAN_EDD_SL_Plugin_Updater( $endpoint, $this->settings['file'], $args );
413
- } else {
414
- new TITAN_EDD_Theme_Updater( $args, $strings );
415
- }
416
-
417
- return true;
418
-
419
- }
420
-
421
- /**
422
- * Check if $file is a theme or a plugin.
423
- *
424
- * @since 1.7.2
425
- * @param string $file Path to the file to check
426
- * @return string What type of file this is (parent theme, child theme or plugin)
427
- */
428
- public function item_is( $file ) {
429
-
430
- $parentTheme = trailingslashit( get_template_directory() );
431
- $childTheme = trailingslashit( get_stylesheet_directory() );
432
-
433
- /**
434
- * Windows sometimes mixes up forward and back slashes, ensure forward slash for
435
- * correct URL output.
436
- *
437
- * @see TitanFramework::getURL()
438
- */
439
- $parentTheme = str_replace( '\\', '/', $parentTheme );
440
- $childTheme = str_replace( '\\', '/', $childTheme );
441
- $file = str_replace( '\\', '/', $file );
442
-
443
- /* Make sure the file exists. */
444
- if ( ! file_exists( $file ) ) {
445
- return false;
446
- }
447
-
448
- /* The $file is in a parent theme */
449
- if ( stripos( $file, $parentTheme ) != false ) {
450
- return 'theme-parent';
451
- } /* The $file is in a child theme */
452
- else if ( stripos( $file, $childTheme ) != false ) {
453
- return 'theme-child';
454
- } /* The $file is in a plugin */
455
- else {
456
- return 'plugin';
457
- }
458
-
459
- }
460
-
461
- /**
462
- * Disable requests to wp.org repository for this theme.
463
- *
464
- * @since 1.7.2
465
- */
466
- function disable_wporg_request( $r, $url ) {
467
-
468
- // If it's not a theme update request, bail.
469
- if ( 0 != strpos( $url, 'https://api.wordpress.org/themes/update-check/1.1/' ) ) {
470
- return $r;
471
- }
472
-
473
- // Decode the JSON response
474
- $themes = json_decode( $r['body']['themes'] );
475
-
476
- // Remove the active parent and child themes from the check
477
- $parent = get_option( 'template' );
478
- $child = get_option( 'stylesheet' );
479
- unset( $themes->themes->$parent );
480
- unset( $themes->themes->$child );
481
-
482
- // Encode the updated JSON response
483
- $r['body']['themes'] = json_encode( $themes );
484
-
485
- return $r;
486
- }
487
- }
488
- }
489
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-option-heading.php DELETED
@@ -1,108 +0,0 @@
1
- <?php
2
- /**
3
- * Heading option
4
- *
5
- * @package Titan Framework
6
- */
7
-
8
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly.
9
- }
10
-
11
- /**
12
- * Heading Option
13
- *
14
- * A heading for separating your options in an admin page or meta box
15
- *
16
- * <strong>Creating a heading option with a description:</strong>
17
- * <pre>$adminPage->createOption( array(
18
- * 'name' => __( 'General Settings', 'default' ),
19
- * 'type' => 'heading',
20
- * 'desc' => __( 'Settings for the general usage of the plugin', 'default' ),
21
- * ) );</pre>
22
- *
23
- * @since 1.0
24
- * @type heading
25
- * @availability Admin Pages|Meta Boxes|Customizer
26
- * @no id,default,livepreview,css,hidden
27
- */
28
- class TitanFrameworkOptionHeading extends TitanFrameworkOption {
29
-
30
- /**
31
- * Display for options and meta
32
- */
33
- public function display() {
34
- $headingID = str_replace( ' ', '-', strtolower( $this->settings['name'] ) );
35
- ?>
36
- <tr valign="top" class="even first tf-heading">
37
- <th scope="row" class="first last" colspan="2">
38
- <h3 id="<?php echo esc_attr( $headingID ) ?>"><?php echo $this->settings['name'] ?></h3>
39
- <?php
40
- if ( ! empty( $this->settings['desc'] ) ) {
41
- ?><p class='description'><?php echo $this->settings['desc'] ?></p><?php
42
- }
43
- ?>
44
- </th>
45
- </tr>
46
- <?php
47
- }
48
-
49
- /**
50
- * Display for theme customizer
51
- *
52
- * @param WP_Customize $wp_customize The customizer object.
53
- * @param TitanFrameworkCustomizer $section The customizer section.
54
- * @param int $priority The display priority of the control.
55
- */
56
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
57
- $wp_customize->add_control( new TitanFrameworkOptionHeadingControl( $wp_customize, $this->getID(), array(
58
- 'label' => $this->settings['name'],
59
- 'section' => $section->settings['id'],
60
- 'type' => 'select',
61
- 'settings' => $this->getID(),
62
- 'description' => $this->settings['desc'],
63
- 'priority' => $priority,
64
- ) ) );
65
- }
66
- }
67
-
68
-
69
- // We create a new control for the theme customizer.
70
- add_action( 'customize_register', 'register_titan_framework_option_heading_control', 1 );
71
-
72
- /**
73
- * Register the customizer control
74
- */
75
- function register_titan_framework_option_heading_control() {
76
-
77
- /**
78
- * Heading option class
79
- *
80
- * @since 1.0
81
- */
82
- class TitanFrameworkOptionHeadingControl extends WP_Customize_Control {
83
-
84
- /**
85
- * The description of this control
86
- *
87
- * @var bool
88
- */
89
- public $description;
90
-
91
- /**
92
- * Renders the control
93
- */
94
- public function render_content() {
95
-
96
- ?>
97
- <h3 class="customize-control-title tf-heading">
98
- <?php echo esc_html( $this->label ) ?>
99
- <?php
100
- if ( ! empty( $this->description ) ) {
101
- echo "<p class='description'>" . wp_kses_post( $this->description ) . '</p>';
102
- }
103
- ?>
104
- </h3>
105
- <?php
106
- }
107
- }
108
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-option-iframe.php DELETED
@@ -1,105 +0,0 @@
1
- <?php
2
- /**
3
- * Iframe option
4
- *
5
- * @package Titan Framework
6
- */
7
-
8
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly.
9
- }
10
-
11
- /**
12
- * Iframe option class
13
- *
14
- * @since 1.0
15
- */
16
- class TitanFrameworkOptionIframe extends TitanFrameworkOption {
17
-
18
- /**
19
- * Default settings specific to this option
20
- * @var array
21
- */
22
- public $defaultSecondarySettings = array(
23
- 'url' => '',
24
- 'height' => '400', // In pixels.
25
- );
26
-
27
- /**
28
- * Display for options and meta
29
- */
30
- public function display() {
31
-
32
- $this->echoOptionHeader();
33
-
34
- printf( '<iframe frameborder="0" src="%s" style="height: %spx; width:100%%;"></iframe>',
35
- $this->settings['url'],
36
- $this->settings['height']
37
- );
38
- $this->echoOptionFooter();
39
-
40
- }
41
-
42
- /**
43
- * Display for theme customizer
44
- *
45
- * @param WP_Customize $wp_customize The customizer object.
46
- * @param TitanFrameworkCustomizer $section The customizer section.
47
- * @param int $priority The display priority of the control.
48
- */
49
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
50
- $wp_customize->add_control( new TitanFrameworkOptionIframeControl( $wp_customize, $this->getID(), array(
51
- 'label' => $this->settings['name'],
52
- 'section' => $section->settings['id'],
53
- 'type' => 'select',
54
- 'settings' => $this->getID(),
55
- 'priority' => $priority,
56
- 'optionSettings' => $this->settings,
57
- ) ) );
58
- }
59
- }
60
-
61
-
62
- // We create a new control for the theme customizer.
63
- add_action( 'customize_register', 'register_titan_framework_option_iframe_control', 1 );
64
-
65
- /**
66
- * Register the customizer control
67
- */
68
- function register_titan_framework_option_iframe_control() {
69
-
70
- /**
71
- * Iframe option class
72
- *
73
- * @since 1.0
74
- */
75
- class TitanFrameworkOptionIframeControl extends WP_Customize_Control {
76
-
77
- /**
78
- * The iframe content control
79
- *
80
- * @var bool
81
- */
82
- public $optionSettings;
83
-
84
- /**
85
- * Renders the control
86
- */
87
- public function render_content() {
88
- ?>
89
- <label>
90
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
91
- <?php
92
- printf( '<iframe frameborder="0" src="%s" style="height: %spx; width:100%%;"></iframe>',
93
- $this->optionSettings['url'],
94
- $this->optionSettings['height']
95
- );
96
-
97
- if ( ! empty( $this->optionSettings['desc'] ) ) {
98
- echo "<p class='description'>{$this->optionSettings['desc']}</p>";
99
- }
100
- ?>
101
- </label>
102
- <?php
103
- }
104
- }
105
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-option-multicheck-categories.php DELETED
@@ -1,66 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
- }
5
- class TitanFrameworkOptionMulticheckCategories extends TitanFrameworkOptionMulticheck {
6
-
7
- public $defaultSecondarySettings = array(
8
- 'options' => array(),
9
- 'orderby' => 'name',
10
- 'order' => 'ASC',
11
- 'taxonomy' => 'category',
12
- 'hide_empty' => false,
13
- 'show_count' => false,
14
- 'select_all' => false
15
- );
16
-
17
- /*
18
- * Display for options and meta
19
- */
20
- public function display() {
21
- $args = array(
22
- 'orderby' => $this->settings['orderby'],
23
- 'order' => $this->settings['order'],
24
- 'taxonomy' => $this->settings['taxonomy'],
25
- 'hide_empty' => $this->settings['hide_empty'] ? '1' : '0',
26
- );
27
-
28
- $categories = get_categories( $args );
29
-
30
- $this->settings['options'] = array();
31
- foreach ( $categories as $category ) {
32
- $this->settings['options'][ $category->term_id ] = $category->name . ( $this->settings['show_count'] ? ' (' . $category->count . ')' : '' );
33
- }
34
-
35
- parent::display();
36
- }
37
-
38
- /*
39
- * Display for theme customizer
40
- */
41
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
42
- $args = array(
43
- 'orderby' => $this->settings['orderby'],
44
- 'order' => $this->settings['order'],
45
- 'taxonomy' => $this->settings['taxonomy'],
46
- 'hide_empty' => $this->settings['hide_empty'] ? '1' : '0',
47
- );
48
-
49
- $categories = get_categories( $args );
50
-
51
- $this->settings['options'] = array();
52
- foreach ( $categories as $category ) {
53
- $this->settings['options'][ $category->term_id ] = $category->name . ( $this->settings['show_count'] ? ' (' . $category->count . ')' : '' );
54
- }
55
-
56
- $wp_customize->add_control( new TitanFrameworkOptionMulticheckControl( $wp_customize, $this->getID(), array(
57
- 'label' => $this->settings['name'],
58
- 'section' => $section->settings['id'],
59
- 'settings' => $this->getID(),
60
- 'description' => $this->settings['desc'],
61
- 'options' => $this->settings['options'],
62
- 'select_all' => $this->settings['select_all'],
63
- 'priority' => $priority,
64
- ) ) );
65
- }
66
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-option-multicheck-pages.php DELETED
@@ -1,64 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
- }
5
- class TitanFrameworkOptionMulticheckPages extends TitanFrameworkOptionMulticheck {
6
-
7
- public $defaultSecondarySettings = array(
8
- 'options' => array(),
9
- 'select_all' => false
10
- );
11
-
12
- private static $allPages;
13
-
14
- /*
15
- * Display for options and meta
16
- */
17
- public function display() {
18
-
19
- // Remember the pages so as not to perform any more lookups
20
- if ( ! isset( self::$allPages ) ) {
21
- self::$allPages = get_pages();
22
- }
23
-
24
- $this->settings['options'] = array();
25
- foreach ( self::$allPages as $page ) {
26
- $title = $page->post_title;
27
- if ( empty( $title ) ) {
28
- $title = sprintf( __( 'Untitled %s', TF_I18NDOMAIN ), '(ID #' . $page->ID . ')' );
29
- }
30
- $this->settings['options'][ $page->ID ] = $title;
31
- }
32
-
33
- parent::display();
34
- }
35
-
36
- /*
37
- * Display for theme customizer
38
- */
39
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
40
- // Remember the pages so as not to perform any more lookups
41
- if ( ! isset( self::$allPages ) ) {
42
- self::$allPages = get_pages();
43
- }
44
-
45
- $this->settings['options'] = array();
46
- foreach ( self::$allPages as $page ) {
47
- $title = $page->post_title;
48
- if ( empty( $title ) ) {
49
- $title = sprintf( __( 'Untitled %s', TF_I18NDOMAIN ), '(ID #' . $page->ID . ')' );
50
- }
51
- $this->settings['options'][ $page->ID ] = $title;
52
- }
53
-
54
- $wp_customize->add_control( new TitanFrameworkOptionMulticheckControl( $wp_customize, $this->getID(), array(
55
- 'label' => $this->settings['name'],
56
- 'section' => $section->settings['id'],
57
- 'settings' => $this->getID(),
58
- 'description' => $this->settings['desc'],
59
- 'options' => $this->settings['options'],
60
- 'select_all' => $this->settings['select_all'],
61
- 'priority' => $priority,
62
- ) ) );
63
- }
64
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-option-multicheck-post-types.php DELETED
@@ -1,77 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
- }
5
- class TitanFrameworkOptionMulticheckPostTypes extends TitanFrameworkOptionMulticheck {
6
-
7
- public $defaultSecondarySettings = array(
8
- 'options' => array(),
9
- 'public' => true,
10
- 'value' => 'all',
11
- 'slug' => true,
12
- 'select_all' => false
13
- );
14
-
15
- /*
16
- * Display for options and meta
17
- */
18
- public function display() {
19
-
20
- // Fetch post types.
21
- $post_types = tf_get_post_types( $this->settings['public'], $this->settings['value'] );
22
-
23
- $this->settings['options'] = array();
24
- foreach ( $post_types as $post_type ) {
25
-
26
- $slug = $post_type->name;
27
-
28
- $slugname = true == $this->settings['slug'] ? ' (' . $slug . ')' : '';
29
-
30
- $name = $post_type->name;
31
- if ( ! empty( $post_type->labels->singular_name ) ) {
32
- $name = $post_type->labels->singular_name . $slugname;
33
- }
34
-
35
- $this->settings['options'][ $slug ] = $name;
36
- }
37
-
38
- parent::display();
39
- }
40
-
41
- /*
42
- * Display for theme customizer
43
- */
44
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
45
-
46
- // Fetch post types.
47
- $post_types = tf_get_post_types( $this->settings['public'], $this->settings['value'] );
48
-
49
- $this->settings['options'] = array();
50
- foreach ( $post_types as $post_type ) {
51
-
52
- $slug = $post_type->name;
53
-
54
- $slugname = true == $this->settings['slug'] ? ' (' . $slug . ')' : '';
55
-
56
- $name = $post_type->name;
57
- if ( ! empty( $post_type->labels->singular_name ) ) {
58
- $name = $post_type->labels->singular_name . $slugname;
59
- }
60
-
61
- $this->settings['options'][ $slug ] = $name;
62
- }
63
-
64
- $wp_customize->add_control( new TitanFrameworkOptionMulticheckControl( $wp_customize, $this->getID(), array(
65
- 'label' => $this->settings['name'],
66
- 'section' => $section->settings['id'],
67
- 'settings' => $this->getID(),
68
- 'description' => $this->settings['desc'],
69
- 'public' => $this->settings['public'],
70
- 'value' => $this->settings['value'],
71
- 'slug' => $this->settings['slug'],
72
- 'options' => $this->settings['options'],
73
- 'select_all' => $this->settings['select_all'],
74
- 'priority' => $priority,
75
- ) ) );
76
- }
77
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-option-multicheck-posts.php DELETED
@@ -1,76 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
- }
5
- class TitanFrameworkOptionMulticheckPosts extends TitanFrameworkOptionMulticheck {
6
-
7
- public $defaultSecondarySettings = array(
8
- 'options' => array(),
9
- 'post_type' => 'post',
10
- 'num' => -1,
11
- 'post_status' => 'any',
12
- 'orderby' => 'post_date',
13
- 'order' => 'DESC',
14
- 'select_all' => false
15
- );
16
-
17
- /*
18
- * Display for options and meta
19
- */
20
- public function display() {
21
- $args = array(
22
- 'post_type' => $this->settings['post_type'],
23
- 'posts_per_page' => $this->settings['num'],
24
- 'post_status' => $this->settings['post_status'],
25
- 'orderby' => $this->settings['orderby'],
26
- 'order' => $this->settings['order'],
27
- );
28
-
29
- $posts = get_posts( $args );
30
-
31
- $this->settings['options'] = array();
32
- foreach ( $posts as $post ) {
33
- $title = $post->post_title;
34
- if ( empty( $title ) ) {
35
- $title = sprintf( __( 'Untitled %s', TF_I18NDOMAIN ), '(ID #' . $post->ID . ')' );
36
- }
37
- $this->settings['options'][ $post->ID ] = $title;
38
- }
39
-
40
- parent::display();
41
- }
42
-
43
- /*
44
- * Display for theme customizer
45
- */
46
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
47
- $args = array(
48
- 'post_type' => $this->settings['post_type'],
49
- 'posts_per_page' => $this->settings['num'],
50
- 'post_status' => $this->settings['post_status'],
51
- 'orderby' => $this->settings['orderby'],
52
- 'order' => $this->settings['order'],
53
- );
54
-
55
- $posts = get_posts( $args );
56
-
57
- $this->settings['options'] = array();
58
- foreach ( $posts as $post ) {
59
- $title = $post->post_title;
60
- if ( empty( $title ) ) {
61
- $title = sprintf( __( 'Untitled %s', TF_I18NDOMAIN ), '(ID #' . $post->ID . ')' );
62
- }
63
- $this->settings['options'][ $post->ID ] = $title;
64
- }
65
-
66
- $wp_customize->add_control( new TitanFrameworkOptionMulticheckControl( $wp_customize, $this->getID(), array(
67
- 'label' => $this->settings['name'],
68
- 'section' => $section->settings['id'],
69
- 'settings' => $this->getID(),
70
- 'description' => $this->settings['desc'],
71
- 'options' => $this->settings['options'],
72
- 'select_all' => $this->settings['select_all'],
73
- 'priority' => $priority,
74
- ) ) );
75
- }
76
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-option-multicheck.php DELETED
@@ -1,213 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
- }
5
- class TitanFrameworkOptionMulticheck extends TitanFrameworkOption {
6
-
7
- public $defaultSecondarySettings = array(
8
- 'options' => array(),
9
- 'select_all' => false,
10
- );
11
-
12
- /**
13
- * Constructor
14
- *
15
- * @param array $settings Option settings
16
- * @param string $owner Namespace
17
- *
18
- * @since 1.11
19
- */
20
- function __construct( $settings, $owner ) {
21
- parent::__construct( $settings, $owner );
22
-
23
- tf_add_action_once( 'admin_enqueue_scripts', array( $this, 'load_select_scripts' ) );
24
- tf_add_action_once( 'customize_controls_enqueue_scripts', array( $this, 'load_select_scripts' ) );
25
-
26
- }
27
-
28
-
29
- /*
30
- * Display for options and meta
31
- */
32
- public function display() {
33
- $this->echoOptionHeader( true );
34
-
35
- echo '<fieldset>';
36
-
37
- $savedValue = $this->getValue();
38
-
39
- if ( ! empty( $this->settings['select_all'] ) ) {
40
- $select_all_label = __( 'Select All' );
41
- if ( is_string( $this->settings['select_all'] ) ) {
42
- $select_all_label = $this->settings['select_all'];
43
- }
44
- printf('<label style="margin-bottom: 1em !important;"><input class="tf_checkbox_selectall" type="checkbox" /> %s </label><br>',
45
- esc_html( $select_all_label )
46
- );
47
- }
48
-
49
- foreach ( $this->settings['options'] as $value => $label ) {
50
-
51
- printf('<label for="%s"><input id="%s" type="checkbox" name="%s[]" value="%s" %s/> %s</label><br>',
52
- $this->getID() . $value,
53
- $this->getID() . $value,
54
- $this->getID(),
55
- esc_attr( $value ),
56
- checked( in_array( $value, $savedValue ), true, false ),
57
- $label
58
- );
59
- }
60
-
61
- echo '</fieldset>';
62
-
63
- $this->echoOptionFooter( false );
64
-
65
- }
66
-
67
- /**
68
- * Load the multicheck-selectall script
69
- *
70
- * @since 1.11
71
- * @return void
72
- */
73
- public function load_select_scripts() {
74
-
75
- wp_enqueue_script( 'tf-multicheck-select-all', TitanFramework::getURL( '../js/multicheck-select-all.js', __FILE__ ), array( 'jquery' ), TF_VERSION, true );
76
-
77
- }
78
-
79
- public function cleanValueForSaving( $value ) {
80
- if ( empty( $value ) ) {
81
- return array();
82
- }
83
- if ( is_serialized( $value ) ) {
84
- return $value;
85
- }
86
- // CSV
87
- if ( is_string( $value ) ) {
88
- $value = explode( ',', $value );
89
- }
90
- return serialize( $value );
91
- }
92
-
93
- public function cleanValueForGetting( $value ) {
94
- if ( empty( $value ) ) {
95
- return array();
96
- }
97
- if ( is_array( $value ) ) {
98
- return $value;
99
- }
100
- if ( is_serialized( $value ) ) {
101
- return unserialize( $value );
102
- }
103
- if ( is_string( $value ) ) {
104
- return explode( ',', $value );
105
- }
106
- }
107
-
108
- /*
109
- * Display for theme customizer
110
- */
111
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
112
- $wp_customize->add_control( new TitanFrameworkOptionMulticheckControl( $wp_customize, $this->getID(), array(
113
- 'label' => $this->settings['name'],
114
- 'section' => $section->settings['id'],
115
- 'settings' => $this->getID(),
116
- 'description' => $this->settings['desc'],
117
- 'options' => $this->settings['options'],
118
- 'select_all' => $this->settings['select_all'],
119
- 'priority' => $priority,
120
- ) ) );
121
- }
122
- }
123
-
124
-
125
- /*
126
- * WP_Customize_Control with description
127
- */
128
- add_action( 'customize_register', 'registerTitanFrameworkOptionMulticheckControl', 1 );
129
- function registerTitanFrameworkOptionMulticheckControl() {
130
- class TitanFrameworkOptionMulticheckControl extends WP_Customize_Control {
131
- public $description;
132
- public $options;
133
- public $select_all;
134
-
135
- private static $firstLoad = true;
136
-
137
- // Since theme_mod cannot handle multichecks, we will do it with some JS
138
- public function render_content() {
139
- // the saved value is an array. convert it to csv
140
- if ( is_array( $this->value() ) ) {
141
- $savedValueCSV = implode( ',', $this->value() );
142
- $values = $this->value();
143
- } else {
144
- $savedValueCSV = $this->value();
145
- $values = explode( ',', $this->value() );
146
- }
147
-
148
- if ( self::$firstLoad ) {
149
- self::$firstLoad = false;
150
-
151
- ?>
152
- <script>
153
- jQuery(document).ready(function($) {
154
- "use strict";
155
-
156
- $('input.tf-multicheck').change(function(event) {
157
- event.preventDefault();
158
- var csv = '';
159
-
160
- $(this).parents('li:eq(0)').find('input[type=checkbox]').each(function() {
161
- if ($(this).is(':checked')) {
162
- csv += $(this).attr('value') + ',';
163
- }
164
- });
165
-
166
- csv = csv.replace(/,+$/, "");
167
-
168
- $(this).parents('li:eq(0)').find('input[type=hidden]').val(csv)
169
- // we need to trigger the field afterwards to enable the save button
170
- .trigger('change');
171
- return true;
172
- });
173
- });
174
- </script>
175
- <?php
176
- }
177
-
178
- $description = '';
179
- if ( ! empty( $this->description ) ) {
180
- $description = "<p class='description'>" . $this->description . '</p>';
181
- }
182
- ?>
183
- <label class='tf-multicheck-container'>
184
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
185
- <?php
186
- echo $description;
187
-
188
- if ( ! empty( $this->select_all ) ) {
189
- $select_all_label = __( 'Select All' );
190
- if ( is_string( $this->select_all ) ) {
191
- $select_all_label = $this->select_all;
192
- }
193
- printf('<label style="margin-bottom: 1em !important; display: inline-block;"><input class="tf_checkbox_selectall" type="checkbox" /> %s </label><br>',
194
- esc_html( $select_all_label )
195
- );
196
- }
197
-
198
- foreach ( $this->options as $value => $label ) {
199
- printf('<label for="%s"><input class="tf-multicheck" id="%s" type="checkbox" value="%s" %s/> %s</label><br>',
200
- $this->id . $value,
201
- $this->id . $value,
202
- esc_attr( $value ),
203
- checked( in_array( $value, $values ), true, false ),
204
- $label
205
- );
206
- }
207
- ?>
208
- <input type="hidden" value="<?php echo esc_attr( $savedValueCSV ); ?>" <?php $this->link(); ?> />
209
- </label>
210
- <?php
211
- }
212
- }
213
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-option-save.php DELETED
@@ -1,55 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
- }
5
- class TitanFrameworkOptionSave extends TitanFrameworkOption {
6
-
7
- public $defaultSecondarySettings = array(
8
- 'save' => '',
9
- 'reset' => '',
10
- 'use_reset' => true,
11
- 'reset_question' => '',
12
- 'action' => 'save',
13
- );
14
-
15
- public function display() {
16
- if ( ! empty( $this->owner->postID ) ) {
17
- return;
18
- }
19
-
20
- if ( empty( $this->settings['save'] ) ) {
21
- $this->settings['save'] = __( 'Save Changes', TF_I18NDOMAIN );
22
- }
23
- if ( empty( $this->settings['reset'] ) ) {
24
- $this->settings['reset'] = __( 'Reset to Defaults', TF_I18NDOMAIN );
25
- }
26
- if ( empty( $this->settings['reset_question'] ) ) {
27
- $this->settings['reset_question'] = __( 'Are you sure you want to reset ALL options to their default values?', TF_I18NDOMAIN );
28
- }
29
-
30
- ?>
31
- </tbody>
32
- </table>
33
-
34
- <p class='submit'>
35
- <button name="action" value="<?php echo $this->settings['action'] ?>" class="button button-primary">
36
- <?php echo $this->settings['save'] ?>
37
- </button>
38
-
39
- <?php
40
- if ( $this->settings['use_reset'] ) :
41
- ?>
42
- <button name="action" class="button button-secondary"
43
- onclick="javascript: if ( confirm( '<?php echo htmlentities( esc_attr( $this->settings['reset_question'] ) ) ?>' ) ) { jQuery( '#tf-reset-form' ).submit(); } jQuery(this).blur(); return false;">
44
- <?php echo $this->settings['reset'] ?>
45
- </button>
46
- <?php
47
- endif;
48
- ?>
49
- </p>
50
-
51
- <table class='form-table'>
52
- <tbody>
53
- <?php
54
- }
55
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-option-textarea.php DELETED
@@ -1,72 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
- }
5
- class TitanFrameworkOptionTextarea extends TitanFrameworkOption {
6
-
7
- public $defaultSecondarySettings = array(
8
- 'placeholder' => '', // show this when blank
9
- 'is_code' => false, // if true, a more code-like font will be used
10
- 'sanitize_callbacks' => array(),
11
- );
12
-
13
- /*
14
- * Display for options and meta
15
- */
16
- public function display() {
17
- $this->echoOptionHeader( true );
18
- printf("<textarea class='large-text %s' name=\"%s\" placeholder=\"%s\" id=\"%s\" rows='10' cols='50'>%s</textarea>",
19
- $this->settings['is_code'] ? 'code' : '',
20
- $this->getID(),
21
- $this->settings['placeholder'],
22
- $this->getID(),
23
- esc_textarea( stripslashes( $this->getValue() ) )
24
- );
25
- $this->echoOptionFooter( false );
26
- }
27
-
28
- public function cleanValueForSaving( $value ) {
29
- if ( ! empty( $this->settings['sanitize_callbacks'] ) ) {
30
- foreach ( $this->settings['sanitize_callbacks'] as $callback ) {
31
- $value = call_user_func_array( $callback, array( $value, $this ) );
32
- }
33
- }
34
-
35
- return $value;
36
- }
37
-
38
- /*
39
- * Display for theme customizer
40
- */
41
- public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) {
42
- $wp_customize->add_control( new TitanFrameworkOptionTextareaControl( $wp_customize, $this->getID(), array(
43
- 'label' => $this->settings['name'],
44
- 'section' => $section->getID(),
45
- 'settings' => $this->getID(),
46
- 'description' => $this->settings['desc'],
47
- 'is_code' => $this->settings['is_code'],
48
- 'priority' => $priority,
49
- ) ) );
50
- }
51
- }
52
-
53
- /*
54
- * WP_Customize_Control with description
55
- */
56
- add_action( 'customize_register', 'registerTitanFrameworkOptionTextareaControl', 1 );
57
- function registerTitanFrameworkOptionTextareaControl() {
58
- class TitanFrameworkOptionTextareaControl extends WP_Customize_Control {
59
- public $description;
60
- public $is_code;
61
-
62
- public function render_content() {
63
- ?>
64
- <label>
65
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
66
- <textarea class='large-text <?php echo $this->is_code ? 'code' : '' ?>' rows='7' cols='50' <?php $this->link(); ?>><?php echo esc_textarea( stripslashes( $this->value() ) ) ?></textarea>
67
- </label>
68
- <?php
69
- echo "<p class='description'>{$this->description}</p>";
70
- }
71
- }
72
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/lib/class-wp-customize-control.php DELETED
@@ -1,18 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly
4
- }
5
- /*
6
- * WP_Customize_Control with description
7
- */
8
- add_action( 'customize_register', 'registerTitanFrameworkCustomizeControl', 1 );
9
- function registerTitanFrameworkCustomizeControl() {
10
- class TitanFrameworkCustomizeControl extends WP_Customize_Control {
11
- public $description;
12
-
13
- public function render_content() {
14
- parent::render_content();
15
- // echo "<p class='description'>{$this->description}</p>";
16
- }
17
- }
18
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/readme.txt DELETED
@@ -1,383 +0,0 @@
1
- === Plugin Name ===
2
- Contributors: bfintal
3
- Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=D2MK28E7BDLHC
4
- Tags: framework, options, admin, admin panel, meta box, theme customizer, option framework, library, sdk, edd, settings, api, theme creator, theme framework
5
- Requires at least: 4.1
6
- Tested up to: 4.6.1
7
- Stable tag: 1.11
8
- License: GPLv2 or later
9
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
-
11
- Create Settings for Your WordPress Themes & Plugins with Just a Few Lines of Code.
12
-
13
- == Description ==
14
-
15
- Titan Framework allows theme and plugin developers to create admin pages, options, meta boxes, and theme customizer options with just a few simple lines of code.
16
-
17
- This means faster theme & plugin creation for everyone.
18
-
19
- [What is Titan Framework and how does it work?](http://www.titanframework.net/what/)
20
-
21
- = The Goal =
22
-
23
- Titan Framework aims to be easily used by everyone. The goal is to make it plug and play - just activate the plugin and start creating your options.
24
-
25
- [How to start developing with Titan Framework](http://www.titanframework.net/how/)
26
-
27
- * [Join the Community in Slack](https://gambit-slackin.herokuapp.com/)
28
- * [Documentation and Tutorials for Developers](http://www.titanframework.net/docs)
29
- * [Titan Framework GitHub Repository](https://github.com/gambitph/Titan-Framework)
30
- * [Issue Tracker](https://github.com/gambitph/Titan-Framework/issues)
31
-
32
- = Start Creating Your Theme =
33
-
34
- [You can generate your own Underscores based theme with Titan Framework through our site](http://www.titanframework.net/)
35
-
36
- The generated theme comes with sample pre-created options in the admin and theme customizer along with code documentation.
37
-
38
- = Features =
39
-
40
- * Makes development unbelievably easy
41
- * Built with optimization in mind
42
- * Does NOT clutter the database
43
- * Integrates with your project seamlessly
44
- * Theme customizer live preview integration
45
- * Supports child themes
46
- * Automatic CSS generation with SCSS support
47
- * Full font style fields
48
- * Easy Digital Download activation integration
49
-
50
- = Easy creation of: =
51
-
52
- * Admin menus and submenus
53
- * Admin pages
54
- * Admin options and tabs
55
- * Meta boxes and options
56
- * Theme customizer sections and options
57
-
58
- = Options available in admin pages, meta boxes and theme customizer: =
59
-
60
- * Ajax button
61
- * Checkbox
62
- * Code (using [Ace](http://ace.c9.io/#nav=about))
63
- * Color picker
64
- * Custom
65
- * Date
66
- * EDD License (Easy Digital Downloads license)
67
- * Editor (WYSIWYG)
68
- * Enable
69
- * File upload
70
- * Font Style (Web safe fonts and Google WebFonts)
71
- * Gallery
72
- * Group
73
- * Heading
74
- * Iframe
75
- * Media uploader
76
- * Multicheck
77
- * Multicheck categories and taxonomies
78
- * Multicheck pages and posts
79
- * Multicheck post types
80
- * Note
81
- * Number
82
- * Radio buttons
83
- * Radio palette picker
84
- * Radio image
85
- * Save and reset buttons
86
- * Select (drop down)
87
- * Select Google WebFont
88
- * Select categories and taxonomies
89
- * Select pages and posts
90
- * Select post types
91
- * Sortable
92
- * Text
93
- * Textarea
94
-
95
- = Supporting the Framework =
96
-
97
- Titan is super new, so far the framework has been getting good feedback from the community. Help out and spread the word by starring this repo, sending tweets, writing blog posts about what you think about Titan, and [review the plugin](http://wordpress.org/support/view/plugin-reviews/titan-framework).
98
-
99
- = Help Translate =
100
-
101
- We want Titan Framework to be used by everyone, and since not everyone speaks or reads english, we would appreciate it if you can [help translate the framework to your language](https://www.transifex.com/projects/p/titan-framework/).
102
-
103
- = Currently translated to =
104
-
105
- * French (thanks @PunKeel)
106
- * German (thanks @jascha)
107
- * Italian (thanks @DavideVogliotti & Giuseppe Pignataro)
108
- * Portuguese (thanks @pagelab)
109
- * Spanish (thanks @maperezotero)
110
- * Turkish (thanks @gurkankara)
111
-
112
- = Donate to the Development =
113
-
114
- If Titan Framework has helped you in any way, we would appreciate any amount of donations that you give us. Donations would mean more development time for the framework as I am continuously developing it during my free time.
115
-
116
- [![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9X7HJBGJ37VH6)
117
-
118
- = Special Thanks to all the Contributors =
119
-
120
- @ahansson89, @ahmadawais, @ardallan, @BrazenlyGeek, @csloisel, @DavideVogliotti, @davidossahdez, @desaiuditd, @dovy, @fabiorphp, @iografica, @jaeh, @kevinlangleyjr, @manishsongirkar, @mendezcode, @MickeyKay, @nemke, @sagarjadhav, @smccafferty, @tojibon
121
-
122
- and to everyone else in the GitHub repo!
123
-
124
- == Installation ==
125
-
126
- 1. Upload `plugin-name.php` to the `/wp-content/plugins/` directory
127
- 2. Activate the plugin through the 'Plugins' menu in WordPress
128
- 3. Use the provided classes and functions in your theme or plugin. Read our guide on how to [Get Started with Titan Framework](http://www.titanframework.net/how/)
129
-
130
- == Frequently Asked Questions ==
131
-
132
- * [Site FAQs](http://www.titanframework.net/faqs/)
133
- * [Documentation and Tutorials for Developers](http://titanframework.net)
134
- * [Titan Framework GitHub Repository](https://github.com/gambitph/Titan-Framework)
135
- * [Issue Tracker](https://github.com/gambitph/Titan-Framework/issues)
136
-
137
- == Upgrade Notice ==
138
-
139
- == Screenshots ==
140
-
141
- 1. An admin page with tabs and options created using Titan Framework
142
- 2. Supports theme customizer sections, options and live previewing
143
- 3. Meta box support for pages, posts and custom post types
144
- 4. Sample code on how to create admin pages and options
145
-
146
- == Changelog ==
147
-
148
- = 1.11 =
149
- * New: Added custom font in Theme Customizer
150
- * New: Added File Upload option
151
- * New: Added select_all in multicheck option
152
- * New: Added em in font size
153
- * New: Sample Content Extension support
154
- * Enhanced: Tabs color is changed, and the gap between tabs and panel is removed
155
- * Enhanced: Allow svg file in upload option
156
- * Fixed: Gallery option
157
-
158
- = 1.10 =
159
- * New: Added new options multicheck-post-types and select-post-types
160
- * New: Added Group option
161
- * New: Added include_fonts in Theme Customizer.
162
- * Enhanced: Generated inline CSS now has an ID attribute.
163
- * Enhanced: Easy Digital Downloads product checking revised.
164
- * Enhanced: Timepicker styles.
165
- * Enhanced: EDD option.
166
- * Change: Footer Text should be returned not echoed.
167
- * Change: class_exists to function_exists of googlefonts function.
168
- * Fixed: Input tag.
169
-
170
- = 1.9.3 =
171
- * New: Transport parameter for overriding the Customizer transport parameter
172
- * New: Added `enqueue` parameter for the code option
173
- * New: Added `size` parameter to the Text option
174
- * Change: Removed `title` parameter in admin tabs
175
- * Fixed: Fixed bug where a blank panel was being created
176
- * Fixed: Removed seconds, and other more precise controls in the date option.
177
-
178
- = 1.9.2 =
179
- * New: `tf_css_get_css_file_path_{$namespace}` filter
180
- * Enhanced: Heading options in Customizer now look great
181
- * Enhanced: The `css` parameter now performs live preview changes instead of reloading the page
182
- * Enhanced: Added `inherit` values for some styles in the font option
183
- * Enhanced: Changed some default style values in the font option to `inherit`
184
- * Fixed: Options with a value of zero do not generate CSS properly (they wrongly reset to their default value before)
185
- * Fixed: `getOptions` function turned non-existent keys to false
186
- * Fixed: Existing panel names (not panel IDs) across different namespaces that match get shown in the wrong section
187
- * Fixed: Removed remnance of a checkbox in the enable option while in the Customizer in Firefox
188
-
189
- = 1.9.1 =
190
- * Fixed: in some setups, saving options in a tab resets other tabs
191
-
192
- = 1.9 =
193
- * Major performance and speed optimizations, now is less process & memory intensive
194
- * New `iframe` option
195
- * New `custom` option
196
- * New `multiple` attribute in select options for selecting multiple values
197
- * New `desc` attribute in heading options for displaying short descriptions
198
- * New `alpha` attribute in color options for picking rgba colors
199
- * New `editor_options` attribute in editor options for specifying editor settings
200
- * New `tf_admin_tab_created_{namespace}` action
201
- * New `$titan->getOptions()` function for getting multiple options at once
202
- * Updated Google Font list
203
- * Heading options now generate an `id` attribute
204
- * Now using Gulp for development and building
205
- * Started using WordPress PHP Coding Standards
206
- * Started unit testing. Coverage currently at 8%
207
- * Removed initializing state which could cause duplication problems
208
- * Bumped minimum version to 4.1
209
- * Simplified Titan Framework checker code
210
- * Fixed: notice for newly added options
211
- * Fixed: upload option now uses attachment url in `livePreview` attribute
212
- * Fixed: meta boxes now save properly for attachment post_types
213
- * Fixed: font text-shadows
214
- * Fixed: meta box css & js code from showing up in non-singular pages
215
- * Fixed: stray border in enable options in the customizer
216
- * Fixed: upload images misalign after saving in the customizer
217
- * Removed: references to old select-google-font option
218
-
219
- = 1.8.1 =
220
- * Duplicated CSS rules #271
221
- * Generated css contains duplicated declarations #232
222
- * Add support for checking item ID #267
223
- * Removed missing gallery since we still need to work on it bd23623
224
-
225
- = 1.8 =
226
- * New option: ajax-button
227
- * Added new hooks:
228
- * tf_done
229
- * tf_pre_save_admin_{namespace}
230
- * tf_save_admin_{namespace}
231
- * tf_pre_reset_admin_{namespace}
232
- * tf_reset_admin_{namespace}
233
- * Added `desc` option for headers
234
- * Removed unused tracking code
235
- * Tweaked customizer font css
236
- * Updated SCSSPHP to v0.0.15
237
- * Added label for blank page/post titles for page/post options
238
- * Updated & namespaced SCSSPHP
239
- * Saving '0' values now work (e.g. in select options)
240
- * Additional check to prevent scss compile of empty string
241
- * Fixed bug where sometimes options without IDs (e.g. note) produce errors in the Customizer
242
- * Fixed possible JS running in iframe-font-preview + empty checks for CWE-200
243
- * getOption no longer throws a "called too early" warning and can now be called anywhere
244
- * #240 Update class-option-font.php
245
- * #235 Update class-option-checkbox.php
246
- * #262 Namespace invisible class
247
- * #264 Switch to strpos instead of preg_match
248
- * #253 Remove timepicker from requirements
249
-
250
- = 1.7.6 =
251
- * The Note option can now be placed in the Customizer
252
- * Prefixing a select value with `!` now displays the drop down value as disabled
253
- * Added new argument `panel_desc` for panel descriptions
254
- * Updated & namespaced EDD updater files
255
- * Fixed bug where options with the value 0 were not properly returned
256
- * Fixed bug where double descriptions showed up in the Customizer
257
- * Minor XSS security fixes, shouldn't be affected really, but it's better to be safe
258
-
259
- = 1.7.5 =
260
- * Added `hidden` parameter for all options
261
- * Fixed 4.1 display issues with the upload option
262
- * Fixed an undefined notice that sometimes appears
263
-
264
- = 1.7.4 =
265
- * Faster SCSS parsing
266
- * Faster loading time
267
- * Unit parameter for number options now supported in the Theme Customizer
268
- * Better font color option handling in Theme Customizer
269
- * Now prevents SCSS errors from showing up
270
- * Fixed name label issues with the enable option
271
- * Better plugin checking method
272
- * Plugin checker now integrates with TGM Plugin Activation
273
- * Updated Ace
274
-
275
- = 1.7.3 =
276
- * Fixed bug introduced in 1.7.2 where admin options sometimes were not being saved
277
-
278
- = 1.7.2 =
279
- * EDD option can now check for updates all by itself (thank you julien731)
280
- * `get_post_types` function now callable from `tf_create_options`
281
- * Now passes theme-check (ignored `add_menu_page` error)
282
-
283
- = 1.7.1 =
284
- * Bug fixes for the Easy Digital Download License option
285
- * Enhanced date option parameters
286
- * New parameters for Theme Customizer for creating panels
287
-
288
- = 1.7 =
289
- * New Easy Digital Download License option (thank you julien731)
290
- * New date option (thank you ardalann)
291
- * Added new action tf_save_options_{namespace} which is called after saving options
292
- * Fixed display issue with the font option in the theme customizer
293
- * Fixed bug where empty multicheck returned an array
294
- * Fix: customizer show_font_size & show_color
295
-
296
- = 1.6.1 =
297
- * Added missing files in the SVN
298
-
299
- = 1.6 =
300
- * New embed method (check the getting started section)
301
- * New tf_create_options hook for creating options
302
- * New number unit parameter
303
- * Removed font awesome, now uses dashicons
304
- * Added desc params to panels, tabs and meta boxes
305
- * Added size attribute for the upload option
306
- * Deleted Uncommon Ace Extensions
307
- * Improve load script to meta boxes
308
- * Lots of bug fixes
309
-
310
- = 1.5 =
311
- * Added German, Portuguese, Turkish and updated Italian translations
312
- * Added `notification` and `paragraph` paramaters to the note option
313
- * Added `include_fonts` parameter to the font option for specifying the selectable fonts
314
- * Added `show_websafe_fonts` and `show_google_fonts` parameters to the font option
315
- * Added `maxlength` parameter to the the text option
316
- * Fixed Titan plugin detection code
317
- * New more WordPress-centric styling of admin panels (special thanks to @sagarjadhav)
318
- * A Lot of stabilization bug fixes
319
-
320
- = 1.4.3 =
321
- * Added a few global hooks
322
- * Fixed missing hooks that prevented the Shortcode Extension from working
323
- * Fixed missing HTML tags
324
-
325
- = 1.4.2 =
326
- * Fixed a typo
327
-
328
- = 1.4.1 =
329
- * Added some new hooks
330
- * Added namespaces to all hooks
331
- * Added meta links
332
- * Fixed bug where font drop downs closed immediately in Firefox
333
- * Fixed bug where getInstance did not return the same instance sometimes
334
- * Fixed bug where the font option did not generate CSS correctly
335
- * Fixed bug where only one Titan instance generated CSS files
336
- * Fixed bug where CSS were being generated multiple times
337
- * Fixed bug where option IDs in different instances caused an error
338
- * Fixed bug where the live preview lagged a lot
339
-
340
- = 1.4 =
341
- * Added new Font option
342
- * Added new Sortable option
343
- * Fixed bug where generated CSS values aren't showing up (thanks @ardalann)
344
-
345
- = 1.3 =
346
- * Added Spanish translations (thanks @maperezotero)
347
- * Added Code option that uses Ace
348
- * No need to use the post ID when getting getOption
349
- * createMetaBox can now accept an array in the post_type parameter
350
- * Now using Travis CI
351
- * Tons of bug fixes
352
-
353
- = 1.2.1 =
354
- * Added French translations (thanks @PunKeel)
355
- * Added removeOption function
356
- * Fixed bug where fonts sometimes cannot be changed
357
- * Fixed fatal error encountered sometimes when generating CSS
358
- * Fixed bug where other post types are unable to be saved
359
-
360
- = 1.2 =
361
- * Better embedding handling
362
- * Automatic CSS generation
363
-
364
- = 1.1.1 =
365
- * Titan can now be embedded into themes and plugins
366
- * Added Radio Image option
367
- * Better layout for Google WebFont option
368
- * Now enforcing unique option ids
369
- * Fixed bug that shows up in fresh WP installs
370
-
371
- = 1.1 =
372
- * Added WYSIWYG editor option
373
- * Added Radio Palette option
374
- * Fixed bug where special characters in admin pages and tabs were not redirecting correctly
375
- * Fixed minor bug where customizer options become reordered
376
- * Minor bug fixes
377
-
378
- = 1.0.1 - 1.0.2 =
379
- * Added styling to the admin options
380
- * Fixed minor debug error in options (Thanks to @Dovy)
381
-
382
- = 1.0 =
383
- First release
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/titan-framework-checker.php DELETED
@@ -1,146 +0,0 @@
1
- <?php
2
- /**
3
- * This script is not used within Titan Framework itself.
4
- *
5
- * This script is meant to be used with your Titan Framework-dependent theme or plugin,
6
- * so that your theme/plugin can verify whether the framework is installed.
7
- *
8
- * If Titan is not installed, then the script will display a notice with a link to
9
- * Titan. If Titan is installed but not activated, it will display the appropriate notice as well.
10
- *
11
- * To use this script, just copy it into your theme/plugin directory then add this in the main file of your project:
12
- *
13
- * require_once( 'titan-framework-checker.php' );
14
- *
15
- * Changelog:
16
- * v1.9
17
- * * Simplified class
18
- * v1.7.4
19
- * * Now integrates with TGM Plugin Activation - uses TGM instead of displaying
20
- * our own admin notice
21
- * v1.7.7
22
- * * Added filters to notices
23
- *
24
- * @package Titan Framework
25
- */
26
-
27
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly.
28
- }
29
-
30
- if ( ! class_exists( 'TitanFrameworkChecker' ) ) {
31
-
32
- /**
33
- * Titan Framework Checker.
34
- *
35
- * @since 1.6
36
- */
37
- class TitanFrameworkChecker {
38
-
39
-
40
- const SEARCH_REGEX = '/titan-framework.php/i';
41
- const TITAN_CLASS = 'TitanFramework';
42
- const PLUGIN_SLUG = 'titan-framework';
43
-
44
-
45
- /**
46
- * Constructor, add hooks for checking for Titan Framework.
47
- *
48
- * @since 1.6
49
- */
50
- function __construct() {
51
- add_action( 'admin_notices', array( $this, 'display_install_or_active_notice' ), 2 );
52
- add_action( 'tgmpa_register', array( $this, 'tgm_plugin_activation_include' ) );
53
- }
54
-
55
-
56
- /**
57
- * Checks the existence of Titan Framework and prompts the display of a notice.
58
- *
59
- * @since 1.6
60
- */
61
- public function display_install_or_active_notice() {
62
-
63
- // Check for TGM use, if used, let TGM do the notice.
64
- // We do this here since perform_check() is too early.
65
- if ( function_exists( 'tgmpa' ) ) {
66
- return;
67
- }
68
-
69
- // If the plugin does not exist, throw admin notice to install.
70
- if ( ! $this->plugin_exists() ) {
71
- echo "<div class='error'><p><strong>"
72
- . esc_html( apply_filters( 'titan_checker_installation_notice', __( 'Titan Framework needs to be installed.', 'default' ) ) )
73
- . sprintf( " <a href='%s'>%s</a>",
74
- esc_url( admin_url( 'plugin-install.php?tab=search&type=term&s=titan+framework' ) ),
75
- esc_html( apply_filters( 'titan_checker_search_plugin_notice', __( 'Click here to search for the plugin.', 'default' ) ) )
76
- )
77
- . '</strong></p></div>';
78
-
79
- // If the class doesn't exist, the plugin is inactive. Throw admin notice to activate plugin.
80
- } else if ( ! class_exists( apply_filters( 'tf_framework_checker_titan_class', self::TITAN_CLASS ) ) ) {
81
- echo "<div class='error'><p><strong>"
82
- . esc_html( apply_filters( 'titan_checker_activation_notice', __( 'Titan Framework needs to be activated.', 'default' ) ) )
83
- . sprintf( " <a href='%s'>%s</a>",
84
- esc_url( admin_url( 'plugins.php' ) ),
85
- esc_html( apply_filters( 'titan_checker_activate_plugin_notice', __( 'Click here to go to the plugins page and activate it.', 'default' ) ) )
86
- )
87
- . '</strong></p></div>';
88
- }
89
- }
90
-
91
-
92
- /**
93
- * Checks the existence of Titan Framework in the list of plugins.
94
- * It uses the slug path of the plugin for checking.
95
- *
96
- * @since 1.6
97
- *
98
- * @return boolean True if Titan Framework is installed (even if not activated).
99
- */
100
- public function plugin_exists() {
101
- // Required function as it is only loaded in admin pages.
102
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
103
-
104
- // Get all plugins, activated or not.
105
- $plugins = get_plugins();
106
-
107
- // Check plugin existence by checking if the name is registered as an array key. get_plugins collects all plugin path into arrays.
108
- foreach ( $plugins as $slug => $plugin ) {
109
- $search_regex = apply_filters( 'tf_framework_checker_regex', self::SEARCH_REGEX );
110
- if ( preg_match( $search_regex, $slug, $matches ) ) {
111
- return true;
112
- }
113
- }
114
-
115
- return false;
116
- }
117
-
118
-
119
- /**
120
- * Includes Titan Framework in TGM Plugin Activation if it's available.
121
- *
122
- * @since 1.7.4
123
- *
124
- * @return void
125
- *
126
- * @see http://tgmpluginactivation.com/
127
- *
128
- * @codeCoverageIgnore
129
- */
130
- public function tgm_plugin_activation_include() {
131
- if ( function_exists( 'tgmpa' ) ) {
132
- tgmpa( array(
133
- array(
134
- 'name' => 'Titan Framework',
135
- 'slug' => self::PLUGIN_SLUG,
136
- 'required' => true,
137
- ),
138
- ) );
139
- }
140
- }
141
- }
142
-
143
- new TitanFrameworkChecker();
144
-
145
-
146
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
options-framework/titan-framework/titan-framework-embedder.php DELETED
@@ -1,68 +0,0 @@
1
- <?php
2
- /**
3
- * This script is not used within Titan Framework itself.
4
- *
5
- * This script is meant to be used when embedding Titan Framework into your
6
- * theme or plugin.
7
- *
8
- * To embed Titan Framework into your project, copy the whole Titan Framework folder
9
- * into your project, then in your functions.php or main plugin script, do a
10
- * require_once( 'Titan-Framework/titan-framework-embedder.php' );
11
- *
12
- * When done, your project will use the embedded copy of Titan Framework. When the plugin
13
- * version is activated, that one will be used instead.
14
- *
15
- * For more details on embedding, read our docs:
16
- * http://www.titanframework.net/embedding-titan-framework-in-your-project/
17
- *
18
- * @package Titan Framework
19
- */
20
-
21
- if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly.
22
- }
23
-
24
- if ( ! class_exists( 'TitanFrameworkEmbedder' ) ) {
25
-
26
-
27
- /**
28
- * Titan Framework Embedder
29
- *
30
- * @since 1.6
31
- */
32
- class TitanFrameworkEmbedder {
33
-
34
-
35
- /**
36
- * Constructor, add hooks for embedding for Titan Framework
37
- *
38
- * @since 1.6
39
- */
40
- function __construct() {
41
- // Don't do anything when we're activating a plugin to prevent errors
42
- // on redeclaring Titan classes.
43
- if ( is_admin() ) {
44
- if ( ! empty( $_GET['action'] ) && ! empty( $_GET['plugin'] ) ) { // Input var: okay.
45
- if ( 'activate' === $_GET['action'] ) { // Input var: okay.
46
- return;
47
- }
48
- }
49
- }
50
- add_action( 'after_setup_theme', array( $this, 'perform_check' ), 1 );
51
- }
52
-
53
-
54
- /**
55
- * Uses Titan Framework
56
- *
57
- * @since 1.6
58
- */
59
- public function perform_check() {
60
- if ( class_exists( 'TitanFramework' ) ) {
61
- return;
62
- }
63
- require_once( 'titan-framework.php' );
64
- }
65
- }
66
-
67
- new TitanFrameworkEmbedder();
68
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: takanakui, freemius
3
  link: http://profiles.wordpress.org/takanakui
4
  Tags: mobile, navigation, responsive, menu, responsive menu, mobile menu, tablet menu, hamburger menu, hamburger, wordpress responsive menu, wordpress mobile menu, canvas menu
5
  Requires at least: 4.4
6
- Tested up to: 5.6
7
- Stable tag: 2.8.1.8.1
8
  Requires PHP: 5.6
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
@@ -132,6 +132,14 @@ Not available at the moment
132
 
133
  == Changelog ==
134
 
 
 
 
 
 
 
 
 
135
  = 2.8.1.8.1 =
136
  * Fix! - Remove piece of premium option
137
 
@@ -142,7 +150,6 @@ Not available at the moment
142
  = 2.8.1.7 =
143
  * New! - Visual tool to identify menus and other elements to hide
144
 
145
-
146
  = 2.8.1.6.1 =
147
  * Fix! - Fix error on function that doesn't exist
148
 
3
  link: http://profiles.wordpress.org/takanakui
4
  Tags: mobile, navigation, responsive, menu, responsive menu, mobile menu, tablet menu, hamburger menu, hamburger, wordpress responsive menu, wordpress mobile menu, canvas menu
5
  Requires at least: 4.4
6
+ Tested up to: 5.7
7
+ Stable tag: 2.8.2
8
  Requires PHP: 5.6
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
132
 
133
  == Changelog ==
134
 
135
+
136
+ = 2.8.2 =
137
+ * Fix! - Remove metabox upgrade
138
+ * New! - New Settings Design/UX
139
+ * Improvment! - Remove metabox upgrade
140
+ * Improvment! - Initial process of removing TitanFramework
141
+ * Improvment! - Update Freemius SDK
142
+
143
  = 2.8.1.8.1 =
144
  * Fix! - Remove piece of premium option
145
 
150
  = 2.8.1.7 =
151
  * New! - Visual tool to identify menus and other elements to hide
152
 
 
153
  = 2.8.1.6.1 =
154
  * Fix! - Fix error on function that doesn't exist
155