Jupiter X Core - Version 1.12.0

Version Description

Download this release

Release Info

Developer artbees
Plugin Icon wp plugin Jupiter X Core
Version 1.12.0
Comparing to
See all releases

Code changes from version 1.11.0 to 1.12.0

Files changed (324) hide show
  1. assets/images/warning-badge.svg +0 -0
  2. includes/compiler/vendors/lessc.php +5 -5
  3. includes/control-panel/includes/class-db-php-manager.php +250 -250
  4. includes/control-panel/includes/class-export-import-content.php +1304 -1304
  5. includes/control-panel/includes/class-install-plugins.php +1 -1
  6. includes/control-panel/includes/class-install-template.php +1875 -1875
  7. includes/control-panel/includes/logic-messages.php +1 -1
  8. includes/customizer/api/classes/class-multilingual.php +1 -1
  9. includes/customizer/api/includes/class-templates.php +21 -0
  10. includes/customizer/api/includes/control/class-template.php +110 -110
  11. includes/customizer/settings/blog-archive/settings.php +1 -1
  12. includes/customizer/settings/comment/action-link.php +0 -2
  13. includes/customizer/settings/page-single/settings.php +1 -0
  14. includes/customizer/vendors/kirki/LICENSE +0 -0
  15. includes/customizer/vendors/kirki/assets/css/kirki-styles.css +0 -0
  16. includes/customizer/vendors/kirki/assets/images/1c.png +0 -0
  17. includes/customizer/vendors/kirki/assets/images/2cl.png +0 -0
  18. includes/customizer/vendors/kirki/assets/images/2cr.png +0 -0
  19. includes/customizer/vendors/kirki/assets/images/3cl.png +0 -0
  20. includes/customizer/vendors/kirki/assets/images/3cm.png +0 -0
  21. includes/customizer/vendors/kirki/assets/images/3cr.png +0 -0
  22. includes/customizer/vendors/kirki/assets/images/jquery.fs.stepper-arrows.png +0 -0
  23. includes/customizer/vendors/kirki/assets/images/kirki-bottom.png +0 -0
  24. includes/customizer/vendors/kirki/assets/images/kirki-bottom.svg +0 -0
  25. includes/customizer/vendors/kirki/assets/images/kirki-logo.svg +0 -0
  26. includes/customizer/vendors/kirki/assets/vendor/fontawesome/fontawesome.json +0 -0
  27. includes/customizer/vendors/kirki/assets/vendor/selectWoo/css/select2.css +0 -0
  28. includes/customizer/vendors/kirki/assets/vendor/selectWoo/css/select2.min.css +0 -0
  29. includes/customizer/vendors/kirki/assets/vendor/selectWoo/css/selectWoo.css +0 -0
  30. includes/customizer/vendors/kirki/assets/vendor/selectWoo/css/selectWoo.min.css +0 -0
  31. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ar.js +0 -0
  32. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/az.js +0 -0
  33. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/bg.js +0 -0
  34. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ca.js +0 -0
  35. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/cs.js +0 -0
  36. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/da.js +0 -0
  37. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/de.js +0 -0
  38. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/el.js +0 -0
  39. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/en.js +0 -0
  40. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/es.js +0 -0
  41. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/et.js +0 -0
  42. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/eu.js +0 -0
  43. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/fa.js +0 -0
  44. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/fi.js +0 -0
  45. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/fr.js +0 -0
  46. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/gl.js +0 -0
  47. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/he.js +0 -0
  48. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/hi.js +0 -0
  49. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/hr.js +0 -0
  50. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/hu.js +0 -0
  51. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/hy.js +0 -0
  52. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/id.js +0 -0
  53. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/is.js +0 -0
  54. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/it.js +0 -0
  55. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ja.js +0 -0
  56. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/km.js +0 -0
  57. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ko.js +0 -0
  58. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/lt.js +0 -0
  59. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/lv.js +0 -0
  60. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/mk.js +0 -0
  61. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ms.js +0 -0
  62. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/nb.js +0 -0
  63. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/nl.js +0 -0
  64. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/pl.js +0 -0
  65. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/pt-BR.js +0 -0
  66. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/pt.js +0 -0
  67. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ro.js +0 -0
  68. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ru.js +0 -0
  69. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sk.js +0 -0
  70. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sl.js +0 -0
  71. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sr-Cyrl.js +0 -0
  72. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sr.js +0 -0
  73. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sv.js +0 -0
  74. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/th.js +0 -0
  75. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/tr.js +0 -0
  76. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/uk.js +0 -0
  77. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/vi.js +0 -0
  78. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/zh-CN.js +0 -0
  79. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/zh-TW.js +0 -0
  80. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/select2.full.js +0 -0
  81. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/select2.full.min.js +0 -0
  82. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/select2.js +0 -0
  83. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/select2.min.js +0 -0
  84. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/selectWoo.full.js +0 -0
  85. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/selectWoo.full.min.js +0 -0
  86. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/selectWoo.js +0 -0
  87. includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/selectWoo.min.js +0 -0
  88. includes/customizer/vendors/kirki/assets/vendor/selectWoo/kirki.css +0 -0
  89. includes/customizer/vendors/kirki/assets/vendor/selectWoo/kirki.css.map +0 -0
  90. includes/customizer/vendors/kirki/assets/vendor/selectWoo/kirki.scss +0 -0
  91. includes/customizer/vendors/kirki/assets/vendor/wp-color-picker-alpha/wp-color-picker-alpha.js +0 -0
  92. includes/customizer/vendors/kirki/class-kirki-autoload.php +0 -0
  93. includes/customizer/vendors/kirki/controls/class-kirki-controls.php +0 -0
  94. includes/customizer/vendors/kirki/controls/css/styles.css +0 -0
  95. includes/customizer/vendors/kirki/controls/js/script.js +0 -0
  96. includes/customizer/vendors/kirki/controls/js/script.min.js +0 -0
  97. includes/customizer/vendors/kirki/controls/php/class-kirki-control-background.php +0 -0
  98. includes/customizer/vendors/kirki/controls/php/class-kirki-control-base.php +0 -0
  99. includes/customizer/vendors/kirki/controls/php/class-kirki-control-checkbox.php +0 -0
  100. includes/customizer/vendors/kirki/controls/php/class-kirki-control-code.php +0 -0
  101. includes/customizer/vendors/kirki/controls/php/class-kirki-control-color-palette.php +0 -0
  102. includes/customizer/vendors/kirki/controls/php/class-kirki-control-color.php +0 -0
  103. includes/customizer/vendors/kirki/controls/php/class-kirki-control-cropped-image.php +0 -0
  104. includes/customizer/vendors/kirki/controls/php/class-kirki-control-custom.php +0 -0
  105. includes/customizer/vendors/kirki/controls/php/class-kirki-control-dashicons.php +0 -0
  106. includes/customizer/vendors/kirki/controls/php/class-kirki-control-date.php +0 -0
  107. includes/customizer/vendors/kirki/controls/php/class-kirki-control-dimension.php +0 -0
  108. includes/customizer/vendors/kirki/controls/php/class-kirki-control-dimensions.php +0 -0
  109. includes/customizer/vendors/kirki/controls/php/class-kirki-control-editor.php +0 -0
  110. includes/customizer/vendors/kirki/controls/php/class-kirki-control-generic.php +0 -0
  111. includes/customizer/vendors/kirki/controls/php/class-kirki-control-image.php +0 -0
  112. includes/customizer/vendors/kirki/controls/php/class-kirki-control-multicheck.php +0 -0
  113. includes/customizer/vendors/kirki/controls/php/class-kirki-control-multicolor.php +0 -0
  114. includes/customizer/vendors/kirki/controls/php/class-kirki-control-number.php +0 -0
  115. includes/customizer/vendors/kirki/controls/php/class-kirki-control-palette.php +0 -0
  116. includes/customizer/vendors/kirki/controls/php/class-kirki-control-radio-buttonset.php +0 -0
  117. includes/customizer/vendors/kirki/controls/php/class-kirki-control-radio-image.php +0 -0
  118. includes/customizer/vendors/kirki/controls/php/class-kirki-control-radio.php +0 -0
  119. includes/customizer/vendors/kirki/controls/php/class-kirki-control-repeater.php +0 -0
  120. includes/customizer/vendors/kirki/controls/php/class-kirki-control-select.php +0 -0
  121. includes/customizer/vendors/kirki/controls/php/class-kirki-control-slider.php +0 -0
  122. includes/customizer/vendors/kirki/controls/php/class-kirki-control-sortable.php +0 -0
  123. includes/customizer/vendors/kirki/controls/php/class-kirki-control-switch.php +0 -0
  124. includes/customizer/vendors/kirki/controls/php/class-kirki-control-toggle.php +0 -0
  125. includes/customizer/vendors/kirki/controls/php/class-kirki-control-typography.php +0 -0
  126. includes/customizer/vendors/kirki/controls/php/class-kirki-control-upload.php +0 -0
  127. includes/customizer/vendors/kirki/controls/php/class-kirki-settings-repeater-setting.php +0 -0
  128. includes/customizer/vendors/kirki/controls/views/code.php +0 -0
  129. includes/customizer/vendors/kirki/controls/views/color.php +0 -0
  130. includes/customizer/vendors/kirki/controls/views/generic.php +0 -0
  131. includes/customizer/vendors/kirki/controls/views/number.php +0 -0
  132. includes/customizer/vendors/kirki/controls/views/radio.php +0 -0
  133. includes/customizer/vendors/kirki/controls/views/select.php +0 -0
  134. includes/customizer/vendors/kirki/controls/views/textarea.php +0 -0
  135. includes/customizer/vendors/kirki/core/class-kirki-config.php +0 -0
  136. includes/customizer/vendors/kirki/core/class-kirki-control.php +0 -0
  137. includes/customizer/vendors/kirki/core/class-kirki-field.php +0 -0
  138. includes/customizer/vendors/kirki/core/class-kirki-helper.php +0 -0
  139. includes/customizer/vendors/kirki/core/class-kirki-init.php +0 -0
  140. includes/customizer/vendors/kirki/core/class-kirki-l10n.php +0 -0
  141. includes/customizer/vendors/kirki/core/class-kirki-modules.php +0 -0
  142. includes/customizer/vendors/kirki/core/class-kirki-panel.php +0 -0
  143. includes/customizer/vendors/kirki/core/class-kirki-sanitize-values.php +0 -0
  144. includes/customizer/vendors/kirki/core/class-kirki-section.php +0 -0
  145. includes/customizer/vendors/kirki/core/class-kirki-sections.php +0 -0
  146. includes/customizer/vendors/kirki/core/class-kirki-setting-site-option.php +0 -0
  147. includes/customizer/vendors/kirki/core/class-kirki-setting-user-meta.php +0 -0
  148. includes/customizer/vendors/kirki/core/class-kirki-settings.php +0 -0
  149. includes/customizer/vendors/kirki/core/class-kirki-toolkit.php +0 -0
  150. includes/customizer/vendors/kirki/core/class-kirki-util.php +0 -0
  151. includes/customizer/vendors/kirki/core/class-kirki-values.php +0 -0
  152. includes/customizer/vendors/kirki/core/class-kirki.php +0 -0
  153. includes/customizer/vendors/kirki/core/dynamic-css.php +0 -0
  154. includes/customizer/vendors/kirki/deprecated/classes.php +0 -0
  155. includes/customizer/vendors/kirki/deprecated/deprecated.php +0 -0
  156. includes/customizer/vendors/kirki/deprecated/filters.php +0 -0
  157. includes/customizer/vendors/kirki/deprecated/functions.php +0 -0
  158. includes/customizer/vendors/kirki/field/class-kirki-field-background.php +0 -0
  159. includes/customizer/vendors/kirki/field/class-kirki-field-checkbox.php +0 -0
  160. includes/customizer/vendors/kirki/field/class-kirki-field-code.php +0 -0
  161. includes/customizer/vendors/kirki/field/class-kirki-field-color-alpha.php +0 -0
  162. includes/customizer/vendors/kirki/field/class-kirki-field-color-palette.php +0 -0
  163. includes/customizer/vendors/kirki/field/class-kirki-field-color.php +0 -0
  164. includes/customizer/vendors/kirki/field/class-kirki-field-custom.php +0 -0
  165. includes/customizer/vendors/kirki/field/class-kirki-field-dashicons.php +0 -0
  166. includes/customizer/vendors/kirki/field/class-kirki-field-date.php +0 -0
  167. includes/customizer/vendors/kirki/field/class-kirki-field-dimension.php +0 -0
  168. includes/customizer/vendors/kirki/field/class-kirki-field-dimensions.php +0 -0
  169. includes/customizer/vendors/kirki/field/class-kirki-field-editor.php +0 -0
  170. includes/customizer/vendors/kirki/field/class-kirki-field-fontawesome.php +0 -0
  171. includes/customizer/vendors/kirki/field/class-kirki-field-generic.php +0 -0
  172. includes/customizer/vendors/kirki/field/class-kirki-field-group-title.php +0 -0
  173. includes/customizer/vendors/kirki/field/class-kirki-field-image.php +0 -0
  174. includes/customizer/vendors/kirki/field/class-kirki-field-kirki-generic.php +0 -0
  175. includes/customizer/vendors/kirki/field/class-kirki-field-link.php +0 -0
  176. includes/customizer/vendors/kirki/field/class-kirki-field-multicheck.php +0 -0
  177. includes/customizer/vendors/kirki/field/class-kirki-field-multicolor.php +0 -0
  178. includes/customizer/vendors/kirki/field/class-kirki-field-number.php +0 -0
  179. includes/customizer/vendors/kirki/field/class-kirki-field-palette.php +0 -0
  180. includes/customizer/vendors/kirki/field/class-kirki-field-preset.php +0 -0
  181. includes/customizer/vendors/kirki/field/class-kirki-field-radio-buttonset.php +0 -0
  182. includes/customizer/vendors/kirki/field/class-kirki-field-radio-image.php +0 -0
  183. includes/customizer/vendors/kirki/field/class-kirki-field-radio.php +0 -0
  184. includes/customizer/vendors/kirki/field/class-kirki-field-repeater.php +0 -0
  185. includes/customizer/vendors/kirki/field/class-kirki-field-select.php +0 -0
  186. includes/customizer/vendors/kirki/field/class-kirki-field-select2-multiple.php +0 -0
  187. includes/customizer/vendors/kirki/field/class-kirki-field-select2.php +0 -0
  188. includes/customizer/vendors/kirki/field/class-kirki-field-slider.php +0 -0
  189. includes/customizer/vendors/kirki/field/class-kirki-field-sortable.php +0 -0
  190. includes/customizer/vendors/kirki/field/class-kirki-field-spacing.php +0 -0
  191. includes/customizer/vendors/kirki/field/class-kirki-field-switch.php +0 -0
  192. includes/customizer/vendors/kirki/field/class-kirki-field-text.php +0 -0
  193. includes/customizer/vendors/kirki/field/class-kirki-field-textarea.php +0 -0
  194. includes/customizer/vendors/kirki/field/class-kirki-field-toggle.php +0 -0
  195. includes/customizer/vendors/kirki/field/class-kirki-field-typography.php +0 -0
  196. includes/customizer/vendors/kirki/field/class-kirki-field-upload.php +0 -0
  197. includes/customizer/vendors/kirki/field/class-kirki-field-url.php +0 -0
  198. includes/customizer/vendors/kirki/kirki.php +0 -0
  199. includes/customizer/vendors/kirki/lib/class-aricolor.php +0 -0
  200. includes/customizer/vendors/kirki/lib/class-kirki-color.php +0 -0
  201. includes/customizer/vendors/kirki/modules/css-vars/class-kirki-modules-css-vars.php +0 -0
  202. includes/customizer/vendors/kirki/modules/css-vars/script.js +0 -0
  203. includes/customizer/vendors/kirki/modules/css/class-kirki-css-to-file.php +0 -0
  204. includes/customizer/vendors/kirki/modules/css/class-kirki-modules-css-generator.php +0 -0
  205. includes/customizer/vendors/kirki/modules/css/class-kirki-modules-css.php +0 -0
  206. includes/customizer/vendors/kirki/modules/css/class-kirki-output.php +0 -0
  207. includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-background.php +0 -0
  208. includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-dimensions.php +0 -0
  209. includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-image.php +0 -0
  210. includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-multicolor.php +0 -0
  211. includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-typography.php +0 -0
  212. includes/customizer/vendors/kirki/modules/css/property/class-kirki-output-property-background-image.php +0 -0
  213. includes/customizer/vendors/kirki/modules/css/property/class-kirki-output-property-background-position.php +0 -0
  214. includes/customizer/vendors/kirki/modules/css/property/class-kirki-output-property-font-family.php +0 -0
  215. includes/customizer/vendors/kirki/modules/css/property/class-kirki-output-property.php +0 -0
  216. includes/customizer/vendors/kirki/modules/custom-sections/class-kirki-modules-custom-sections.php +0 -0
  217. includes/customizer/vendors/kirki/modules/custom-sections/panels/class-kirki-panels-nested-panel.php +0 -0
  218. includes/customizer/vendors/kirki/modules/custom-sections/sections.css +0 -0
  219. includes/customizer/vendors/kirki/modules/custom-sections/sections.js +0 -0
  220. includes/customizer/vendors/kirki/modules/custom-sections/sections/class-kirki-sections-default-section.php +0 -0
  221. includes/customizer/vendors/kirki/modules/custom-sections/sections/class-kirki-sections-expanded-section.php +0 -0
  222. includes/customizer/vendors/kirki/modules/custom-sections/sections/class-kirki-sections-nested-section.php +0 -0
  223. includes/customizer/vendors/kirki/modules/customizer-branding/branding.js +0 -0
  224. includes/customizer/vendors/kirki/modules/customizer-branding/class-kirki-modules-customizer-branding.php +0 -0
  225. includes/customizer/vendors/kirki/modules/customizer-styling/class-kirki-modules-customizer-styling.php +0 -0
  226. includes/customizer/vendors/kirki/modules/field-dependencies/class-kirki-modules-field-dependencies.php +0 -0
  227. includes/customizer/vendors/kirki/modules/field-dependencies/field-dependencies.js +0 -0
  228. includes/customizer/vendors/kirki/modules/icons/class-kirki-modules-icons.php +0 -0
  229. includes/customizer/vendors/kirki/modules/icons/icons.js +0 -0
  230. includes/customizer/vendors/kirki/modules/loading/class-kirki-modules-loading.php +0 -0
  231. includes/customizer/vendors/kirki/modules/post-meta/class-kirki-modules-post-meta.php +0 -0
  232. includes/customizer/vendors/kirki/modules/post-meta/customize-controls.js +0 -0
  233. includes/customizer/vendors/kirki/modules/post-meta/customize-preview.js +0 -0
  234. includes/customizer/vendors/kirki/modules/postmessage/class-kirki-modules-postmessage.php +0 -0
  235. includes/customizer/vendors/kirki/modules/postmessage/postmessage.js +0 -0
  236. includes/customizer/vendors/kirki/modules/preset/class-kirki-modules-preset.php +0 -0
  237. includes/customizer/vendors/kirki/modules/preset/preset.js +0 -0
  238. includes/customizer/vendors/kirki/modules/selective-refresh/class-kirki-modules-selective-refresh.php +0 -0
  239. includes/customizer/vendors/kirki/modules/tooltips/class-kirki-modules-tooltips.php +0 -0
  240. includes/customizer/vendors/kirki/modules/tooltips/tooltip.css +0 -0
  241. includes/customizer/vendors/kirki/modules/tooltips/tooltip.js +0 -0
  242. includes/customizer/vendors/kirki/modules/webfont-loader/class-kirki-modules-webfont-loader.php +0 -0
  243. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/closure.js +0 -0
  244. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/cssclassname.js +0 -0
  245. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/domhelper.js +0 -0
  246. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/eventdispatcher.js +0 -0
  247. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/font.js +0 -0
  248. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontmodule.js +0 -0
  249. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontmoduleloader.js +0 -0
  250. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontruler.js +0 -0
  251. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontwatcher.js +0 -0
  252. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontwatchrunner.js +0 -0
  253. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/initialize.js +0 -0
  254. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/nativefontwatchrunner.js +0 -0
  255. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/stylesheetwaiter.js +0 -0
  256. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/webfont.js +0 -0
  257. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules.yml +0 -0
  258. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/custom.js +0 -0
  259. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/fontdeck.js +0 -0
  260. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/google/fontapiparser.js +0 -0
  261. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/google/fontapiurlbuilder.js +0 -0
  262. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/google/googlefontapi.js +0 -0
  263. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/monotype.js +0 -0
  264. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/typekit.js +0 -0
  265. includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/webfontloader.js +0 -0
  266. includes/customizer/vendors/kirki/modules/webfonts/class-kirki-fonts-google-local.php +0 -0
  267. includes/customizer/vendors/kirki/modules/webfonts/class-kirki-fonts-google.php +0 -0
  268. includes/customizer/vendors/kirki/modules/webfonts/class-kirki-fonts.php +0 -0
  269. includes/customizer/vendors/kirki/modules/webfonts/class-kirki-modules-webfonts-async.php +0 -0
  270. includes/customizer/vendors/kirki/modules/webfonts/class-kirki-modules-webfonts-local.php +0 -0
  271. includes/customizer/vendors/kirki/modules/webfonts/class-kirki-modules-webfonts.php +0 -0
  272. includes/customizer/vendors/kirki/modules/webfonts/webfont-files.json +0 -0
  273. includes/customizer/vendors/kirki/modules/webfonts/webfont-names.json +0 -0
  274. includes/customizer/vendors/kirki/modules/webfonts/webfonts.json +0 -0
  275. includes/customizer/vendors/kirki/readme.txt +0 -0
  276. includes/customizer/vendors/kirki/upgrade-notifications.php +0 -0
  277. includes/parse-css/class.php +0 -0
  278. includes/parse-css/functions.php +0 -0
  279. includes/parse-css/vendors/autoload.php +0 -0
  280. includes/parse-css/vendors/composer/ClassLoader.php +0 -0
  281. includes/parse-css/vendors/composer/LICENSE +0 -0
  282. includes/parse-css/vendors/composer/autoload_classmap.php +0 -0
  283. includes/parse-css/vendors/composer/autoload_namespaces.php +0 -0
  284. includes/parse-css/vendors/composer/autoload_psr4.php +0 -0
  285. includes/parse-css/vendors/composer/autoload_real.php +0 -0
  286. includes/parse-css/vendors/composer/autoload_static.php +0 -0
  287. includes/parse-css/vendors/composer/installed.json +0 -0
  288. includes/parse-css/vendors/prestashop/rtlcss-php/CHANGELOG.md +0 -0
  289. includes/parse-css/vendors/prestashop/rtlcss-php/LICENSE +0 -0
  290. includes/parse-css/vendors/prestashop/rtlcss-php/README.md +0 -0
  291. includes/parse-css/vendors/prestashop/rtlcss-php/phpunit.xml +0 -0
  292. includes/parse-css/vendors/prestashop/rtlcss-php/src/FlipOptions.php +0 -0
  293. includes/parse-css/vendors/prestashop/rtlcss-php/src/RtlCss.php +0 -0
  294. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/AbstractFlipLeftRight.php +0 -0
  295. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipBackground.php +0 -0
  296. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipBorderRadius.php +0 -0
  297. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipCursor.php +0 -0
  298. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipDirection.php +0 -0
  299. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipLeftProperty.php +0 -0
  300. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipLeftValue.php +0 -0
  301. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipMarginPaddingBorder.php +0 -0
  302. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipRightProperty.php +0 -0
  303. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipShadow.php +0 -0
  304. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipTransform.php +0 -0
  305. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipTransformOrigin.php +0 -0
  306. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipTransition.php +0 -0
  307. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/Operation/SizeFlipper.php +0 -0
  308. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/TransformationException.php +0 -0
  309. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/TransformationInterface.php +0 -0
  310. includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/Value/TransformableStringValue.php +0 -0
  311. includes/parse-css/vendors/prestashop/rtlcss-php/tests/CSSJanus/CSSJanusTest.php +0 -0
  312. includes/parse-css/vendors/prestashop/rtlcss-php/tests/CSSJanus/cssjanus-1.2.1-adapted.json +0 -0
  313. includes/parse-css/vendors/prestashop/rtlcss-php/tests/CSSJanus/cssjanus-1.2.1.json +0 -0
  314. includes/parse-css/vendors/prestashop/rtlcss-php/tests/PrestaShop/RtlCss/RtlCssTest.php +0 -0
  315. includes/parse-css/vendors/prestashop/rtlcss-php/tests/bootstrap.php +0 -0
  316. includes/updater/views/html-notice-update-extensions-themes-inline.php +0 -0
  317. includes/widgets/functions.php +0 -0
  318. includes/widgets/widget-nav-menu.php +0 -0
  319. includes/widgets/widget-social.php +0 -0
  320. includes/woocommerce/wc-load-more.js +27 -7
  321. includes/woocommerce/woocommerce-load-more.php +26 -6
  322. jupiterx-core.php +1 -1
  323. languages/jupiterx-core.pot +1482 -1482
  324. readme.txt +1 -0
assets/images/warning-badge.svg CHANGED
File without changes
includes/compiler/vendors/lessc.php CHANGED
@@ -631,7 +631,7 @@ class JupiterX_Lessc {
631
  }
632
 
633
  // check for a rest
634
- $last = end($args);
635
  if ($last[0] == "rest") {
636
  $rest = array_slice($orderedValues, count($args) - 1);
637
  $this->set($last[1], $this->reduce(array("list", " ", $rest)));
@@ -716,7 +716,7 @@ class JupiterX_Lessc {
716
  if ($suffix !== null &&
717
  $subProp[0] == "assign" &&
718
  is_string($subProp[1]) &&
719
- $subProp[1]{0} != $this->vPrefix)
720
  {
721
  $subProp[2] = array(
722
  'list', ' ',
@@ -1774,7 +1774,7 @@ class JupiterX_Lessc {
1774
  $this->pushEnv();
1775
  $parser = new lessc_parser($this, __METHOD__);
1776
  foreach ($args as $name => $strValue) {
1777
- if ($name{0} != '@') $name = '@'.$name;
1778
  $parser->count = 0;
1779
  $parser->buffer = (string)$strValue;
1780
  if (!$parser->propertyValue($value)) {
@@ -2433,7 +2433,7 @@ class lessc_parser {
2433
  $hidden = true;
2434
  if (!isset($block->args)) {
2435
  foreach ($block->tags as $tag) {
2436
- if (!is_string($tag) || $tag{0} != $this->lessc->mPrefix) {
2437
  $hidden = false;
2438
  break;
2439
  }
@@ -2487,7 +2487,7 @@ class lessc_parser {
2487
  protected function fixTags($tags) {
2488
  // move @ tags out of variable namespace
2489
  foreach ($tags as &$tag) {
2490
- if ($tag{0} == $this->lessc->vPrefix)
2491
  $tag[0] = $this->lessc->mPrefix;
2492
  }
2493
  return $tags;
631
  }
632
 
633
  // check for a rest
634
+ $last = (array) end($args);
635
  if ($last[0] == "rest") {
636
  $rest = array_slice($orderedValues, count($args) - 1);
637
  $this->set($last[1], $this->reduce(array("list", " ", $rest)));
716
  if ($suffix !== null &&
717
  $subProp[0] == "assign" &&
718
  is_string($subProp[1]) &&
719
+ $subProp[1][0] != $this->vPrefix)
720
  {
721
  $subProp[2] = array(
722
  'list', ' ',
1774
  $this->pushEnv();
1775
  $parser = new lessc_parser($this, __METHOD__);
1776
  foreach ($args as $name => $strValue) {
1777
+ if ($name[0] != '@') $name = '@'.$name;
1778
  $parser->count = 0;
1779
  $parser->buffer = (string)$strValue;
1780
  if (!$parser->propertyValue($value)) {
2433
  $hidden = true;
2434
  if (!isset($block->args)) {
2435
  foreach ($block->tags as $tag) {
2436
+ if (!is_string($tag) || $tag[0] != $this->lessc->mPrefix) {
2437
  $hidden = false;
2438
  break;
2439
  }
2487
  protected function fixTags($tags) {
2488
  // move @ tags out of variable namespace
2489
  foreach ($tags as &$tag) {
2490
+ if ($tag[0] == $this->lessc->vPrefix)
2491
  $tag[0] = $this->lessc->mPrefix;
2492
  }
2493
  return $tags;
includes/control-panel/includes/class-db-php-manager.php CHANGED
@@ -1,250 +1,250 @@
1
- <?php
2
- /**
3
- * Handle database management using PHP.
4
- *
5
- * @package JupiterX_Core\Control_Panel\PHP_Database_Manager
6
- *
7
- * @since 1.11.0
8
- */
9
-
10
- /**
11
- * PHP database manager.
12
- *
13
- * @since 1.11.0
14
- */
15
- class JupiterX_Control_Panel_PHP_DB_Manager {
16
-
17
- /**
18
- * Set DB max time execution.
19
- */
20
- const DB_MAX_TIME = 5000;
21
-
22
- /**
23
- * Custom table prefix.
24
- */
25
- const TABLE_PREFIX = 'jx_';
26
-
27
- /**
28
- * Construct class.
29
- */
30
- public function __constructor() {}
31
-
32
- /**
33
- * Dump database tables.
34
- *
35
- * @param string $file File path.
36
- *
37
- * @return boolean|string Dump success.
38
- */
39
- public function dump_tables( $file, $pick_tables = [] ) {
40
- try {
41
- if ( empty( $pick_tables ) ) {
42
- return true;
43
- }
44
-
45
- global $wpdb;
46
-
47
- // Set DB wait time out.
48
- $wpdb->query( 'SET session wait_timeout = ' . self::DB_MAX_TIME );
49
-
50
- // Attempt to create file.
51
- if ( ( $handle = fopen( $file, 'w+' ) ) === false ) {
52
- throw new Exception( esc_html__( 'Can\'t open: ', 'jupiterx-core' ) . $file );
53
- }
54
-
55
- // Get tables.
56
- $tables = $wpdb->get_col( "SHOW FULL TABLES WHERE Table_Type != 'VIEW'" );
57
- $pick_tables = count( $pick_tables ) ? $pick_tables : null;
58
- $query_limit = 100;
59
-
60
- // Filter tables to dump.
61
- if ( is_array( $pick_tables ) ) {
62
- foreach ( $tables as $key => $table ) {
63
- if ( ! in_array( $tables[ $key ], $pick_tables ) ) {
64
- unset( $tables[ $key ] );
65
- }
66
- }
67
- }
68
-
69
- // Add file headers.
70
- $sql_header = "/* JUPITERX-TABLES (PHP DUMP) MYSQL SCRIPT CREATED ON : " . @date( "Y-m-d H:i:s" ) . " */\n\n";
71
- $sql_header .= "SET FOREIGN_KEY_CHECKS = 0;\n\n";
72
- fwrite( $handle, $sql_header );
73
-
74
- // All tables must be created before inserts due to foreign key constraints.
75
- foreach ( $tables as $table ) {
76
- $count = 1;
77
- $rewrite_table = str_replace( $this->get_table_prefix(), self::TABLE_PREFIX, $table, $count );
78
-
79
- // Drop table.
80
- $drop_table_query = 'DROP TABLE IF EXISTS `' . $rewrite_table . '`';
81
- fwrite( $handle, "/* DROP TABLE: {$rewrite_table} */\n" );
82
- fwrite( $handle, "{$drop_table_query};\n\n" );
83
-
84
- // Create table.
85
- $create = $wpdb->get_row( "SHOW CREATE TABLE `{$table}`", ARRAY_N );
86
- $create_table_query = str_replace( 'CREATE TABLE `' . $table . '`', 'CREATE TABLE `' . $rewrite_table . '`', $create[1], $count );
87
- $create_table_query = trim( preg_replace( '/\s+/', ' ', $create_table_query ) );
88
- fwrite( $handle, "/* CREATE TABLE: {$rewrite_table} */\n" );
89
- fwrite( $handle, "{$create_table_query};\n\n" );
90
- }
91
-
92
- // Create insert in 100 row increments to better handle memory.
93
- foreach ( $tables as $table ) {
94
- $count = 1;
95
- $row_count = $wpdb->get_var( "SELECT Count(*) FROM `{$table}`" );
96
- $rewrite_table = str_replace( $this->get_table_prefix(), self::TABLE_PREFIX, $table, $count );
97
-
98
- if ( $row_count > $query_limit ) {
99
- $row_count = ceil( $row_count / $query_limit );
100
- } else if ( $row_count > 0 ) {
101
- $row_count = 1;
102
- }
103
-
104
- if ( $row_count >= 1 ) {
105
- fwrite( $handle, "/* INSERT TABLE DATA: {$rewrite_table} */\n" );
106
- }
107
-
108
- for ( $i = 0; $i < $row_count; $i++ ) {
109
- $sql = '';
110
- $limit = $i * $query_limit;
111
- $query = "SELECT * FROM `{$table}` LIMIT {$limit}, {$query_limit}";
112
- $rows = $wpdb->get_results( $query, ARRAY_A );
113
-
114
- if ( '' !== $wpdb->last_error ) {
115
- throw new Exception( esc_html__( 'Please contact your database administrator to fix the error. Error: ', 'jupiterx-core' ) . $wpdb->last_error );
116
- return;
117
- }
118
-
119
- if ( is_array( $rows ) ) {
120
- foreach ( $rows as $row ) {
121
- $sql .= "INSERT INTO `{$rewrite_table}` VALUES(";
122
- $num_values = count( $row );
123
- $num_counter = 1;
124
-
125
- foreach ( $row as $value ) {
126
- if ( is_null( $value ) || ! isset( $value ) ) {
127
- ( $num_values == $num_counter ) ? $sql .= 'NULL' : $sql .= 'NULL, ';
128
- } else {
129
- ( $num_values == $num_counter )
130
- ? $sql .= '"' . $this->esc_sql( $value, true ) . '"'
131
- : $sql .= '"' . $this->esc_sql( $value, true ) . '", ';
132
- }
133
- $num_counter++;
134
- }
135
- $sql .= ");\n";
136
- }
137
- fwrite( $handle, $sql );
138
- }
139
- }
140
-
141
- $sql = null;
142
- $rows = null;
143
- fwrite( $handle, "\n" );
144
- }
145
-
146
- $sql_footer = "SET FOREIGN_KEY_CHECKS = 1;\n";
147
- fwrite( $handle, $sql_footer );
148
- $wpdb->flush();
149
- fclose( $handle );
150
- return true;
151
- } catch ( Exception $e ) {
152
- return $e->getMessage();
153
- }
154
- }
155
-
156
- /**
157
- * Import to database.
158
- *
159
- * @return boolean|string Import success.
160
- */
161
- public function import_tables( $file ) {
162
- try {
163
- if ( ! file_exists( $file ) ) {
164
- throw new Exception( esc_html__( 'File not exist: ', 'jupiterx-core' ) . $file );
165
- }
166
-
167
- // Attempt to read file.
168
- if ( ( $handle = fopen( $file, 'r' ) ) === false ) {
169
- throw new Exception( esc_html__( 'Can\'t read: ', 'jupiterx-core' ) . $file );
170
- }
171
-
172
- global $wpdb;
173
-
174
- while ( ! feof( $handle ) ) {
175
- $line = fgets( $handle );
176
-
177
- // Set allowed queries to run.
178
- if ( preg_match( '/^\s*(?:SET.?|DROP TABLE.?|CREATE TABLE.?|INSERT INTO.?)\s+/is', $line ) ) {
179
- $line = $this->replace_table_prefix( $line );
180
-
181
- $wpdb->query( $line );
182
- if ( '' !== $wpdb->last_error ) {
183
- error_log( $wpdb->last_error );
184
- }
185
- }
186
- }
187
-
188
- $wpdb->flush();
189
- fclose( $handle );
190
- return true;
191
- } catch ( Exception $e ) {
192
- return $e->getMessage();
193
- }
194
- }
195
-
196
- /**
197
- * Get table prefix.
198
- *
199
- * @return string Table prefix.
200
- */
201
- public function get_table_prefix() {
202
- global $wpdb;
203
-
204
- return $wpdb->prefix;
205
- }
206
-
207
- /**
208
- * Escape SQL.
209
- *
210
- * @see https://make.wordpress.org/core/2017/10/31/changed-behaviour-of-esc_sql-in-wordpress-4-8-3
211
- *
212
- * @param string $data Data.
213
- * @param boolean $placeholder_escape Escape placeholder.
214
- *
215
- * @return string Escaped data.
216
- */
217
- private function esc_sql( $data, $placeholder_escape = false ) {
218
- global $wpdb;
219
-
220
- if ( $placeholder_escape ) {
221
- return $wpdb->remove_placeholder_escape( @esc_sql( $data ) );
222
- } else {
223
- return @esc_sql( $data );
224
- }
225
- }
226
-
227
- /**
228
- * Replace SQL line table prefix.
229
- *
230
- * @param string $line File line.
231
- *
232
- * @return string Updated line.
233
- */
234
- private function replace_table_prefix( $line ) {
235
- $count = 1;
236
-
237
- if ( preg_match( '/CREATE TABLE `(.*?)`/', $line, $matches ) ) {
238
- $rewrite_table = str_replace( self::TABLE_PREFIX, $this->get_table_prefix(), $matches[1], $count );
239
- $line = str_replace( 'CREATE TABLE `' . $matches[1] . '`', 'CREATE TABLE `' . $rewrite_table . '`', $line, $count );
240
- } elseif ( preg_match( '/INSERT INTO `(.*?)`/', $line, $matches ) ) {
241
- $rewrite_table = str_replace( self::TABLE_PREFIX, $this->get_table_prefix(), $matches[1], $count );
242
- $line = str_replace( 'INSERT INTO `' . $matches[1] . '`', 'INSERT INTO `' . $rewrite_table . '`', $line, $count );
243
- } else if ( preg_match( '/DROP TABLE IF EXISTS `(.*?)`/', $line, $matches ) ) {
244
- $rewrite_table = str_replace( self::TABLE_PREFIX, $this->get_table_prefix(), $matches[1], $count );
245
- $line = str_replace( 'DROP TABLE IF EXISTS `' . $matches[1] . '`', 'DROP TABLE IF EXISTS `' . $rewrite_table . '`', $line, $count );
246
- }
247
-
248
- return $line;
249
- }
250
- }
1
+ <?php
2
+ /**
3
+ * Handle database management using PHP.
4
+ *
5
+ * @package JupiterX_Core\Control_Panel\PHP_Database_Manager
6
+ *
7
+ * @since 1.11.0
8
+ */
9
+
10
+ /**
11
+ * PHP database manager.
12
+ *
13
+ * @since 1.11.0
14
+ */
15
+ class JupiterX_Control_Panel_PHP_DB_Manager {
16
+
17
+ /**
18
+ * Set DB max time execution.
19
+ */
20
+ const DB_MAX_TIME = 5000;
21
+
22
+ /**
23
+ * Custom table prefix.
24
+ */
25
+ const TABLE_PREFIX = 'jx_';
26
+
27
+ /**
28
+ * Construct class.
29
+ */
30
+ public function __constructor() {}
31
+
32
+ /**
33
+ * Dump database tables.
34
+ *
35
+ * @param string $file File path.
36
+ *
37
+ * @return boolean|string Dump success.
38
+ */
39
+ public function dump_tables( $file, $pick_tables = [] ) {
40
+ try {
41
+ if ( empty( $pick_tables ) ) {
42
+ return true;
43
+ }
44
+
45
+ global $wpdb;
46
+
47
+ // Set DB wait time out.
48
+ $wpdb->query( 'SET session wait_timeout = ' . self::DB_MAX_TIME );
49
+
50
+ // Attempt to create file.
51
+ if ( ( $handle = fopen( $file, 'w+' ) ) === false ) {
52
+ throw new Exception( esc_html__( 'Can\'t open: ', 'jupiterx-core' ) . $file );
53
+ }
54
+
55
+ // Get tables.
56
+ $tables = $wpdb->get_col( "SHOW FULL TABLES WHERE Table_Type != 'VIEW'" );
57
+ $pick_tables = count( $pick_tables ) ? $pick_tables : null;
58
+ $query_limit = 100;
59
+
60
+ // Filter tables to dump.
61
+ if ( is_array( $pick_tables ) ) {
62
+ foreach ( $tables as $key => $table ) {
63
+ if ( ! in_array( $tables[ $key ], $pick_tables ) ) {
64
+ unset( $tables[ $key ] );
65
+ }
66
+ }
67
+ }
68
+
69
+ // Add file headers.
70
+ $sql_header = "/* JUPITERX-TABLES (PHP DUMP) MYSQL SCRIPT CREATED ON : " . @date( "Y-m-d H:i:s" ) . " */\n\n";
71
+ $sql_header .= "SET FOREIGN_KEY_CHECKS = 0;\n\n";
72
+ fwrite( $handle, $sql_header );
73
+
74
+ // All tables must be created before inserts due to foreign key constraints.
75
+ foreach ( $tables as $table ) {
76
+ $count = 1;
77
+ $rewrite_table = str_replace( $this->get_table_prefix(), self::TABLE_PREFIX, $table, $count );
78
+
79
+ // Drop table.
80
+ $drop_table_query = 'DROP TABLE IF EXISTS `' . $rewrite_table . '`';
81
+ fwrite( $handle, "/* DROP TABLE: {$rewrite_table} */\n" );
82
+ fwrite( $handle, "{$drop_table_query};\n\n" );
83
+
84
+ // Create table.
85
+ $create = $wpdb->get_row( "SHOW CREATE TABLE `{$table}`", ARRAY_N );
86
+ $create_table_query = str_replace( 'CREATE TABLE `' . $table . '`', 'CREATE TABLE `' . $rewrite_table . '`', $create[1], $count );
87
+ $create_table_query = trim( preg_replace( '/\s+/', ' ', $create_table_query ) );
88
+ fwrite( $handle, "/* CREATE TABLE: {$rewrite_table} */\n" );
89
+ fwrite( $handle, "{$create_table_query};\n\n" );
90
+ }
91
+
92
+ // Create insert in 100 row increments to better handle memory.
93
+ foreach ( $tables as $table ) {
94
+ $count = 1;
95
+ $row_count = $wpdb->get_var( "SELECT Count(*) FROM `{$table}`" );
96
+ $rewrite_table = str_replace( $this->get_table_prefix(), self::TABLE_PREFIX, $table, $count );
97
+
98
+ if ( $row_count > $query_limit ) {
99
+ $row_count = ceil( $row_count / $query_limit );
100
+ } else if ( $row_count > 0 ) {
101
+ $row_count = 1;
102
+ }
103
+
104
+ if ( $row_count >= 1 ) {
105
+ fwrite( $handle, "/* INSERT TABLE DATA: {$rewrite_table} */\n" );
106
+ }
107
+
108
+ for ( $i = 0; $i < $row_count; $i++ ) {
109
+ $sql = '';
110
+ $limit = $i * $query_limit;
111
+ $query = "SELECT * FROM `{$table}` LIMIT {$limit}, {$query_limit}";
112
+ $rows = $wpdb->get_results( $query, ARRAY_A );
113
+
114
+ if ( '' !== $wpdb->last_error ) {
115
+ throw new Exception( esc_html__( 'Please contact your database administrator to fix the error. Error: ', 'jupiterx-core' ) . $wpdb->last_error );
116
+ return;
117
+ }
118
+
119
+ if ( is_array( $rows ) ) {
120
+ foreach ( $rows as $row ) {
121
+ $sql .= "INSERT INTO `{$rewrite_table}` VALUES(";
122
+ $num_values = count( $row );
123
+ $num_counter = 1;
124
+
125
+ foreach ( $row as $value ) {
126
+ if ( is_null( $value ) || ! isset( $value ) ) {
127
+ ( $num_values == $num_counter ) ? $sql .= 'NULL' : $sql .= 'NULL, ';
128
+ } else {
129
+ ( $num_values == $num_counter )
130
+ ? $sql .= '"' . $this->esc_sql( $value, true ) . '"'
131
+ : $sql .= '"' . $this->esc_sql( $value, true ) . '", ';
132
+ }
133
+ $num_counter++;
134
+ }
135
+ $sql .= ");\n";
136
+ }
137
+ fwrite( $handle, $sql );
138
+ }
139
+ }
140
+
141
+ $sql = null;
142
+ $rows = null;
143
+ fwrite( $handle, "\n" );
144
+ }
145
+
146
+ $sql_footer = "SET FOREIGN_KEY_CHECKS = 1;\n";
147
+ fwrite( $handle, $sql_footer );
148
+ $wpdb->flush();
149
+ fclose( $handle );
150
+ return true;
151
+ } catch ( Exception $e ) {
152
+ return $e->getMessage();
153
+ }
154
+ }
155
+
156
+ /**
157
+ * Import to database.
158
+ *
159
+ * @return boolean|string Import success.
160
+ */
161
+ public function import_tables( $file ) {
162
+ try {
163
+ if ( ! file_exists( $file ) ) {
164
+ throw new Exception( esc_html__( 'File not exist: ', 'jupiterx-core' ) . $file );
165
+ }
166
+
167
+ // Attempt to read file.
168
+ if ( ( $handle = fopen( $file, 'r' ) ) === false ) {
169
+ throw new Exception( esc_html__( 'Can\'t read: ', 'jupiterx-core' ) . $file );
170
+ }
171
+
172
+ global $wpdb;
173
+
174
+ while ( ! feof( $handle ) ) {
175
+ $line = fgets( $handle );
176
+
177
+ // Set allowed queries to run.
178
+ if ( preg_match( '/^\s*(?:SET.?|DROP TABLE.?|CREATE TABLE.?|INSERT INTO.?)\s+/is', $line ) ) {
179
+ $line = $this->replace_table_prefix( $line );
180
+
181
+ $wpdb->query( $line );
182
+ if ( '' !== $wpdb->last_error ) {
183
+ error_log( $wpdb->last_error );
184
+ }
185
+ }
186
+ }
187
+
188
+ $wpdb->flush();
189
+ fclose( $handle );
190
+ return true;
191
+ } catch ( Exception $e ) {
192
+ return $e->getMessage();
193
+ }
194
+ }
195
+
196
+ /**
197
+ * Get table prefix.
198
+ *
199
+ * @return string Table prefix.
200
+ */
201
+ public function get_table_prefix() {
202
+ global $wpdb;
203
+
204
+ return $wpdb->prefix;
205
+ }
206
+
207
+ /**
208
+ * Escape SQL.
209
+ *
210
+ * @see https://make.wordpress.org/core/2017/10/31/changed-behaviour-of-esc_sql-in-wordpress-4-8-3
211
+ *
212
+ * @param string $data Data.
213
+ * @param boolean $placeholder_escape Escape placeholder.
214
+ *
215
+ * @return string Escaped data.
216
+ */
217
+ private function esc_sql( $data, $placeholder_escape = false ) {
218
+ global $wpdb;
219
+
220
+ if ( $placeholder_escape ) {
221
+ return $wpdb->remove_placeholder_escape( @esc_sql( $data ) );
222
+ } else {
223
+ return @esc_sql( $data );
224
+ }
225
+ }
226
+
227
+ /**
228
+ * Replace SQL line table prefix.
229
+ *
230
+ * @param string $line File line.
231
+ *
232
+ * @return string Updated line.
233
+ */
234
+ private function replace_table_prefix( $line ) {
235
+ $count = 1;
236
+
237
+ if ( preg_match( '/CREATE TABLE `(.*?)`/', $line, $matches ) ) {
238
+ $rewrite_table = str_replace( self::TABLE_PREFIX, $this->get_table_prefix(), $matches[1], $count );
239
+ $line = str_replace( 'CREATE TABLE `' . $matches[1] . '`', 'CREATE TABLE `' . $rewrite_table . '`', $line, $count );
240
+ } elseif ( preg_match( '/INSERT INTO `(.*?)`/', $line, $matches ) ) {
241
+ $rewrite_table = str_replace( self::TABLE_PREFIX, $this->get_table_prefix(), $matches[1], $count );
242
+ $line = str_replace( 'INSERT INTO `' . $matches[1] . '`', 'INSERT INTO `' . $rewrite_table . '`', $line, $count );
243
+ } else if ( preg_match( '/DROP TABLE IF EXISTS `(.*?)`/', $line, $matches ) ) {
244
+ $rewrite_table = str_replace( self::TABLE_PREFIX, $this->get_table_prefix(), $matches[1], $count );
245
+ $line = str_replace( 'DROP TABLE IF EXISTS `' . $matches[1] . '`', 'DROP TABLE IF EXISTS `' . $rewrite_table . '`', $line, $count );
246
+ }
247
+
248
+ return $line;
249
+ }
250
+ }
includes/control-panel/includes/class-export-import-content.php CHANGED
@@ -1,1304 +1,1304 @@
1
- <?php
2
- /**
3
- * Export and Import API: JupiterX_Control_Panel_Export_Import base class
4
- *
5
- * @package JupiterX_Core\Control_Panel\Export_Import
6
- * @since 1.0
7
- */
8
- if ( ! class_exists( 'JupiterX_Control_Panel_Export_Import' ) ) {
9
- /**
10
- * Export/Import Site Content, Widgets, Settings.
11
- *
12
- * @author Artbees Team
13
- * @since 1.0
14
- * @SuppressWarnings(PHPMD.StaticAccess)
15
- * @SuppressWarnings(PHPMD.ExcessiveClassComplexitys)
16
- */
17
- class JupiterX_Control_Panel_Export_Import {
18
-
19
- /**
20
- * $jupiterx_filesystem instance.
21
- *
22
- * @since 1.0
23
- * @var array
24
- */
25
- private $jupiterx_filesystem;
26
-
27
-
28
- /**
29
- * $supported_plugins instance.
30
- *
31
- * @since 1.0
32
- * @var array
33
- */
34
- private $supported_plugins;
35
-
36
- /**
37
- * Export and Import directory’s path and url.
38
- *
39
- * @since 1.0
40
- * @var array
41
- */
42
- private $folder = array();
43
-
44
- /**
45
- * Constructor.
46
- *
47
- * @since 1.0
48
- */
49
- public function __construct() {
50
-
51
- add_filter( 'jupiterx_control_panel_pane_export_import', [ $this, 'view' ] );
52
-
53
- $upload_dir = wp_upload_dir();
54
- $this->folder['export_url'] = $upload_dir['baseurl'] . '/jupiterx/export';
55
- $this->folder['export_dir'] = $upload_dir['basedir'] . '/jupiterx/export';
56
- $this->folder['import_url'] = $upload_dir['baseurl'] . '/jupiterx/import';
57
- $this->folder['import_dir'] = $upload_dir['basedir'] . '/jupiterx/import';
58
-
59
- $this->supported_plugins = array(
60
- 'woocommerce',
61
- 'js_composer_theme',
62
- 'LayerSlider',
63
- 'masterslider',
64
- 'revslider',
65
- 'advanced-custom-fields-pro',
66
- 'advanced-custom-fields',
67
- 'jet-elements',
68
- 'jet-menu',
69
- 'jet-popup',
70
- 'jet-tabs',
71
- 'jet-woo-builder',
72
- 'jet-tricks',
73
- 'jet-engine',
74
- 'jet-smart-filters',
75
- 'raven',
76
- 'elementor',
77
- 'customizer-reset-by-wpzoom',
78
- 'customizer-export-import',
79
- 'jupiterx-core',
80
- 'jupiterx-pro',
81
- 'menu-icons',
82
- );
83
-
84
- add_action( 'wp_ajax_jupiterx_cp_export_import', array( $this, 'ajax_handler' ) );
85
- }
86
-
87
- /**
88
- * Export/Import HTML directory.
89
- *
90
- * @since 1.9.0
91
- *
92
- * @return string
93
- */
94
- public function view() {
95
- return jupiterx_core()->plugin_dir() . 'includes/control-panel/views/export-import-content.php';
96
- }
97
-
98
-
99
- /**
100
- * Map the requests to proper methods.
101
- *
102
- * @since 1.0
103
- */
104
- public function ajax_handler() {
105
- check_ajax_referer( 'jupiterx_control_panel', 'nonce' );
106
-
107
- $type = filter_input( INPUT_POST, 'type' );
108
- $step = filter_input( INPUT_POST, 'step' );
109
- $attachment_id = filter_input( INPUT_POST, 'attachment_id' );
110
-
111
- if ( empty( $type ) ) {
112
- wp_send_json_error(
113
- __( 'Type param is missing.', 'jupiterx-core' )
114
- );
115
- }
116
-
117
- if ( empty( $step ) ) {
118
- wp_send_json_error(
119
- __( 'Step param is missing.', 'jupiterx-core' )
120
- );
121
- }
122
-
123
- if ( 'Export' === $type ) {
124
- $this->jupiterx_filesystem = new JupiterX_Filesystem(
125
- array(
126
- 'context' => $this->folder['export_dir'],
127
- )
128
- );
129
- return $this->export( $step );
130
- }
131
-
132
- if ( 'Import' === $type ) {
133
-
134
- if ( empty( $attachment_id ) ) {
135
- wp_send_json_error(
136
- __( 'Attachment ID param is missing.', 'jupiterx-core' )
137
- );
138
- }
139
-
140
- $this->jupiterx_filesystem = new JupiterX_Filesystem(
141
- array(
142
- 'context' => $this->folder['import_dir'],
143
- )
144
- );
145
- return $this->import( $step, $attachment_id );
146
- }
147
-
148
- wp_send_json_error(
149
- sprintf( __( 'Type param (%s) is not valid.', 'jupiterx-core' ), $type )
150
- );
151
- }
152
-
153
- /**
154
- * Run proper export method based on step.
155
- *
156
- * @since 1.0
157
- * @param string $step The export step.
158
- * @return void
159
- */
160
- private function export( $step ) {
161
- switch ( $step ) {
162
- case 'Start':
163
- $this->export_start();
164
- break;
165
-
166
- case 'Content':
167
- $this->export_content();
168
- break;
169
-
170
- case 'Widgets':
171
- $this->export_widgets();
172
- break;
173
-
174
- case 'Settings':
175
- $this->export_settings();
176
- break;
177
-
178
- case 'Custom Tables':
179
- $this->export_custom_tables();
180
- break;
181
-
182
- case 'End':
183
- $this->export_end();
184
- break;
185
-
186
- case 'Discard':
187
- $this->discard( $this->folder['export_dir'] );
188
- break;
189
- }
190
-
191
- wp_send_json_error(
192
- sprintf( __( 'Step param (%s) is not valid.', 'jupiterx-core' ), $step )
193
- );
194
- }
195
-
196
- /**
197
- * Start export process by cleaning the export directory.
198
- *
199
- * @throws Exception If can not clean export folder.
200
- *
201
- * @since 1.0
202
- */
203
- private function export_start() {
204
- try {
205
- if ( $this->jupiterx_filesystem->rmdir( $this->folder['export_dir'], true ) ) {
206
- return wp_send_json_success(
207
- array(
208
- 'step' => 'Start',
209
- )
210
- );
211
- }
212
-
213
- throw new Exception( __( 'A problem occurred in cleaning export directory.', 'jupiterx-core' ) );
214
- } catch ( Exception $e ) {
215
- return wp_send_json_error( $e->getMessage() );
216
- }
217
- }
218
-
219
- /**
220
- * Export content.
221
- *
222
- * @throws Exception If can not export Content.
223
- *
224
- * @since 1.0
225
- */
226
- private function export_content() {
227
- try {
228
- require_once ABSPATH . 'wp-admin/includes/export.php';
229
-
230
- ob_start();
231
- export_wp();
232
- $content = ob_get_clean();
233
- ob_end_clean();
234
-
235
- $file_name = 'theme_content.xml';
236
- $file_path = $this->folder['export_dir'] . '/' . $file_name;
237
-
238
- if ( ! $this->jupiterx_filesystem->put_contents( $file_path, $content ) ) {
239
- throw new Exception( __( 'A problem occurred in exporting Content.', 'jupiterx-core' ) );
240
- }
241
-
242
- $this->export_plugins();
243
-
244
- return wp_send_json_success(
245
- array(
246
- 'step' => 'Content',
247
- )
248
- );
249
- } catch ( Exception $e ) {
250
- return wp_send_json_error( $e->getMessage() );
251
- }
252
- }
253
-
254
- /**
255
- * Export plugins content.
256
- *
257
- * @since 1.0.3
258
- */
259
- public function export_plugins() {
260
- $active_plugins = get_option( 'active_plugins' );
261
-
262
- if ( is_multisite() ) {
263
- $active_plugins = array_merge( $active_plugins, get_site_option( 'active_sitewide_plugins' ) );
264
- }
265
-
266
- foreach ( $active_plugins as $plugin ) {
267
- $plugins_slug[] = substr( $plugin, 0, strrpos( $plugin, '/' ) );
268
- }
269
-
270
- $supported_plugins = array_intersect( $plugins_slug, $this->supported_plugins );
271
-
272
- foreach ( $supported_plugins as $plugin ) {
273
- if ( is_callable( [ $this, "export_{$plugin}_content" ] ) ) {
274
- call_user_func( [ $this, "export_{$plugin}_content" ] );
275
- }
276
- }
277
- }
278
-
279
- /**
280
- * Export Revolution Slider slides.
281
- *
282
- * @since 1.0.3
283
- */
284
- public function export_revslider_content() {
285
- if ( ! class_exists( 'RevSlider' ) ) {
286
- return;
287
- }
288
-
289
- // Initialize Revolution Slider.
290
- $revslider = new RevSlider();
291
-
292
- $sliders = $revslider->getAllSliderAliases();
293
-
294
- if ( empty( $sliders ) ) {
295
- return;
296
- }
297
-
298
- // Create download url.
299
- $base_arg = [
300
- 'action' => 'revslider_ajax_action',
301
- 'client_action' => 'export_slider',
302
- 'dummy' => 'false',
303
- 'nonce' => wp_create_nonce( 'revslider_actions' ),
304
- ];
305
-
306
- $base_url = add_query_arg( $base_arg, admin_url( 'admin-ajax.php' ) );
307
-
308
- $export_dir = "{$this->folder['export_dir']}/revslider/";
309
-
310
- // Create and pass cookie.
311
- $cookies = [];
312
-
313
- foreach ( $_COOKIE as $name => $value ) {
314
- $cookies[] = new WP_Http_Cookie( array( 'name' => $name, 'value' => $value ) );
315
- }
316
-
317
- $remote_args = [
318
- 'cookies' => $cookies,
319
- ];
320
-
321
- // Go through each slides.
322
- foreach ( $sliders as $slider_alias ) {
323
- $revslider->initByAlias( $slider_alias );
324
-
325
- $download_args = [
326
- 'sliderid' => $revslider->getID(),
327
- ];
328
-
329
- $download_url = add_query_arg( $download_args, $base_url );
330
-
331
- JupiterX_Control_Panel_Helpers::upload_from_url(
332
- $download_url,
333
- "{$slider_alias}.zip",
334
- $export_dir,
335
- $remote_args
336
- );
337
- }
338
- }
339
-
340
- public function availableWidgets() {
341
- global $wp_registered_widget_controls;
342
- $widget_controls = $wp_registered_widget_controls;
343
- $available_widgets = array();
344
- foreach ( $widget_controls as $widget ) {
345
- if ( ! empty( $widget['id_base'] ) && ! isset( $available_widgets[ $widget['id_base'] ] ) ) {
346
- $available_widgets[ $widget['id_base'] ]['id_base'] = $widget['id_base'];
347
- $available_widgets[ $widget['id_base'] ]['name'] = $widget['name'];
348
- }
349
- }
350
-
351
- return apply_filters( 'available_widgets', $available_widgets );
352
- }
353
-
354
- /**
355
- * Export widgets.
356
- *
357
- * @throws Exception If can not export Widgets.
358
- *
359
- * @since 1.0
360
- * @SuppressWarnings(PHPMD.CyclomaticComplexity)
361
- */
362
- private function export_widgets() {
363
- try {
364
- $available_widgets = $this->availableWidgets();
365
-
366
- // Get all widget instances for each widget.
367
- $widget_instances = array();
368
-
369
- // Loop widgets.
370
- foreach ( $available_widgets as $widget_data ) {
371
- // Get all instances for this ID base.
372
- $instances = get_option( 'widget_' . $widget_data['id_base'] );
373
- // Have instances.
374
- if ( ! empty( $instances ) ) {
375
- // Loop instances.
376
- foreach ( $instances as $instance_id => $instance_data ) {
377
- // Key is ID (not _multiwidget).
378
- if ( is_numeric( $instance_id ) ) {
379
- $unique_instance_id = $widget_data['id_base'] . '-' . $instance_id;
380
- $widget_instances[ $unique_instance_id ] = $instance_data;
381
- }
382
- }
383
- }
384
- }
385
-
386
- // Gather sidebars with their widget instances.
387
- $sidebars_widgets = get_option( 'sidebars_widgets' );
388
- $sidebars_widget_ins = array();
389
- foreach ( $sidebars_widgets as $sidebar_id => $widget_ids ) {
390
-
391
- // Skip inactive widgets.
392
- if ( 'wp_inactive_widgets' === $sidebar_id ) {
393
- continue;
394
- }
395
-
396
- // Skip if no data or not an array (array_version).
397
- if ( ! is_array( $widget_ids ) || empty( $widget_ids ) ) {
398
- continue;
399
- }
400
-
401
- // Loop widget IDs for this sidebar.
402
- foreach ( $widget_ids as $widget_id ) {
403
- // Is there an instance for this widget ID?
404
- if ( isset( $widget_instances[ $widget_id ] ) ) {
405
- // Add to array.
406
- $sidebars_widget_ins[ $sidebar_id ][ $widget_id ] = $widget_instances[ $widget_id ];
407
- }
408
- }
409
- }
410
-
411
- $content = wp_json_encode( $sidebars_widget_ins );
412
-
413
- $file_name = 'widget_data.wie';
414
- $file_path = $this->folder['export_dir'] . '/' . $file_name;
415
-
416
- if ( $this->jupiterx_filesystem->put_contents( $file_path, $content ) ) {
417
- return wp_send_json_success(
418
- array(
419
- 'step' => 'Widgets',
420
- )
421
- );
422
- }
423
-
424
- throw new Exception( __( 'A problem occurred in exporting widgets.', 'jupiterx-core' ) );
425
- } catch ( Exception $e ) {
426
- return wp_send_json_error( $e->getMessage() );
427
- } // End try().
428
- }
429
-
430
-
431
- /**
432
- * An array of core options that shouldn't be imported.
433
- *
434
- * @since 1.0
435
- * @access private
436
- * @var array $core_options
437
- */
438
- static private $core_options = array(
439
- 'blogname',
440
- 'blogdescription'
441
- );
442
-
443
-
444
- /**
445
- * Export Settings.
446
- *
447
- * @throws Exception If can not export Settings.
448
- *
449
- * @since 1.0
450
- */
451
- private function export_settings() {
452
- try {
453
- $data = [
454
- 'template' => get_template(),
455
- 'mods' => [],
456
- 'options' => [],
457
- ];
458
-
459
- $data = $this->_export_settings_customizer_mods( $data );
460
-
461
- $data = $this->_export_settings_customizer_options( $data );
462
-
463
- $data = $this->_export_settings_plugins( $data );
464
-
465
- $data = $this->_export_settings_options( $data );
466
-
467
- // WP custom CSS.
468
- if ( function_exists( 'wp_get_custom_css_post' ) ) {
469
- $data['wp_css'] = wp_get_custom_css();
470
- }
471
-
472
- $file_name = 'settings.json';
473
- $file_path = $this->folder['export_dir'] . '/' . $file_name;
474
-
475
- if ( ! is_array( $data ) ) {
476
- throw new Exception( __( 'All settings in Settings are set to default. Uncheck the Settings option or change one setting in Settings then export.', 'jupiterx-core' ) );
477
- }
478
-
479
- if ( ! $this->jupiterx_filesystem->put_contents( $file_path, wp_json_encode( $data ) ) ) {
480
- throw new Exception( __( 'A problem occurred in exporting Settings.', 'jupiterx-core' ) );
481
- }
482
-
483
- return wp_send_json_success( [ 'step' => 'Settings' ] );
484
-
485
- } catch ( Exception $e ) {
486
- return wp_send_json_error( $e->getMessage() );
487
- }
488
- }
489
-
490
- /**
491
- * Export custom tables.
492
- *
493
- * @since 1.11.0
494
- */
495
- private function export_custom_tables() {
496
- try {
497
- $db_manager = new JupiterX_Control_Panel_PHP_DB_Manager();
498
-
499
- $supported_plugins = $this->get_supported_plugins();
500
-
501
- $supported_tables = array_filter( $this->get_supported_tables(), function( $plugin ) use ( $supported_plugins ) {
502
- return in_array( $plugin, $supported_plugins, true );
503
- }, ARRAY_FILTER_USE_KEY );
504
-
505
- $tables = [];
506
-
507
- // Prepare table names.
508
- foreach ( $supported_tables as $plugin_tables ) {
509
- foreach ( $plugin_tables as $table ) {
510
- array_push( $tables, $db_manager->get_table_prefix() . $table );
511
- }
512
- }
513
-
514
- if ( ! empty( $tables ) ) {
515
- $dump_tables = $db_manager->dump_tables( $this->folder['export_dir'] . '/tables.sql', $tables );
516
-
517
- if ( $dump_tables !== true ) {
518
- throw new Exception( $dump_tables );
519
- }
520
- }
521
-
522
- return wp_send_json_success( [ 'step' => 'Custom Tables' ] );
523
- } catch ( Exception $e ) {
524
- return wp_send_json_error( $e->getMessage() );
525
- }
526
- }
527
-
528
- /**
529
- * Export customizer mods.
530
- *
531
- * @since 1.0.4
532
- */
533
- private function _export_settings_customizer_mods( $data ) {
534
- $mods = get_theme_mods();
535
-
536
- if ( ! empty( $mods ) ) {
537
- unset( $mods['sidebars_widgets'] );
538
- $data['mods'] = $mods;
539
- }
540
-
541
- return $data;
542
- }
543
-
544
- /**
545
- * Export customizer options.
546
- *
547
- * @since 1.0.4
548
- */
549
- private function _export_settings_customizer_options( $data ) {
550
- require_once ABSPATH . 'wp-includes/class-wp-customize-manager.php';
551
-
552
- $wp_customize = new WP_Customize_Manager();
553
- $settings = $wp_customize->settings();
554
-
555
- foreach ( $settings as $key => $setting ) {
556
- if ( 'option' == $setting->type ) {
557
-
558
- // Don't save widget data.
559
- if ( stristr( $key, 'widget_' ) ) {
560
- continue;
561
- }
562
-
563
- // Don't save sidebar data.
564
- if ( stristr( $key, 'sidebars_' ) ) {
565
- continue;
566
- }
567
-
568
- // Don't save core options.
569
- if ( in_array( $key, self::$core_options ) ) {
570
- continue;
571
- }
572
-
573
- $data['options'][ $key ] = $setting->value();
574
- }
575
- }
576
-
577
- return $data;
578
- }
579
-
580
- /**
581
- * Export active supported plugins.
582
- *
583
- * @since 1.0.4
584
- */
585
- private function _export_settings_plugins( $data ) {
586
- $all_active_plugins = get_option( 'active_plugins' );
587
-
588
- foreach ( $all_active_plugins as $plugin ) {
589
- $active_plugins[] = substr( $plugin, 0, strrpos( $plugin, '/' ) );
590
- }
591
-
592
- if ( is_multisite() ) {
593
- $sitewide_all_active_plugins = get_site_option( 'active_sitewide_plugins' );
594
-
595
- foreach ( $sitewide_all_active_plugins as $plugin => $id ) {
596
- $active_plugins[] = substr( $plugin, 0, strrpos( $plugin, '/' ) );
597
- }
598
- }
599
-
600
- $supported_active_plugins = array_intersect( $active_plugins, $this->supported_plugins );
601
-
602
- foreach ( $supported_active_plugins as $plugins ) {
603
- $data['options']['jupiterx_support_plugins'][] = $plugins;
604
- }
605
-
606
- return $data;
607
- }
608
-
609
- /**
610
- * Export options.
611
- *
612
- * @since 1.0.4
613
- */
614
- private function _export_settings_options( $data ) {
615
- /**
616
- * Extra options.
617
- *
618
- * Any option that can be exported & imported without modifications.
619
- */
620
- $option_keys = apply_filters( 'jupiterx_extra_export_option_keys', [
621
- 'elementor_scheme_color',
622
- 'elementor_scheme_typography',
623
- 'elementor_scheme_color-picker',
624
- 'elementor_cpt_support',
625
- 'elementor_disable_color_schemes',
626
- 'elementor_disable_typography_schemes',
627
- 'elementor_default_generic_fonts',
628
- 'elementor_container_width',
629
- 'elementor_space_between_widgets',
630
- 'elementor_stretched_section_container',
631
- 'elementor_page_title_selector',
632
- 'elementor_viewport_lg',
633
- 'elementor_viewport_md',
634
- 'elementor_global_image_lightbox',
635
- 'elementor_lightbox_color',
636
- 'elementor_lightbox_ui_color',
637
- 'elementor_lightbox_ui_color_hover',
638
- 'elementor_enable_lightbox_in_editor',
639
- 'elementor_global_image_lightbox',
640
- ] );
641
-
642
- foreach ( $option_keys as $option_key ) {
643
- $option = get_option( $option_key, null );
644
-
645
- if ( ! is_null( $option ) ) {
646
- $data['options']['extra'][ $option_key ] = $option;
647
- }
648
- }
649
-
650
- // Front page.
651
- $page_on_front = get_option( 'page_on_front' );
652
-
653
- if ( ! empty( $page_on_front ) ) {
654
- $data['options']['page_on_front'] = get_the_title( $page_on_front );
655
- }
656
-
657
- // Menu locations.
658
- $get_nav_locations = get_theme_mod( 'nav_menu_locations' );
659
-
660
- foreach ( $get_nav_locations as $location => $id ) {
661
- $get_term = get_term_by( 'id', $id, 'nav_menu' );
662
- $data['options']['jupiterx_menu_locations'][ $location ] = $get_term->name;
663
- }
664
-
665
- // WooCommerce.
666
- $woocommerce_shop_page_id = get_option( 'woocommerce_shop_page_id' );
667
-
668
- if ( ! empty( $woocommerce_shop_page_id ) ) {
669
- $data['options']['woocommerce_shop_page_id'] = get_the_title( $woocommerce_shop_page_id );
670
- }
671
-
672
- $woocommerce_cart_page_id = get_option( 'woocommerce_cart_page_id' );
673
-
674
- if ( ! empty( $woocommerce_cart_page_id ) ) {
675
- $data['options']['woocommerce_cart_page_id'] = get_the_title( $woocommerce_cart_page_id );
676
- }
677
-
678
- $woocommerce_checkout_page_id = get_option( 'woocommerce_checkout_page_id' );
679
-
680
- if ( ! empty( $woocommerce_checkout_page_id ) ) {
681
- $data['options']['woocommerce_checkout_page_id'] = get_the_title( $woocommerce_checkout_page_id );
682
- }
683
-
684
- $woocommerce_myaccount_page_id = get_option( 'woocommerce_myaccount_page_id' );
685
-
686
- if ( ! empty( $woocommerce_checkout_page_id ) ) {
687
- $data['options']['woocommerce_myaccount_page_id'] = get_the_title( $woocommerce_myaccount_page_id );
688
- }
689
-
690
- // Jet Menu.
691
- $jet_menu_options = get_option( 'jet_menu_options' );
692
-
693
- if ( ! empty( $jet_menu_options ) && in_array( 'jet-menu', $data['options']['jupiterx_support_plugins'], true ) ) {
694
- $data['options']['jet_menu_options'] = $jet_menu_options;
695
- }
696
-
697
- return $data;
698
- }
699
-
700
- /**
701
- * End export process by creating the zip file and download url.
702
- *
703
- * @since 1.0
704
- */
705
- private function export_end() {
706
- try {
707
- $this->jupiterx_filesystem->zip_folder( $this->folder['export_dir'], "{$this->folder['export_dir']}/{$this->_prepare_directory_name()}.zip", $this->_prepare_directory_name() );
708
-
709
- return wp_send_json_success(
710
- array(
711
- 'step' => 'End',
712
- 'download_url' => $this->folder['export_url'] . '/' . $this->_prepare_directory_name() . '.zip',
713
- )
714
- );
715
-
716
- } catch ( Exception $e ) {
717
- return wp_send_json_error( $e->getMessage() );
718
- }
719
- }
720
-
721
- /**
722
- * Prepare the export zip file name.
723
- *
724
- * @since 1.0.0
725
- */
726
- private function _prepare_directory_name() {
727
- $site_title = ! empty( get_bloginfo( 'name' ) ) ? get_bloginfo( 'name' ) : 'package';
728
- $form_data = jupiterx_post( 'data' );
729
-
730
- if ( ! empty( $form_data['filename'] ) ) {
731
- return sanitize_title( $form_data['filename'] );
732
- }
733
-
734
- return sanitize_title( $site_title ) . '-jupiterx';
735
- }
736
-
737
- /**
738
- * Run proper import method based on step.
739
- *
740
- * @since 1.0
741
- * @param string $step The import step.
742
- * @param integer $attachment_id The uploaded zip file ID.
743
- * @return void
744
- */
745
- private function import( $step, $attachment_id ) {
746
- switch ( $step ) {
747
- case 'Start':
748
- $this->import_start( $attachment_id );
749
- break;
750
-
751
- case 'Content':
752
- $this->import_content();
753
- break;
754
-
755
- case 'Widgets':
756
- $this->import_widgets();
757
- break;
758
-
759
- case 'Settings':
760
- $this->import_settings();
761
- break;
762
-
763
- case 'End':
764
- $this->import_end();
765
- break;
766
-
767
- case 'Discard':
768
- $this->discard( $this->folder['import_dir'] );
769
- break;
770
- }
771
-
772
- wp_send_json_error(
773
- sprintf( __( 'Step param (%s) is not valid.', 'jupiterx-core' ), $step )
774
- );
775
- }
776
-
777
- /**
778
- * Start import process by cleaning import directory and
779
- * unzipping file to directory Import directory.
780
- *
781
- * @since 1.0
782
- * @param integer $attachment_id The uploaded zip file ID.
783
- */
784
- private function import_start( $attachment_id ) {
785
- try {
786
- $this->jupiterx_filesystem->rmdir( $this->folder['import_dir'], true );
787
-
788
- $this->jupiterx_filesystem->unzip_custom(
789
- get_attached_file( $attachment_id ),
790
- $this->folder['import_dir']
791
- );
792
-
793
- return wp_send_json_success(
794
- array(
795
- 'step' => 'Start',
796
- )
797
- );
798
- } catch ( Exception $e ) {
799
- return wp_send_json_error( $e->getMessage() );
800
- }
801
- }
802
-
803
- /**
804
- * Import Content
805
- *
806
- * @throws Exception If required file is missing.
807
- * @throws Exception If can not parse file..
808
- *
809
- * @since 1.0
810
- */
811
- private function import_content() {
812
- try {
813
- $file_name = 'theme_content.xml';
814
- $file = $this->_get_import_package_dir_path( $file_name );
815
- $fetch_attachments = true;
816
-
817
- if ( ! file_exists( $file ) ) {
818
- throw new Exception(
819
- sprintf( __( 'A required file (%s) is missing in the selected zip file.', 'jupiterx-core' ), $file_name )
820
- );
821
- }
822
-
823
- // Include wordpress-importer class.
824
- JupiterX_Control_Panel_Helpers::include_wordpress_importer();
825
-
826
- $options = array(
827
- 'fetch_attachments' => filter_var( $fetch_attachments, FILTER_VALIDATE_BOOLEAN ),
828
- 'default_author' => get_current_user_id(),
829
- );
830
-
831
- // Create new instance for Importer.
832
- $importer = new JupiterX_WXR_Importer( $options );
833
- $logger = new JupiterX_Importer_Logger_ServerSentEvents();
834
- $importer->set_logger( $logger );
835
-
836
- $data = $importer->get_preliminary_information( $file );
837
-
838
- if ( is_wp_error( $data ) ) {
839
- throw new Exception(
840
- sprintf( __( 'Error in parsing %s.', 'jupiterx-core' ), $file_name )
841
- );
842
- }
843
-
844
- // Run import process.
845
- ob_start();
846
- $importer->import( $file );
847
- ob_end_clean();
848
-
849
- return wp_send_json_success(
850
- array(
851
- 'step' => 'Content',
852
- )
853
- );
854
-
855
- } catch ( Exception $e ) {
856
- return wp_send_json_error( $e->getMessage() );
857
- } // End try().
858
- }
859
-
860
- /**
861
- * Import widgets' data.
862
- *
863
- * @throws Exception If can not read widget data.
864
- *
865
- * @since 5.7.0
866
- * 6.0.4 Make it public.
867
- * @param array $data Widgets' data.
868
- * @return boolean
869
- */
870
- public function import_widget_data( $data ) {
871
- global $wp_registered_sidebars;
872
-
873
- $available_widgets = $this->availableWidgets();
874
- $widget_instances = array();
875
- foreach ( $available_widgets as $widget_data ) {
876
- $widget_instances[ $widget_data['id_base'] ] = get_option( 'widget_' . $widget_data['id_base'] );
877
- }
878
- if ( empty( $data ) || ! is_object( $data ) ) {
879
- throw new Exception( 'Widget data could not be read. Please try a different file.' );
880
- }
881
- $results = array();
882
- foreach ( $data as $sidebar_id => $widgets ) {
883
- if ( 'wp_inactive_widgets' == $sidebar_id ) {
884
- continue;
885
- }
886
- if ( isset( $wp_registered_sidebars[ $sidebar_id ] ) ) {
887
- $sidebar_available = true;
888
- $use_sidebar_id = $sidebar_id;
889
- $sidebar_message_type = 'success';
890
- $sidebar_message = '';
891
- } else {
892
- $sidebar_available = false;
893
- $use_sidebar_id = 'wp_inactive_widgets';
894
- $sidebar_message_type = 'error';
895
- $sidebar_message = 'Sidebar does not exist in theme (using Inactive)';
896
- }
897
- $results[ $sidebar_id ]['name'] = ! empty( $wp_registered_sidebars[ $sidebar_id ]['name'] ) ? $wp_registered_sidebars[ $sidebar_id ]['name'] : $sidebar_id;
898
- $results[ $sidebar_id ]['message_type'] = $sidebar_message_type;
899
- $results[ $sidebar_id ]['message'] = $sidebar_message;
900
- $results[ $sidebar_id ]['widgets'] = array();
901
- foreach ( $widgets as $widget_instance_id => $widget ) {
902
- $fail = false;
903
- $id_base = preg_replace( '/-[0-9]+$/', '', $widget_instance_id );
904
- $instance_id_number = str_replace( $id_base . '-', '', $widget_instance_id );
905
- if ( ! $fail && ! isset( $available_widgets[ $id_base ] ) ) {
906
- $fail = true;
907
- $widget_message_type = 'error';
908
- $widget_message = 'Site does not support widget';
909
- }
910
- $widget = apply_filters( 'jupiterx_widget_settings', $widget );
911
- if ( ! $fail && isset( $widget_instances[ $id_base ] ) ) {
912
- $sidebars_widgets = get_option( 'sidebars_widgets' );
913
- $sidebar_widgets = isset( $sidebars_widgets[ $use_sidebar_id ] ) ? $sidebars_widgets[ $use_sidebar_id ] : array();
914
- $single_widget_instances = ! empty( $widget_instances[ $id_base ] ) ? $widget_instances[ $id_base ] : array();
915
- foreach ( $single_widget_instances as $check_id => $check_widget ) {
916
- if ( in_array( "$id_base-$check_id", $sidebar_widgets ) && (array) $widget == $check_widget ) {
917
- $fail = true;
918
- $widget_message_type = 'warning';
919
- $widget_message = 'Widget already exists';
920
- break;
921
- }
922
- }
923
- }
924
- if ( ! $fail ) {
925
- $single_widget_instances = get_option( 'widget_' . $id_base );
926
- $single_widget_instances = ! empty( $single_widget_instances ) ? $single_widget_instances : array(
927
- '_multiwidget' => 1,
928
- );
929
- $single_widget_instances[] = (array) $widget;
930
- end( $single_widget_instances );
931
- $new_instance_id_number = key( $single_widget_instances );
932
- if ( '0' === strval( $new_instance_id_number ) ) {
933
- $new_instance_id_number = 1;
934
- $single_widget_instances[ $new_instance_id_number ] = $single_widget_instances[0];
935
- unset( $single_widget_instances[0] );
936
- }
937
- if ( isset( $single_widget_instances['_multiwidget'] ) ) {
938
- $multiwidget = $single_widget_instances['_multiwidget'];
939
- unset( $single_widget_instances['_multiwidget'] );
940
- $single_widget_instances['_multiwidget'] = $multiwidget;
941
- }
942
- update_option( 'widget_' . $id_base, $single_widget_instances );
943
- $sidebars_widgets = get_option( 'sidebars_widgets' );
944
- $new_instance_id = $id_base . '-' . $new_instance_id_number;
945
- $sidebars_widgets[ $use_sidebar_id ][] = $new_instance_id;
946
- update_option( 'sidebars_widgets', $sidebars_widgets );
947
- if ( $sidebar_available ) {
948
- $widget_message_type = 'success';
949
- $widget_message = 'Imported';
950
- } else {
951
- $widget_message_type = 'warning';
952
- $widget_message = 'Imported to Inactive';
953
- }
954
- }
955
- $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['name'] = isset( $available_widgets[ $id_base ]['name'] ) ? $available_widgets[ $id_base ]['name'] : $id_base;
956
- $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['title'] = ! empty( $widget->title ) ? $widget->title : '';
957
- $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message_type'] = $widget_message_type;
958
- $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message'] = $widget_message;
959
- } // End foreach().
960
- } // End foreach().
961
-
962
- return true;
963
- }
964
-
965
- /**
966
- * Import Widgets.
967
- *
968
- * @throws Exception If required file is missing.
969
- * @throws Exception If can not import Widgets.
970
- *
971
- * @since 1.0
972
- */
973
- private function import_widgets() {
974
- try {
975
- $file_name = 'widget_data.wie';
976
-
977
- if ( ! file_exists( $this->_get_import_package_dir_path( $file_name ) ) ) {
978
- throw new Exception(
979
- sprintf( __( 'A required file (%s) is missing in the selected zip file.', 'jupiterx-core' ), $file_name )
980
- );
981
- }
982
-
983
- $import_data = JupiterX_Control_Panel_Helpers::getFileBody(
984
- $this->_get_import_package_dir_url( $file_name ),
985
- $this->_get_import_package_dir_path( $file_name )
986
- );
987
-
988
- $data = json_decode( $import_data );
989
-
990
- if ( ! $this->import_widget_data( $data ) ) {
991
- throw new Exception( __( 'A problem occurred in importing Widgets.', 'jupiterx-core' ) );
992
- }
993
-
994
- return wp_send_json_success(
995
- array(
996
- 'step' => 'Widgets',
997
- )
998
- );
999
-
1000
- } catch ( Exception $e ) {
1001
- return wp_send_json_error( $e->getMessage() );
1002
- }
1003
- }
1004
-
1005
- /**
1006
- * Import Settings.
1007
- *
1008
- * @throws Exception If required file is missing.
1009
- * @throws Exception If can not import Settings.
1010
- *
1011
- * @since 1.0
1012
- */
1013
- private function import_settings() {
1014
- try {
1015
-
1016
- require_once ABSPATH . 'wp-includes/class-wp-customize-manager.php';
1017
- $wp_customize = new WP_Customize_Manager();
1018
-
1019
- $file_name = 'settings.json';
1020
-
1021
- if ( ! file_exists( $this->_get_import_package_dir_path( $file_name ) ) ) {
1022
- throw new Exception(
1023
- sprintf( __( '%s is missing in the selected zip file.', 'jupiterx-core' ), $file_name )
1024
- );
1025
- }
1026
-
1027
- $import_data = JupiterX_Control_Panel_Helpers::getFileBody(
1028
- $this->_get_import_package_dir_url( $file_name ),
1029
- $this->_get_import_package_dir_path( $file_name )
1030
- );
1031
-
1032
- $data = json_decode( $import_data, true );
1033
-
1034
- // Data checks.
1035
- if ( 'array' != gettype( $data ) ) {
1036
- throw new Exception(
1037
- sprintf( __( 'Error importing settings! Please check that you uploaded (%s) a Settings export file.', 'jupiterx-core' ), $file_name )
1038
- );
1039
- }
1040
- if ( ! isset( $data['template'] ) || ! isset( $data['mods'] ) ) {
1041
- throw new Exception(
1042
- sprintf( __( 'Error importing settings! template Please check that you uploaded (%s) a Settings export file.', 'jupiterx-core' ), $file_name )
1043
- );
1044
- }
1045
-
1046
- $data['mods'] = self::_import_images( $data['mods'] );
1047
-
1048
- // Import custom options.
1049
- // if ( isset( $data['options'] ) ) {
1050
-
1051
- // foreach ( $data['options'] as $option_key => $option_value ) {
1052
-
1053
- // $option = new JupiterX_Customizer_Option(
1054
- // $wp_customize, $option_key, array(
1055
- // 'default' => '',
1056
- // 'type' => 'option',
1057
- // 'capability' => 'edit_theme_options',
1058
- // )
1059
- // );
1060
-
1061
- // $option->import( $option_value );
1062
- // }
1063
- // }
1064
-
1065
- // If wp_css is set then import it.
1066
- if ( function_exists( 'wp_update_custom_css_post' ) && isset( $data['wp_css'] ) && '' !== $data['wp_css'] ) {
1067
- wp_update_custom_css_post( $data['wp_css'] );
1068
- }
1069
-
1070
- // Loop through the mods.
1071
- foreach ( $data['mods'] as $key => $val ) {
1072
-
1073
- // Save the mod.
1074
- set_theme_mod( $key, $val );
1075
- }
1076
-
1077
- return wp_send_json_success(
1078
- array(
1079
- 'step' => 'Settings',
1080
- )
1081
- );
1082
-
1083
- } catch ( Exception $e ) {
1084
- return wp_send_json_error( $e->getMessage() );
1085
- }
1086
- }
1087
-
1088
- /**
1089
- * End Import process by deleting Import directory and clearing theme cache.
1090
- *
1091
- * @since 1.0
1092
- */
1093
- private function import_end() {
1094
- try {
1095
-
1096
- $this->jupiterx_filesystem->rmdir( $this->folder['import_dir'], true );
1097
-
1098
- return wp_send_json_success(
1099
- array(
1100
- 'step' => 'End',
1101
- )
1102
- );
1103
-
1104
- } catch ( Exception $e ) {
1105
- return wp_send_json_error( $e->getMessage() );
1106
- }
1107
- }
1108
-
1109
- /**
1110
- * Discard Export/Import process by deleting the the directory.
1111
- *
1112
- * @since 1.0
1113
- * @param string $dir The Export/Import directory.
1114
- */
1115
- private function discard( $dir ) {
1116
- try {
1117
- $this->jupiterx_filesystem->rmdir( $dir, true );
1118
-
1119
- return wp_send_json_success(
1120
- array(
1121
- 'step' => 'Discard',
1122
- )
1123
- );
1124
-
1125
- } catch ( Exception $e ) {
1126
- return wp_send_json_error( $e->getMessage() );
1127
- }
1128
- }
1129
-
1130
- /**
1131
- * Get import package directory name.
1132
- *
1133
- * @since 1.0
1134
- */
1135
- private function _get_import_package_dir_name() {
1136
- return end( @scandir( $this->folder['import_dir'] ) );
1137
- }
1138
-
1139
- /**
1140
- * Get import package directory full path.
1141
- *
1142
- * @param array $$file_name The file name.
1143
- *
1144
- * @since 1.0
1145
- */
1146
- private function _get_import_package_dir_path( $file_name ) {
1147
- return $this->folder['import_dir'] . '/' . $this->_get_import_package_dir_name() . '/' . $file_name;
1148
- }
1149
-
1150
- /**
1151
- * Get import package directory full url.
1152
- *
1153
- * @param array $file_name The file name.
1154
- *
1155
- * @since 1.0
1156
- */
1157
- private function _get_import_package_dir_url( $file_name ) {
1158
- return $this->folder['import_url'] . '/' . $this->_get_import_package_dir_name() . '/' . $file_name;
1159
- }
1160
-
1161
- /**
1162
- * Imports images for settings saved as mods.
1163
- *
1164
- * @since 1.0
1165
- * @access private
1166
- * @param array $mods An array of customizer mods.
1167
- * @return array The mods array with any new import data.
1168
- */
1169
- static public function _import_images( $mods ) {
1170
- foreach ( $mods as $key => $val ) {
1171
-
1172
- if ( self::_is_image_url( $val ) ) {
1173
-
1174
- $data = self::_sideload_image( $val );
1175
-
1176
- if ( ! is_wp_error( $data ) ) {
1177
-
1178
- $mods[ $key ] = $data->url;
1179
-
1180
- // Handle header image controls.
1181
- if ( isset( $mods[ $key . '_data' ] ) ) {
1182
- $mods[ $key . '_data' ] = $data;
1183
- update_post_meta( $data->attachment_id, '_wp_attachment_is_custom_header', get_stylesheet() );
1184
- }
1185
- }
1186
- }
1187
- }
1188
-
1189
- return $mods;
1190
- }
1191
-
1192
- /**
1193
- * Taken from the core media_sideload_image function and
1194
- * modified to return an array of data instead of html.
1195
- *
1196
- * @since 1.0
1197
- * @access private
1198
- * @param string $file The image file path.
1199
- * @return array An array of image data.
1200
- */
1201
- static private function _sideload_image( $file ) {
1202
- $data = new stdClass();
1203
-
1204
- if ( ! function_exists( 'media_handle_sideload' ) ) {
1205
- require_once( ABSPATH . 'wp-admin/includes/media.php' );
1206
- require_once( ABSPATH . 'wp-admin/includes/file.php' );
1207
- require_once( ABSPATH . 'wp-admin/includes/image.php' );
1208
- }
1209
- if ( ! empty( $file ) ) {
1210
-
1211
- // Set variables for storage, fix file filename for query strings.
1212
- preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches );
1213
- $file_array = array();
1214
- $file_array['name'] = basename( $matches[0] );
1215
-
1216
- // Download file to temp location.
1217
- $file_array['tmp_name'] = download_url( $file );
1218
-
1219
- // If error storing temporarily, return the error.
1220
- if ( is_wp_error( $file_array['tmp_name'] ) ) {
1221
- return $file_array['tmp_name'];
1222
- }
1223
-
1224
- // Do the validation and storage stuff.
1225
- $id = media_handle_sideload( $file_array, 0 );
1226
-
1227
- // If error storing permanently, unlink.
1228
- if ( is_wp_error( $id ) ) {
1229
- @unlink( $file_array['tmp_name'] );
1230
- return $id;
1231
- }
1232
-
1233
- // Build the object to return.
1234
- $meta = wp_get_attachment_metadata( $id );
1235
- $data->attachment_id = $id;
1236
- $data->url = wp_get_attachment_url( $id );
1237
- $data->thumbnail_url = wp_get_attachment_thumb_url( $id );
1238
- $data->height = $meta['height'];
1239
- $data->width = $meta['width'];
1240
- }
1241
-
1242
- return $data;
1243
- }
1244
-
1245
- /**
1246
- * Checks to see whether a string is an image url or not.
1247
- *
1248
- * @since 1.0
1249
- * @access private
1250
- * @param string $string The string to check.
1251
- * @return bool Whether the string is an image url or not.
1252
- */
1253
- static private function _is_image_url( $string = '' ) {
1254
- if ( is_string( $string ) ) {
1255
-
1256
- if ( preg_match( '/\.(jpg|jpeg|png|gif)/i', $string ) ) {
1257
- return true;
1258
- }
1259
- }
1260
-
1261
- return false;
1262
- }
1263
-
1264
- /**
1265
- * Get supported plugins.
1266
- *
1267
- * @since 1.11.0
1268
- *
1269
- * @return array Supported plugins.
1270
- */
1271
- private function get_supported_plugins() {
1272
- $active_plugins = get_option( 'active_plugins' );
1273
-
1274
- if ( is_multisite() ) {
1275
- $active_plugins = array_merge( $active_plugins, get_site_option( 'active_sitewide_plugins' ) );
1276
- }
1277
-
1278
- $plugins = [];
1279
-
1280
- foreach ( $active_plugins as $plugin ) {
1281
- $plugins[] = substr( $plugin, 0, strrpos( $plugin, '/' ) );
1282
- }
1283
-
1284
- $supported_plugins = array_intersect( $plugins, $this->supported_plugins );
1285
-
1286
- return $supported_plugins;
1287
- }
1288
-
1289
- /**
1290
- * Get supported tables to export.
1291
- *
1292
- * @since 1.11.0
1293
- *
1294
- * @return array Supported tables.
1295
- */
1296
- private function get_supported_tables() {
1297
- return [
1298
- 'jet-engine' => [ 'jet_post_types', 'jet_taxonomies' ],
1299
- ];
1300
- }
1301
- }
1302
-
1303
- new JupiterX_Control_Panel_Export_Import();
1304
- }
1
+ <?php
2
+ /**
3
+ * Export and Import API: JupiterX_Control_Panel_Export_Import base class
4
+ *
5
+ * @package JupiterX_Core\Control_Panel\Export_Import
6
+ * @since 1.0
7
+ */
8
+ if ( ! class_exists( 'JupiterX_Control_Panel_Export_Import' ) ) {
9
+ /**
10
+ * Export/Import Site Content, Widgets, Settings.
11
+ *
12
+ * @author Artbees Team
13
+ * @since 1.0
14
+ * @SuppressWarnings(PHPMD.StaticAccess)
15
+ * @SuppressWarnings(PHPMD.ExcessiveClassComplexitys)
16
+ */
17
+ class JupiterX_Control_Panel_Export_Import {
18
+
19
+ /**
20
+ * $jupiterx_filesystem instance.
21
+ *
22
+ * @since 1.0
23
+ * @var array
24
+ */
25
+ private $jupiterx_filesystem;
26
+
27
+
28
+ /**
29
+ * $supported_plugins instance.
30
+ *
31
+ * @since 1.0
32
+ * @var array
33
+ */
34
+ private $supported_plugins;
35
+
36
+ /**
37
+ * Export and Import directory’s path and url.
38
+ *
39
+ * @since 1.0
40
+ * @var array
41
+ */
42
+ private $folder = array();
43
+
44
+ /**
45
+ * Constructor.
46
+ *
47
+ * @since 1.0
48
+ */
49
+ public function __construct() {
50
+
51
+ add_filter( 'jupiterx_control_panel_pane_export_import', [ $this, 'view' ] );
52
+
53
+ $upload_dir = wp_upload_dir();
54
+ $this->folder['export_url'] = $upload_dir['baseurl'] . '/jupiterx/export';
55
+ $this->folder['export_dir'] = $upload_dir['basedir'] . '/jupiterx/export';
56
+ $this->folder['import_url'] = $upload_dir['baseurl'] . '/jupiterx/import';
57
+ $this->folder['import_dir'] = $upload_dir['basedir'] . '/jupiterx/import';
58
+
59
+ $this->supported_plugins = array(
60
+ 'woocommerce',
61
+ 'js_composer_theme',
62
+ 'LayerSlider',
63
+ 'masterslider',
64
+ 'revslider',
65
+ 'advanced-custom-fields-pro',
66
+ 'advanced-custom-fields',
67
+ 'jet-elements',
68
+ 'jet-menu',
69
+ 'jet-popup',
70
+ 'jet-tabs',
71
+ 'jet-woo-builder',
72
+ 'jet-tricks',
73
+ 'jet-engine',
74
+ 'jet-smart-filters',
75
+ 'raven',
76
+ 'elementor',
77
+ 'customizer-reset-by-wpzoom',
78
+ 'customizer-export-import',
79
+ 'jupiterx-core',
80
+ 'jupiterx-pro',
81
+ 'menu-icons',
82
+ );
83
+
84
+ add_action( 'wp_ajax_jupiterx_cp_export_import', array( $this, 'ajax_handler' ) );
85
+ }
86
+
87
+ /**
88
+ * Export/Import HTML directory.
89
+ *
90
+ * @since 1.9.0
91
+ *
92
+ * @return string
93
+ */
94
+ public function view() {
95
+ return jupiterx_core()->plugin_dir() . 'includes/control-panel/views/export-import-content.php';
96
+ }
97
+
98
+
99
+ /**
100
+ * Map the requests to proper methods.
101
+ *
102
+ * @since 1.0
103
+ */
104
+ public function ajax_handler() {
105
+ check_ajax_referer( 'jupiterx_control_panel', 'nonce' );
106
+
107
+ $type = filter_input( INPUT_POST, 'type' );
108
+ $step = filter_input( INPUT_POST, 'step' );
109
+ $attachment_id = filter_input( INPUT_POST, 'attachment_id' );
110
+
111
+ if ( empty( $type ) ) {
112
+ wp_send_json_error(
113
+ __( 'Type param is missing.', 'jupiterx-core' )
114
+ );
115
+ }
116
+
117
+ if ( empty( $step ) ) {
118
+ wp_send_json_error(
119
+ __( 'Step param is missing.', 'jupiterx-core' )
120
+ );
121
+ }
122
+
123
+ if ( 'Export' === $type ) {
124
+ $this->jupiterx_filesystem = new JupiterX_Filesystem(
125
+ array(
126
+ 'context' => $this->folder['export_dir'],
127
+ )
128
+ );
129
+ return $this->export( $step );
130
+ }
131
+
132
+ if ( 'Import' === $type ) {
133
+
134
+ if ( empty( $attachment_id ) ) {
135
+ wp_send_json_error(
136
+ __( 'Attachment ID param is missing.', 'jupiterx-core' )
137
+ );
138
+ }
139
+
140
+ $this->jupiterx_filesystem = new JupiterX_Filesystem(
141
+ array(
142
+ 'context' => $this->folder['import_dir'],
143
+ )
144
+ );
145
+ return $this->import( $step, $attachment_id );
146
+ }
147
+
148
+ wp_send_json_error(
149
+ sprintf( __( 'Type param (%s) is not valid.', 'jupiterx-core' ), $type )
150
+ );
151
+ }
152
+
153
+ /**
154
+ * Run proper export method based on step.
155
+ *
156
+ * @since 1.0
157
+ * @param string $step The export step.
158
+ * @return void
159
+ */
160
+ private function export( $step ) {
161
+ switch ( $step ) {
162
+ case 'Start':
163
+ $this->export_start();
164
+ break;
165
+
166
+ case 'Content':
167
+ $this->export_content();
168
+ break;
169
+
170
+ case 'Widgets':
171
+ $this->export_widgets();
172
+ break;
173
+
174
+ case 'Settings':
175
+ $this->export_settings();
176
+ break;
177
+
178
+ case 'Custom Tables':
179
+ $this->export_custom_tables();
180
+ break;
181
+
182
+ case 'End':
183
+ $this->export_end();
184
+ break;
185
+
186
+ case 'Discard':
187
+ $this->discard( $this->folder['export_dir'] );
188
+ break;
189
+ }
190
+
191
+ wp_send_json_error(
192
+ sprintf( __( 'Step param (%s) is not valid.', 'jupiterx-core' ), $step )
193
+ );
194
+ }
195
+
196
+ /**
197
+ * Start export process by cleaning the export directory.
198
+ *
199
+ * @throws Exception If can not clean export folder.
200
+ *
201
+ * @since 1.0
202
+ */
203
+ private function export_start() {
204
+ try {
205
+ if ( $this->jupiterx_filesystem->rmdir( $this->folder['export_dir'], true ) ) {
206
+ return wp_send_json_success(
207
+ array(
208
+ 'step' => 'Start',
209
+ )
210
+ );
211
+ }
212
+
213
+ throw new Exception( __( 'A problem occurred in cleaning export directory.', 'jupiterx-core' ) );
214
+ } catch ( Exception $e ) {
215
+ return wp_send_json_error( $e->getMessage() );
216
+ }
217
+ }
218
+
219
+ /**
220
+ * Export content.
221
+ *
222
+ * @throws Exception If can not export Content.
223
+ *
224
+ * @since 1.0
225
+ */
226
+ private function export_content() {
227
+ try {
228
+ require_once ABSPATH . 'wp-admin/includes/export.php';
229
+
230
+ ob_start();
231
+ export_wp();
232
+ $content = ob_get_clean();
233
+ ob_end_clean();
234
+
235
+ $file_name = 'theme_content.xml';
236
+ $file_path = $this->folder['export_dir'] . '/' . $file_name;
237
+
238
+ if ( ! $this->jupiterx_filesystem->put_contents( $file_path, $content ) ) {
239
+ throw new Exception( __( 'A problem occurred in exporting Content.', 'jupiterx-core' ) );
240
+ }
241
+
242
+ $this->export_plugins();
243
+
244
+ return wp_send_json_success(
245
+ array(
246
+ 'step' => 'Content',
247
+ )
248
+ );
249
+ } catch ( Exception $e ) {
250
+ return wp_send_json_error( $e->getMessage() );
251
+ }
252
+ }
253
+
254
+ /**
255
+ * Export plugins content.
256
+ *
257
+ * @since 1.0.3
258
+ */
259
+ public function export_plugins() {
260
+ $active_plugins = get_option( 'active_plugins' );
261
+
262
+ if ( is_multisite() ) {
263
+ $active_plugins = array_merge( $active_plugins, get_site_option( 'active_sitewide_plugins' ) );
264
+ }
265
+
266
+ foreach ( $active_plugins as $plugin ) {
267
+ $plugins_slug[] = substr( $plugin, 0, strrpos( $plugin, '/' ) );
268
+ }
269
+
270
+ $supported_plugins = array_intersect( $plugins_slug, $this->supported_plugins );
271
+
272
+ foreach ( $supported_plugins as $plugin ) {
273
+ if ( is_callable( [ $this, "export_{$plugin}_content" ] ) ) {
274
+ call_user_func( [ $this, "export_{$plugin}_content" ] );
275
+ }
276
+ }
277
+ }
278
+
279
+ /**
280
+ * Export Revolution Slider slides.
281
+ *
282
+ * @since 1.0.3
283
+ */
284
+ public function export_revslider_content() {
285
+ if ( ! class_exists( 'RevSlider' ) ) {
286
+ return;
287
+ }
288
+
289
+ // Initialize Revolution Slider.
290
+ $revslider = new RevSlider();
291
+
292
+ $sliders = $revslider->getAllSliderAliases();
293
+
294
+ if ( empty( $sliders ) ) {
295
+ return;
296
+ }
297
+
298
+ // Create download url.
299
+ $base_arg = [
300
+ 'action' => 'revslider_ajax_action',
301
+ 'client_action' => 'export_slider',
302
+ 'dummy' => 'false',
303
+ 'nonce' => wp_create_nonce( 'revslider_actions' ),
304
+ ];
305
+
306
+ $base_url = add_query_arg( $base_arg, admin_url( 'admin-ajax.php' ) );
307
+
308
+ $export_dir = "{$this->folder['export_dir']}/revslider/";
309
+
310
+ // Create and pass cookie.
311
+ $cookies = [];
312
+
313
+ foreach ( $_COOKIE as $name => $value ) {
314
+ $cookies[] = new WP_Http_Cookie( array( 'name' => $name, 'value' => $value ) );
315
+ }
316
+
317
+ $remote_args = [
318
+ 'cookies' => $cookies,
319
+ ];
320
+
321
+ // Go through each slides.
322
+ foreach ( $sliders as $slider_alias ) {
323
+ $revslider->initByAlias( $slider_alias );
324
+
325
+ $download_args = [
326
+ 'sliderid' => $revslider->getID(),
327
+ ];
328
+
329
+ $download_url = add_query_arg( $download_args, $base_url );
330
+
331
+ JupiterX_Control_Panel_Helpers::upload_from_url(
332
+ $download_url,
333
+ "{$slider_alias}.zip",
334
+ $export_dir,
335
+ $remote_args
336
+ );
337
+ }
338
+ }
339
+
340
+ public function availableWidgets() {
341
+ global $wp_registered_widget_controls;
342
+ $widget_controls = $wp_registered_widget_controls;
343
+ $available_widgets = array();
344
+ foreach ( $widget_controls as $widget ) {
345
+ if ( ! empty( $widget['id_base'] ) && ! isset( $available_widgets[ $widget['id_base'] ] ) ) {
346
+ $available_widgets[ $widget['id_base'] ]['id_base'] = $widget['id_base'];
347
+ $available_widgets[ $widget['id_base'] ]['name'] = $widget['name'];
348
+ }
349
+ }
350
+
351
+ return apply_filters( 'available_widgets', $available_widgets );
352
+ }
353
+
354
+ /**
355
+ * Export widgets.
356
+ *
357
+ * @throws Exception If can not export Widgets.
358
+ *
359
+ * @since 1.0
360
+ * @SuppressWarnings(PHPMD.CyclomaticComplexity)
361
+ */
362
+ private function export_widgets() {
363
+ try {
364
+ $available_widgets = $this->availableWidgets();
365
+
366
+ // Get all widget instances for each widget.
367
+ $widget_instances = array();
368
+
369
+ // Loop widgets.
370
+ foreach ( $available_widgets as $widget_data ) {
371
+ // Get all instances for this ID base.
372
+ $instances = get_option( 'widget_' . $widget_data['id_base'] );
373
+ // Have instances.
374
+ if ( ! empty( $instances ) ) {
375
+ // Loop instances.
376
+ foreach ( $instances as $instance_id => $instance_data ) {
377
+ // Key is ID (not _multiwidget).
378
+ if ( is_numeric( $instance_id ) ) {
379
+ $unique_instance_id = $widget_data['id_base'] . '-' . $instance_id;
380
+ $widget_instances[ $unique_instance_id ] = $instance_data;
381
+ }
382
+ }
383
+ }
384
+ }
385
+
386
+ // Gather sidebars with their widget instances.
387
+ $sidebars_widgets = get_option( 'sidebars_widgets' );
388
+ $sidebars_widget_ins = array();
389
+ foreach ( $sidebars_widgets as $sidebar_id => $widget_ids ) {
390
+
391
+ // Skip inactive widgets.
392
+ if ( 'wp_inactive_widgets' === $sidebar_id ) {
393
+ continue;
394
+ }
395
+
396
+ // Skip if no data or not an array (array_version).
397
+ if ( ! is_array( $widget_ids ) || empty( $widget_ids ) ) {
398
+ continue;
399
+ }
400
+
401
+ // Loop widget IDs for this sidebar.
402
+ foreach ( $widget_ids as $widget_id ) {
403
+ // Is there an instance for this widget ID?
404
+ if ( isset( $widget_instances[ $widget_id ] ) ) {
405
+ // Add to array.
406
+ $sidebars_widget_ins[ $sidebar_id ][ $widget_id ] = $widget_instances[ $widget_id ];
407
+ }
408
+ }
409
+ }
410
+
411
+ $content = wp_json_encode( $sidebars_widget_ins );
412
+
413
+ $file_name = 'widget_data.wie';
414
+ $file_path = $this->folder['export_dir'] . '/' . $file_name;
415
+
416
+ if ( $this->jupiterx_filesystem->put_contents( $file_path, $content ) ) {
417
+ return wp_send_json_success(
418
+ array(
419
+ 'step' => 'Widgets',
420
+ )
421
+ );
422
+ }
423
+
424
+ throw new Exception( __( 'A problem occurred in exporting widgets.', 'jupiterx-core' ) );
425
+ } catch ( Exception $e ) {
426
+ return wp_send_json_error( $e->getMessage() );
427
+ } // End try().
428
+ }
429
+
430
+
431
+ /**
432
+ * An array of core options that shouldn't be imported.
433
+ *
434
+ * @since 1.0
435
+ * @access private
436
+ * @var array $core_options
437
+ */
438
+ static private $core_options = array(
439
+ 'blogname',
440
+ 'blogdescription'
441
+ );
442
+
443
+
444
+ /**
445
+ * Export Settings.
446
+ *
447
+ * @throws Exception If can not export Settings.
448
+ *
449
+ * @since 1.0
450
+ */
451
+ private function export_settings() {
452
+ try {
453
+ $data = [
454
+ 'template' => get_template(),
455
+ 'mods' => [],
456
+ 'options' => [],
457
+ ];
458
+
459
+ $data = $this->_export_settings_customizer_mods( $data );
460
+
461
+ $data = $this->_export_settings_customizer_options( $data );
462
+
463
+ $data = $this->_export_settings_plugins( $data );
464
+
465
+ $data = $this->_export_settings_options( $data );
466
+
467
+ // WP custom CSS.
468
+ if ( function_exists( 'wp_get_custom_css_post' ) ) {
469
+ $data['wp_css'] = wp_get_custom_css();
470
+ }
471
+
472
+ $file_name = 'settings.json';
473
+ $file_path = $this->folder['export_dir'] . '/' . $file_name;
474
+
475
+ if ( ! is_array( $data ) ) {
476
+ throw new Exception( __( 'All settings in Settings are set to default. Uncheck the Settings option or change one setting in Settings then export.', 'jupiterx-core' ) );
477
+ }
478
+
479
+ if ( ! $this->jupiterx_filesystem->put_contents( $file_path, wp_json_encode( $data ) ) ) {
480
+ throw new Exception( __( 'A problem occurred in exporting Settings.', 'jupiterx-core' ) );
481
+ }
482
+
483
+ return wp_send_json_success( [ 'step' => 'Settings' ] );
484
+
485
+ } catch ( Exception $e ) {
486
+ return wp_send_json_error( $e->getMessage() );
487
+ }
488
+ }
489
+
490
+ /**
491
+ * Export custom tables.
492
+ *
493
+ * @since 1.11.0
494
+ */
495
+ private function export_custom_tables() {
496
+ try {
497
+ $db_manager = new JupiterX_Control_Panel_PHP_DB_Manager();
498
+
499
+ $supported_plugins = $this->get_supported_plugins();
500
+
501
+ $supported_tables = array_filter( $this->get_supported_tables(), function( $plugin ) use ( $supported_plugins ) {
502
+ return in_array( $plugin, $supported_plugins, true );
503
+ }, ARRAY_FILTER_USE_KEY );
504
+
505
+ $tables = [];
506
+
507
+ // Prepare table names.
508
+ foreach ( $supported_tables as $plugin_tables ) {
509
+ foreach ( $plugin_tables as $table ) {
510
+ array_push( $tables, $db_manager->get_table_prefix() . $table );
511
+ }
512
+ }
513
+
514
+ if ( ! empty( $tables ) ) {
515
+ $dump_tables = $db_manager->dump_tables( $this->folder['export_dir'] . '/tables.sql', $tables );
516
+
517
+ if ( $dump_tables !== true ) {
518
+ throw new Exception( $dump_tables );
519
+ }
520
+ }
521
+
522
+ return wp_send_json_success( [ 'step' => 'Custom Tables' ] );
523
+ } catch ( Exception $e ) {
524
+ return wp_send_json_error( $e->getMessage() );
525
+ }
526
+ }
527
+
528
+ /**
529
+ * Export customizer mods.
530
+ *
531
+ * @since 1.0.4
532
+ */
533
+ private function _export_settings_customizer_mods( $data ) {
534
+ $mods = get_theme_mods();
535
+
536
+ if ( ! empty( $mods ) ) {
537
+ unset( $mods['sidebars_widgets'] );
538
+ $data['mods'] = $mods;
539
+ }
540
+
541
+ return $data;
542
+ }
543
+
544
+ /**
545
+ * Export customizer options.
546
+ *
547
+ * @since 1.0.4
548
+ */
549
+ private function _export_settings_customizer_options( $data ) {
550
+ require_once ABSPATH . 'wp-includes/class-wp-customize-manager.php';
551
+
552
+ $wp_customize = new WP_Customize_Manager();
553
+ $settings = $wp_customize->settings();
554
+
555
+ foreach ( $settings as $key => $setting ) {
556
+ if ( 'option' == $setting->type ) {
557
+
558
+ // Don't save widget data.
559
+ if ( stristr( $key, 'widget_' ) ) {
560
+ continue;
561
+ }
562
+
563
+ // Don't save sidebar data.
564
+ if ( stristr( $key, 'sidebars_' ) ) {
565
+ continue;
566
+ }
567
+
568
+ // Don't save core options.
569
+ if ( in_array( $key, self::$core_options ) ) {
570
+ continue;
571
+ }
572
+
573
+ $data['options'][ $key ] = $setting->value();
574
+ }
575
+ }
576
+
577
+ return $data;
578
+ }
579
+
580
+ /**
581
+ * Export active supported plugins.
582
+ *
583
+ * @since 1.0.4
584
+ */
585
+ private function _export_settings_plugins( $data ) {
586
+ $all_active_plugins = get_option( 'active_plugins' );
587
+
588
+ foreach ( $all_active_plugins as $plugin ) {
589
+ $active_plugins[] = substr( $plugin, 0, strrpos( $plugin, '/' ) );
590
+ }
591
+
592
+ if ( is_multisite() ) {
593
+ $sitewide_all_active_plugins = get_site_option( 'active_sitewide_plugins' );
594
+
595
+ foreach ( $sitewide_all_active_plugins as $plugin => $id ) {
596
+ $active_plugins[] = substr( $plugin, 0, strrpos( $plugin, '/' ) );
597
+ }
598
+ }
599
+
600
+ $supported_active_plugins = array_intersect( $active_plugins, $this->supported_plugins );
601
+
602
+ foreach ( $supported_active_plugins as $plugins ) {
603
+ $data['options']['jupiterx_support_plugins'][] = $plugins;
604
+ }
605
+
606
+ return $data;
607
+ }
608
+
609
+ /**
610
+ * Export options.
611
+ *
612
+ * @since 1.0.4
613
+ */
614
+ private function _export_settings_options( $data ) {
615
+ /**
616
+ * Extra options.
617
+ *
618
+ * Any option that can be exported & imported without modifications.
619
+ */
620
+ $option_keys = apply_filters( 'jupiterx_extra_export_option_keys', [
621
+ 'elementor_scheme_color',
622
+ 'elementor_scheme_typography',
623
+ 'elementor_scheme_color-picker',
624
+ 'elementor_cpt_support',
625
+ 'elementor_disable_color_schemes',
626
+ 'elementor_disable_typography_schemes',
627
+ 'elementor_default_generic_fonts',
628
+ 'elementor_container_width',
629
+ 'elementor_space_between_widgets',
630
+ 'elementor_stretched_section_container',
631
+ 'elementor_page_title_selector',
632
+ 'elementor_viewport_lg',
633
+ 'elementor_viewport_md',
634
+ 'elementor_global_image_lightbox',
635
+ 'elementor_lightbox_color',
636
+ 'elementor_lightbox_ui_color',
637
+ 'elementor_lightbox_ui_color_hover',
638
+ 'elementor_enable_lightbox_in_editor',
639
+ 'elementor_global_image_lightbox',
640
+ ] );
641
+
642
+ foreach ( $option_keys as $option_key ) {
643
+ $option = get_option( $option_key, null );
644
+
645
+ if ( ! is_null( $option ) ) {
646
+ $data['options']['extra'][ $option_key ] = $option;
647
+ }
648
+ }
649
+
650
+ // Front page.
651
+ $page_on_front = get_option( 'page_on_front' );
652
+
653
+ if ( ! empty( $page_on_front ) ) {
654
+ $data['options']['page_on_front'] = get_the_title( $page_on_front );
655
+ }
656
+
657
+ // Menu locations.
658
+ $get_nav_locations = get_theme_mod( 'nav_menu_locations' );
659
+
660
+ foreach ( $get_nav_locations as $location => $id ) {
661
+ $get_term = get_term_by( 'id', $id, 'nav_menu' );
662
+ $data['options']['jupiterx_menu_locations'][ $location ] = $get_term->name;
663
+ }
664
+
665
+ // WooCommerce.
666
+ $woocommerce_shop_page_id = get_option( 'woocommerce_shop_page_id' );
667
+
668
+ if ( ! empty( $woocommerce_shop_page_id ) ) {
669
+ $data['options']['woocommerce_shop_page_id'] = get_the_title( $woocommerce_shop_page_id );
670
+ }
671
+
672
+ $woocommerce_cart_page_id = get_option( 'woocommerce_cart_page_id' );
673
+
674
+ if ( ! empty( $woocommerce_cart_page_id ) ) {
675
+ $data['options']['woocommerce_cart_page_id'] = get_the_title( $woocommerce_cart_page_id );
676
+ }
677
+
678
+ $woocommerce_checkout_page_id = get_option( 'woocommerce_checkout_page_id' );
679
+
680
+ if ( ! empty( $woocommerce_checkout_page_id ) ) {
681
+ $data['options']['woocommerce_checkout_page_id'] = get_the_title( $woocommerce_checkout_page_id );
682
+ }
683
+
684
+ $woocommerce_myaccount_page_id = get_option( 'woocommerce_myaccount_page_id' );
685
+
686
+ if ( ! empty( $woocommerce_checkout_page_id ) ) {
687
+ $data['options']['woocommerce_myaccount_page_id'] = get_the_title( $woocommerce_myaccount_page_id );
688
+ }
689
+
690
+ // Jet Menu.
691
+ $jet_menu_options = get_option( 'jet_menu_options' );
692
+
693
+ if ( ! empty( $jet_menu_options ) && in_array( 'jet-menu', $data['options']['jupiterx_support_plugins'], true ) ) {
694
+ $data['options']['jet_menu_options'] = $jet_menu_options;
695
+ }
696
+
697
+ return $data;
698
+ }
699
+
700
+ /**
701
+ * End export process by creating the zip file and download url.
702
+ *
703
+ * @since 1.0
704
+ */
705
+ private function export_end() {
706
+ try {
707
+ $this->jupiterx_filesystem->zip_folder( $this->folder['export_dir'], "{$this->folder['export_dir']}/{$this->_prepare_directory_name()}.zip", $this->_prepare_directory_name() );
708
+
709
+ return wp_send_json_success(
710
+ array(
711
+ 'step' => 'End',
712
+ 'download_url' => $this->folder['export_url'] . '/' . $this->_prepare_directory_name() . '.zip',
713
+ )
714
+ );
715
+
716
+ } catch ( Exception $e ) {
717
+ return wp_send_json_error( $e->getMessage() );
718
+ }
719
+ }
720
+
721
+ /**
722
+ * Prepare the export zip file name.
723
+ *
724
+ * @since 1.0.0
725
+ */
726
+ private function _prepare_directory_name() {
727
+ $site_title = ! empty( get_bloginfo( 'name' ) ) ? get_bloginfo( 'name' ) : 'package';
728
+ $form_data = jupiterx_post( 'data' );
729
+
730
+ if ( ! empty( $form_data['filename'] ) ) {
731
+ return sanitize_title( $form_data['filename'] );
732
+ }
733
+
734
+ return sanitize_title( $site_title ) . '-jupiterx';
735
+ }
736
+
737
+ /**
738
+ * Run proper import method based on step.
739
+ *
740
+ * @since 1.0
741
+ * @param string $step The import step.
742
+ * @param integer $attachment_id The uploaded zip file ID.
743
+ * @return void
744
+ */
745
+ private function import( $step, $attachment_id ) {
746
+ switch ( $step ) {
747
+ case 'Start':
748
+ $this->import_start( $attachment_id );
749
+ break;
750
+
751
+ case 'Content':
752
+ $this->import_content();
753
+ break;
754
+
755
+ case 'Widgets':
756
+ $this->import_widgets();
757
+ break;
758
+
759
+ case 'Settings':
760
+ $this->import_settings();
761
+ break;
762
+
763
+ case 'End':
764
+ $this->import_end();
765
+ break;
766
+
767
+ case 'Discard':
768
+ $this->discard( $this->folder['import_dir'] );
769
+ break;
770
+ }
771
+
772
+ wp_send_json_error(
773
+ sprintf( __( 'Step param (%s) is not valid.', 'jupiterx-core' ), $step )
774
+ );
775
+ }
776
+
777
+ /**
778
+ * Start import process by cleaning import directory and
779
+ * unzipping file to directory Import directory.
780
+ *
781
+ * @since 1.0
782
+ * @param integer $attachment_id The uploaded zip file ID.
783
+ */
784
+ private function import_start( $attachment_id ) {
785
+ try {
786
+ $this->jupiterx_filesystem->rmdir( $this->folder['import_dir'], true );
787
+
788
+ $this->jupiterx_filesystem->unzip_custom(
789
+ get_attached_file( $attachment_id ),
790
+ $this->folder['import_dir']
791
+ );
792
+
793
+ return wp_send_json_success(
794
+ array(
795
+ 'step' => 'Start',
796
+ )
797
+ );
798
+ } catch ( Exception $e ) {
799
+ return wp_send_json_error( $e->getMessage() );
800
+ }
801
+ }
802
+
803
+ /**
804
+ * Import Content
805
+ *
806
+ * @throws Exception If required file is missing.
807
+ * @throws Exception If can not parse file..
808
+ *
809
+ * @since 1.0
810
+ */
811
+ private function import_content() {
812
+ try {
813
+ $file_name = 'theme_content.xml';
814
+ $file = $this->_get_import_package_dir_path( $file_name );
815
+ $fetch_attachments = true;
816
+
817
+ if ( ! file_exists( $file ) ) {
818
+ throw new Exception(
819
+ sprintf( __( 'A required file (%s) is missing in the selected zip file.', 'jupiterx-core' ), $file_name )
820
+ );
821
+ }
822
+
823
+ // Include wordpress-importer class.
824
+ JupiterX_Control_Panel_Helpers::include_wordpress_importer();
825
+
826
+ $options = array(
827
+ 'fetch_attachments' => filter_var( $fetch_attachments, FILTER_VALIDATE_BOOLEAN ),
828
+ 'default_author' => get_current_user_id(),
829
+ );
830
+
831
+ // Create new instance for Importer.
832
+ $importer = new JupiterX_WXR_Importer( $options );
833
+ $logger = new JupiterX_Importer_Logger_ServerSentEvents();
834
+ $importer->set_logger( $logger );
835
+
836
+ $data = $importer->get_preliminary_information( $file );
837
+
838
+ if ( is_wp_error( $data ) ) {
839
+ throw new Exception(
840
+ sprintf( __( 'Error in parsing %s.', 'jupiterx-core' ), $file_name )
841
+ );
842
+ }
843
+
844
+ // Run import process.
845
+ ob_start();
846
+ $importer->import( $file );
847
+ ob_end_clean();
848
+
849
+ return wp_send_json_success(
850
+ array(
851
+ 'step' => 'Content',
852
+ )
853
+ );
854
+
855
+ } catch ( Exception $e ) {
856
+ return wp_send_json_error( $e->getMessage() );
857
+ } // End try().
858
+ }
859
+
860
+ /**
861
+ * Import widgets' data.
862
+ *
863
+ * @throws Exception If can not read widget data.
864
+ *
865
+ * @since 5.7.0
866
+ * 6.0.4 Make it public.
867
+ * @param array $data Widgets' data.
868
+ * @return boolean
869
+ */
870
+ public function import_widget_data( $data ) {
871
+ global $wp_registered_sidebars;
872
+
873
+ $available_widgets = $this->availableWidgets();
874
+ $widget_instances = array();
875
+ foreach ( $available_widgets as $widget_data ) {
876
+ $widget_instances[ $widget_data['id_base'] ] = get_option( 'widget_' . $widget_data['id_base'] );
877
+ }
878
+ if ( empty( $data ) || ! is_object( $data ) ) {
879
+ throw new Exception( 'Widget data could not be read. Please try a different file.' );
880
+ }
881
+ $results = array();
882
+ foreach ( $data as $sidebar_id => $widgets ) {
883
+ if ( 'wp_inactive_widgets' == $sidebar_id ) {
884
+ continue;
885
+ }
886
+ if ( isset( $wp_registered_sidebars[ $sidebar_id ] ) ) {
887
+ $sidebar_available = true;
888
+ $use_sidebar_id = $sidebar_id;
889
+ $sidebar_message_type = 'success';
890
+ $sidebar_message = '';
891
+ } else {
892
+ $sidebar_available = false;
893
+ $use_sidebar_id = 'wp_inactive_widgets';
894
+ $sidebar_message_type = 'error';
895
+ $sidebar_message = 'Sidebar does not exist in theme (using Inactive)';
896
+ }
897
+ $results[ $sidebar_id ]['name'] = ! empty( $wp_registered_sidebars[ $sidebar_id ]['name'] ) ? $wp_registered_sidebars[ $sidebar_id ]['name'] : $sidebar_id;
898
+ $results[ $sidebar_id ]['message_type'] = $sidebar_message_type;
899
+ $results[ $sidebar_id ]['message'] = $sidebar_message;
900
+ $results[ $sidebar_id ]['widgets'] = array();
901
+ foreach ( $widgets as $widget_instance_id => $widget ) {
902
+ $fail = false;
903
+ $id_base = preg_replace( '/-[0-9]+$/', '', $widget_instance_id );
904
+ $instance_id_number = str_replace( $id_base . '-', '', $widget_instance_id );
905
+ if ( ! $fail && ! isset( $available_widgets[ $id_base ] ) ) {
906
+ $fail = true;
907
+ $widget_message_type = 'error';
908
+ $widget_message = 'Site does not support widget';
909
+ }
910
+ $widget = apply_filters( 'jupiterx_widget_settings', $widget );
911
+ if ( ! $fail && isset( $widget_instances[ $id_base ] ) ) {
912
+ $sidebars_widgets = get_option( 'sidebars_widgets' );
913
+ $sidebar_widgets = isset( $sidebars_widgets[ $use_sidebar_id ] ) ? $sidebars_widgets[ $use_sidebar_id ] : array();
914
+ $single_widget_instances = ! empty( $widget_instances[ $id_base ] ) ? $widget_instances[ $id_base ] : array();
915
+ foreach ( $single_widget_instances as $check_id => $check_widget ) {
916
+ if ( in_array( "$id_base-$check_id", $sidebar_widgets ) && (array) $widget == $check_widget ) {
917
+ $fail = true;
918
+ $widget_message_type = 'warning';
919
+ $widget_message = 'Widget already exists';
920
+ break;
921
+ }
922
+ }
923
+ }
924
+ if ( ! $fail ) {
925
+ $single_widget_instances = get_option( 'widget_' . $id_base );
926
+ $single_widget_instances = ! empty( $single_widget_instances ) ? $single_widget_instances : array(
927
+ '_multiwidget' => 1,
928
+ );
929
+ $single_widget_instances[] = (array) $widget;
930
+ end( $single_widget_instances );
931
+ $new_instance_id_number = key( $single_widget_instances );
932
+ if ( '0' === strval( $new_instance_id_number ) ) {
933
+ $new_instance_id_number = 1;
934
+ $single_widget_instances[ $new_instance_id_number ] = $single_widget_instances[0];
935
+ unset( $single_widget_instances[0] );
936
+ }
937
+ if ( isset( $single_widget_instances['_multiwidget'] ) ) {
938
+ $multiwidget = $single_widget_instances['_multiwidget'];
939
+ unset( $single_widget_instances['_multiwidget'] );
940
+ $single_widget_instances['_multiwidget'] = $multiwidget;
941
+ }
942
+ update_option( 'widget_' . $id_base, $single_widget_instances );
943
+ $sidebars_widgets = get_option( 'sidebars_widgets' );
944
+ $new_instance_id = $id_base . '-' . $new_instance_id_number;
945
+ $sidebars_widgets[ $use_sidebar_id ][] = $new_instance_id;
946
+ update_option( 'sidebars_widgets', $sidebars_widgets );
947
+ if ( $sidebar_available ) {
948
+ $widget_message_type = 'success';
949
+ $widget_message = 'Imported';
950
+ } else {
951
+ $widget_message_type = 'warning';
952
+ $widget_message = 'Imported to Inactive';
953
+ }
954
+ }
955
+ $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['name'] = isset( $available_widgets[ $id_base ]['name'] ) ? $available_widgets[ $id_base ]['name'] : $id_base;
956
+ $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['title'] = ! empty( $widget->title ) ? $widget->title : '';
957
+ $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message_type'] = $widget_message_type;
958
+ $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message'] = $widget_message;
959
+ } // End foreach().
960
+ } // End foreach().
961
+
962
+ return true;
963
+ }
964
+
965
+ /**
966
+ * Import Widgets.
967
+ *
968
+ * @throws Exception If required file is missing.
969
+ * @throws Exception If can not import Widgets.
970
+ *
971
+ * @since 1.0
972
+ */
973
+ private function import_widgets() {
974
+ try {
975
+ $file_name = 'widget_data.wie';
976
+
977
+ if ( ! file_exists( $this->_get_import_package_dir_path( $file_name ) ) ) {
978
+ throw new Exception(
979
+ sprintf( __( 'A required file (%s) is missing in the selected zip file.', 'jupiterx-core' ), $file_name )
980
+ );
981
+ }
982
+
983
+ $import_data = JupiterX_Control_Panel_Helpers::getFileBody(
984
+ $this->_get_import_package_dir_url( $file_name ),
985
+ $this->_get_import_package_dir_path( $file_name )
986
+ );
987
+
988
+ $data = json_decode( $import_data );
989
+
990
+ if ( ! $this->import_widget_data( $data ) ) {
991
+ throw new Exception( __( 'A problem occurred in importing Widgets.', 'jupiterx-core' ) );
992
+ }
993
+
994
+ return wp_send_json_success(
995
+ array(
996
+ 'step' => 'Widgets',
997
+ )
998
+ );
999
+
1000
+ } catch ( Exception $e ) {
1001
+ return wp_send_json_error( $e->getMessage() );
1002
+ }
1003
+ }
1004
+
1005
+ /**
1006
+ * Import Settings.
1007
+ *
1008
+ * @throws Exception If required file is missing.
1009
+ * @throws Exception If can not import Settings.
1010
+ *
1011
+ * @since 1.0
1012
+ */
1013
+ private function import_settings() {
1014
+ try {
1015
+
1016
+ require_once ABSPATH . 'wp-includes/class-wp-customize-manager.php';
1017
+ $wp_customize = new WP_Customize_Manager();
1018
+
1019
+ $file_name = 'settings.json';
1020
+
1021
+ if ( ! file_exists( $this->_get_import_package_dir_path( $file_name ) ) ) {
1022
+ throw new Exception(
1023
+ sprintf( __( '%s is missing in the selected zip file.', 'jupiterx-core' ), $file_name )
1024
+ );
1025
+ }
1026
+
1027
+ $import_data = JupiterX_Control_Panel_Helpers::getFileBody(
1028
+ $this->_get_import_package_dir_url( $file_name ),
1029
+ $this->_get_import_package_dir_path( $file_name )
1030
+ );
1031
+
1032
+ $data = json_decode( $import_data, true );
1033
+
1034
+ // Data checks.
1035
+ if ( 'array' != gettype( $data ) ) {
1036
+ throw new Exception(
1037
+ sprintf( __( 'Error importing settings! Please check that you uploaded (%s) a Settings export file.', 'jupiterx-core' ), $file_name )
1038
+ );
1039
+ }
1040
+ if ( ! isset( $data['template'] ) || ! isset( $data['mods'] ) ) {
1041
+ throw new Exception(
1042
+ sprintf( __( 'Error importing settings! template Please check that you uploaded (%s) a Settings export file.', 'jupiterx-core' ), $file_name )
1043
+ );
1044
+ }
1045
+
1046
+ $data['mods'] = self::_import_images( $data['mods'] );
1047
+
1048
+ // Import custom options.
1049
+ // if ( isset( $data['options'] ) ) {
1050
+
1051
+ // foreach ( $data['options'] as $option_key => $option_value ) {
1052
+
1053
+ // $option = new JupiterX_Customizer_Option(
1054
+ // $wp_customize, $option_key, array(
1055
+ // 'default' => '',
1056
+ // 'type' => 'option',
1057
+ // 'capability' => 'edit_theme_options',
1058
+ // )
1059
+ // );
1060
+
1061
+ // $option->import( $option_value );
1062
+ // }
1063
+ // }
1064
+
1065
+ // If wp_css is set then import it.
1066
+ if ( function_exists( 'wp_update_custom_css_post' ) && isset( $data['wp_css'] ) && '' !== $data['wp_css'] ) {
1067
+ wp_update_custom_css_post( $data['wp_css'] );
1068
+ }
1069
+
1070
+ // Loop through the mods.
1071
+ foreach ( $data['mods'] as $key => $val ) {
1072
+
1073
+ // Save the mod.
1074
+ set_theme_mod( $key, $val );
1075
+ }
1076
+
1077
+ return wp_send_json_success(
1078
+ array(
1079
+ 'step' => 'Settings',
1080
+ )
1081
+ );
1082
+
1083
+ } catch ( Exception $e ) {
1084
+ return wp_send_json_error( $e->getMessage() );
1085
+ }
1086
+ }
1087
+
1088
+ /**
1089
+ * End Import process by deleting Import directory and clearing theme cache.
1090
+ *
1091
+ * @since 1.0
1092
+ */
1093
+ private function import_end() {
1094
+ try {
1095
+
1096
+ $this->jupiterx_filesystem->rmdir( $this->folder['import_dir'], true );
1097
+
1098
+ return wp_send_json_success(
1099
+ array(
1100
+ 'step' => 'End',
1101
+ )
1102
+ );
1103
+
1104
+ } catch ( Exception $e ) {
1105
+ return wp_send_json_error( $e->getMessage() );
1106
+ }
1107
+ }
1108
+
1109
+ /**
1110
+ * Discard Export/Import process by deleting the the directory.
1111
+ *
1112
+ * @since 1.0
1113
+ * @param string $dir The Export/Import directory.
1114
+ */
1115
+ private function discard( $dir ) {
1116
+ try {
1117
+ $this->jupiterx_filesystem->rmdir( $dir, true );
1118
+
1119
+ return wp_send_json_success(
1120
+ array(
1121
+ 'step' => 'Discard',
1122
+ )
1123
+ );
1124
+
1125
+ } catch ( Exception $e ) {
1126
+ return wp_send_json_error( $e->getMessage() );
1127
+ }
1128
+ }
1129
+
1130
+ /**
1131
+ * Get import package directory name.
1132
+ *
1133
+ * @since 1.0
1134
+ */
1135
+ private function _get_import_package_dir_name() {
1136
+ return end( @scandir( $this->folder['import_dir'] ) );
1137
+ }
1138
+
1139
+ /**
1140
+ * Get import package directory full path.
1141
+ *
1142
+ * @param array $$file_name The file name.
1143
+ *
1144
+ * @since 1.0
1145
+ */
1146
+ private function _get_import_package_dir_path( $file_name ) {
1147
+ return $this->folder['import_dir'] . '/' . $this->_get_import_package_dir_name() . '/' . $file_name;
1148
+ }
1149
+
1150
+ /**
1151
+ * Get import package directory full url.
1152
+ *
1153
+ * @param array $file_name The file name.
1154
+ *
1155
+ * @since 1.0
1156
+ */
1157
+ private function _get_import_package_dir_url( $file_name ) {
1158
+ return $this->folder['import_url'] . '/' . $this->_get_import_package_dir_name() . '/' . $file_name;
1159
+ }
1160
+
1161
+ /**
1162
+ * Imports images for settings saved as mods.
1163
+ *
1164
+ * @since 1.0
1165
+ * @access private
1166
+ * @param array $mods An array of customizer mods.
1167
+ * @return array The mods array with any new import data.
1168
+ */
1169
+ static public function _import_images( $mods ) {
1170
+ foreach ( $mods as $key => $val ) {
1171
+
1172
+ if ( self::_is_image_url( $val ) ) {
1173
+
1174
+ $data = self::_sideload_image( $val );
1175
+
1176
+ if ( ! is_wp_error( $data ) ) {
1177
+
1178
+ $mods[ $key ] = $data->url;
1179
+
1180
+ // Handle header image controls.
1181
+ if ( isset( $mods[ $key . '_data' ] ) ) {
1182
+ $mods[ $key . '_data' ] = $data;
1183
+ update_post_meta( $data->attachment_id, '_wp_attachment_is_custom_header', get_stylesheet() );
1184
+ }
1185
+ }
1186
+ }
1187
+ }
1188
+
1189
+ return $mods;
1190
+ }
1191
+
1192
+ /**
1193
+ * Taken from the core media_sideload_image function and
1194
+ * modified to return an array of data instead of html.
1195
+ *
1196
+ * @since 1.0
1197
+ * @access private
1198
+ * @param string $file The image file path.
1199
+ * @return array An array of image data.
1200
+ */
1201
+ static private function _sideload_image( $file ) {
1202
+ $data = new stdClass();
1203
+
1204
+ if ( ! function_exists( 'media_handle_sideload' ) ) {
1205
+ require_once( ABSPATH . 'wp-admin/includes/media.php' );
1206
+ require_once( ABSPATH . 'wp-admin/includes/file.php' );
1207
+ require_once( ABSPATH . 'wp-admin/includes/image.php' );
1208
+ }
1209
+ if ( ! empty( $file ) ) {
1210
+
1211
+ // Set variables for storage, fix file filename for query strings.
1212
+ preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches );
1213
+ $file_array = array();
1214
+ $file_array['name'] = basename( $matches[0] );
1215
+
1216
+ // Download file to temp location.
1217
+ $file_array['tmp_name'] = download_url( $file );
1218
+
1219
+ // If error storing temporarily, return the error.
1220
+ if ( is_wp_error( $file_array['tmp_name'] ) ) {
1221
+ return $file_array['tmp_name'];
1222
+ }
1223
+
1224
+ // Do the validation and storage stuff.
1225
+ $id = media_handle_sideload( $file_array, 0 );
1226
+
1227
+ // If error storing permanently, unlink.
1228
+ if ( is_wp_error( $id ) ) {
1229
+ @unlink( $file_array['tmp_name'] );
1230
+ return $id;
1231
+ }
1232
+
1233
+ // Build the object to return.
1234
+ $meta = wp_get_attachment_metadata( $id );
1235
+ $data->attachment_id = $id;
1236
+ $data->url = wp_get_attachment_url( $id );
1237
+ $data->thumbnail_url = wp_get_attachment_thumb_url( $id );
1238
+ $data->height = $meta['height'];
1239
+ $data->width = $meta['width'];
1240
+ }
1241
+
1242
+ return $data;
1243
+ }
1244
+
1245
+ /**
1246
+ * Checks to see whether a string is an image url or not.
1247
+ *
1248
+ * @since 1.0
1249
+ * @access private
1250
+ * @param string $string The string to check.
1251
+ * @return bool Whether the string is an image url or not.
1252
+ */
1253
+ static private function _is_image_url( $string = '' ) {
1254
+ if ( is_string( $string ) ) {
1255
+
1256
+ if ( preg_match( '/\.(jpg|jpeg|png|gif)/i', $string ) ) {
1257
+ return true;
1258
+ }
1259
+ }
1260
+
1261
+ return false;
1262
+ }
1263
+
1264
+ /**
1265
+ * Get supported plugins.
1266
+ *
1267
+ * @since 1.11.0
1268
+ *
1269
+ * @return array Supported plugins.
1270
+ */
1271
+ private function get_supported_plugins() {
1272
+ $active_plugins = get_option( 'active_plugins' );
1273
+
1274
+ if ( is_multisite() ) {
1275
+ $active_plugins = array_merge( $active_plugins, get_site_option( 'active_sitewide_plugins' ) );
1276
+ }
1277
+
1278
+ $plugins = [];
1279
+
1280
+ foreach ( $active_plugins as $plugin ) {
1281
+ $plugins[] = substr( $plugin, 0, strrpos( $plugin, '/' ) );
1282
+ }
1283
+
1284
+ $supported_plugins = array_intersect( $plugins, $this->supported_plugins );
1285
+
1286
+ return $supported_plugins;
1287
+ }
1288
+
1289
+ /**
1290
+ * Get supported tables to export.
1291
+ *
1292
+ * @since 1.11.0
1293
+ *
1294
+ * @return array Supported tables.
1295
+ */
1296
+ private function get_supported_tables() {
1297
+ return [
1298
+ 'jet-engine' => [ 'jet_post_types', 'jet_taxonomies' ],
1299
+ ];
1300
+ }
1301
+ }
1302
+
1303
+ new JupiterX_Control_Panel_Export_Import();
1304
+ }
includes/control-panel/includes/class-install-plugins.php CHANGED
@@ -298,7 +298,7 @@ class JupiterX_Control_Panel_Install_Plugins {
298
  $threshold[] = 'jet-plugins';
299
  }
300
 
301
- return implode( $threshold, ',' );
302
  }
303
 
304
  /**
298
  $threshold[] = 'jet-plugins';
299
  }
300
 
301
+ return implode( ',', $threshold );
302
  }
303
 
304
  /**
includes/control-panel/includes/class-install-template.php CHANGED
@@ -1,1875 +1,1875 @@
1
- <?php
2
- /**
3
- * This class is responsible manage all jupiter templates
4
- * it will communicate with artbees API and get list of templates , install them or remove them.
5
- *
6
- * @author Artbees <info@artbees.net>
7
- * @copyright Artbees LTD (c)
8
- *
9
- * @link https://artbees.net
10
- * @since 1.0
11
- * @version 1.0
12
- */
13
- if ( ! class_exists( 'JupiterX_Control_Panel_Install_Template' ) ) {
14
- class JupiterX_Control_Panel_Install_Template {
15
-
16
-
17
- private $layer_slider_slug = 'layerslider';
18
-
19
- private $theme_name;
20
-
21
- public function setThemeName( $theme_name ) {
22
- $this->theme_name = $theme_name;
23
- }
24
-
25
- public function getThemeName() {
26
- return $this->theme_name;
27
- }
28
-
29
- private $api_url;
30
-
31
- public function setApiURL( $api_url ) {
32
- $this->api_url = $api_url;
33
- }
34
-
35
- public function getApiURL() {
36
- return $this->api_url;
37
- }
38
-
39
- private $template_id;
40
-
41
- public function setTemplateID( $template_id ) {
42
- $this->template_id = $template_id;
43
- }
44
-
45
- public function getTemplateID() {
46
- return intval( $this->template_id );
47
- }
48
-
49
- private $template_name;
50
-
51
- public function setTemplateName( $template_name ) {
52
- $this->template_name = $template_name;
53
- }
54
-
55
- public function getTemplateName() {
56
- return strtolower( $this->template_name );
57
- }
58
-
59
- private $template_file_name;
60
-
61
- public function setTemplateFileName( $template_file_name ) {
62
- $this->template_file_name = $template_file_name;
63
- }
64
-
65
- public function getTemplateFileName() {
66
- return $this->template_file_name;
67
- }
68
-
69
- private $template_remote_address;
70
-
71
- public function setTemplateRemoteAddress( $template_remote_address ) {
72
- $this->template_remote_address = $template_remote_address;
73
- }
74
-
75
- public function getTemplateRemoteAddress() {
76
- return $this->template_remote_address;
77
- }
78
-
79
- private $template_content_file_name;
80
-
81
- public function setTemplateContentFileName( $template_content_file_name ) {
82
- $this->template_content_file_name = $template_content_file_name;
83
- }
84
-
85
- public function getTemplateContentFileName() {
86
- return $this->template_content_file_name;
87
- }
88
-
89
- private $widget_file_name;
90
-
91
- public function setWidgetFileName( $widget_file_name ) {
92
- $this->widget_file_name = $widget_file_name;
93
- }
94
-
95
- public function getWidgetFileName() {
96
- return $this->widget_file_name;
97
- }
98
-
99
- /**
100
- * Settings filename.
101
- *
102
- * @since 1.0
103
- * @var string
104
- */
105
- private $settings_file_name;
106
-
107
- /**
108
- * Set Settings filename.
109
- *
110
- * @since 1.0
111
- * @param string $settings_file_name Settings filename.
112
- */
113
- public function set_settings_file_name( $settings_file_name ) {
114
- $this->settings_file_name = $settings_file_name;
115
- }
116
-
117
- /**
118
- * Get Settings filename.
119
- *
120
- * @since 1.0
121
- * @return string Settings filename.
122
- */
123
- public function get_settings_file_name() {
124
- return $this->settings_file_name;
125
- }
126
-
127
- private $upload_dir;
128
-
129
- public function setUploadDir( $upload_dir ) {
130
- $this->upload_dir = $upload_dir;
131
- }
132
-
133
- public function getUploadDir() {
134
- return $this->upload_dir;
135
- }
136
-
137
- private $base_path;
138
-
139
- public function setBasePath( $base_path ) {
140
- $this->base_path = $base_path;
141
- }
142
-
143
- public function getBasePath() {
144
- return $this->base_path;
145
- }
146
-
147
- private $base_url;
148
-
149
- public function setBaseUrl( $base_url ) {
150
- $this->base_url = $base_url;
151
- }
152
-
153
- public function getBaseUrl() {
154
- return $this->base_url;
155
- }
156
-
157
- private $message;
158
-
159
- public function setMessage( $message ) {
160
- $this->message = $message;
161
- }
162
-
163
- public function getMessage() {
164
- return $this->message;
165
- }
166
-
167
- /**
168
- * Construct.
169
- *
170
- * @param bool $system_text_env if you want to create an instance of this method for phpunit it should be true
171
- */
172
- public function __construct() {
173
-
174
- add_filter( 'jupiterx_control_panel_pane_install_templates', [ $this, 'view' ] );
175
-
176
- // Get TGMPA.
177
- if ( class_exists( 'TGM_Plugin_Activation' ) ) {
178
- $this->tgmpa = isset( $GLOBALS['tgmpa'] ) ? $GLOBALS['tgmpa'] : TGM_Plugin_Activation::get_instance();
179
- }
180
-
181
- $menu_items_access = get_site_option( 'menu_items' );
182
-
183
- @set_time_limit( 0 );
184
-
185
- $this->setThemeName( 'jupiterx' );
186
-
187
- $this->setApiURL( 'https://artbees.net/api/v2/' );
188
-
189
- $this->setUploadDir( wp_upload_dir() );
190
- $this->setBasePath( $this->getUploadDir()['basedir'] . '/jupiterx_templates/' );
191
- $this->setBaseUrl( $this->getUploadDir()['baseurl'] . '/jupiterx_templates/' );
192
-
193
- $this->setTemplateContentFileName( 'theme_content.xml' );
194
- $this->setWidgetFileName( 'widget_data.wie' );
195
- $this->set_settings_file_name( 'settings.json' );
196
- global $wpdb;
197
-
198
- if ( ! defined( 'JupiterX_LOAD_IMPORTERS' ) ) {
199
- define( 'JupiterX_LOAD_IMPORTERS', true );
200
- }
201
-
202
- add_filter( 'tgmpa_load', '__return_true', 10, 1 );
203
-
204
- add_action( 'wp_ajax_abb_template_lazy_load', array( &$this, 'loadTemplatesFromApi' ) );
205
- add_action( 'wp_ajax_abb_install_template_procedure', array( &$this, 'install_template_procedure' ) );
206
-
207
- // Action only for importing theme content with Server-Sent Event.
208
- add_action( 'wp_ajax_abb_install_template_sse', array( &$this, 'import_theme_content_sse' ) );
209
-
210
- add_action( 'wp_ajax_abb_get_templates_categories', array( &$this, 'getTemplateCategoryListFromApi' ) );
211
- add_action( 'wp_ajax_abb_restore_latest_db', array( &$this, 'restoreLatestDB' ) );
212
- add_action( 'wp_ajax_abb_is_restore_db', array( &$this, 'isRestoreDB' ) );
213
-
214
- add_action( 'wp_ajax_abb_uninstall_template', array( &$this, 'uninstallTemplate' ) );
215
- add_action( 'wp_ajax_abb_get_template_psd_link', array( &$this, 'get_template_psd_link' ) );
216
- }
217
-
218
- /**
219
- * Settings HTML path.
220
- *
221
- * @since 1.4.0
222
- *
223
- * @return string
224
- */
225
- public function view() {
226
- return jupiterx_core()->plugin_dir() . 'includes/control-panel/views/install-templates.php';
227
- }
228
-
229
- public function install_template_procedure() {
230
- $template_id = ( isset( $_POST['template_id'] ) ? intval( $_POST['template_id'] ) : 0 );
231
- $this->setTemplateID( $template_id );
232
- $template_name = ( isset( $_POST['template_name'] ) ? sanitize_text_field( $_POST['template_name'] ) : null );
233
- $import_media = ( isset( $_POST['import_media'] ) ? sanitize_text_field( $_POST['import_media'] ) : false );
234
- $type = ( isset( $_POST['type'] ) ? sanitize_text_field( $_POST['type'] ) : null );
235
- $partial_import = ( isset( $_POST['partial_import'] ) ? filter_var( $_POST['partial_import'], FILTER_VALIDATE_BOOLEAN ) : false );
236
-
237
- if ( is_null( $template_name ) || is_null( $type ) ) {
238
- $this->message( 'System problem at installing , please contact support', false );
239
- return false;
240
- }
241
-
242
- switch ( $type ) {
243
- case 'preparation':
244
- $this->preparation( $template_name );
245
- break;
246
- case 'backup_db':
247
- $this->backupDB();
248
- break;
249
- case 'backup_media_records':
250
- $this->backup_media_records();
251
- break;
252
- case 'restore_media_records':
253
- $this->restore_media_records();
254
- break;
255
- case 'reset_db':
256
- $this->resetDB();
257
- break;
258
- case 'upload':
259
- $this->uploadTemplateToServer( $template_name );
260
- break;
261
- case 'unzip':
262
- $this->unzipTemplateInServer( $template_name );
263
- break;
264
- case 'validate':
265
- $this->validateTemplateFiles( $template_name );
266
- break;
267
- case 'install_plugins':
268
- $this->installRequiredPlugins( $template_name );
269
- break;
270
- case 'activate_plugins':
271
- $this->activateRequiredPlugins( $template_name );
272
- break;
273
- case 'custom_tables':
274
- $this->import_custom_tables( $template_name );
275
- break;
276
- case 'theme_content':
277
- $this->importThemeContent( $template_name, $import_media, $partial_import );
278
- break;
279
- case 'setup_pages':
280
- $this->setUpPages( $template_name );
281
- break;
282
- case 'plugins_content':
283
- $this->import_plugins_content( $template_name );
284
- break;
285
- case 'settings':
286
- $this->import_settings( $template_name );
287
- break;
288
- case 'menu_locations':
289
- $this->importMenuLocations( $template_name );
290
- break;
291
- case 'theme_widget':
292
- $this->importThemeWidgets( $template_name );
293
- break;
294
- case 'finalize':
295
- $this->finalizeImporting( $template_name, $partial_import );
296
- break;
297
- }
298
- }
299
- public function reinitializeData( $template_name ) {
300
- try {
301
- if ( empty( $template_name ) ) {
302
- throw new Exception( 'Choose template first' );
303
- }
304
- $this->setTemplateName( $template_name );
305
- if (
306
- file_exists( $this->getAssetsAddress( 'template_content_path', $this->getTemplateName() ) ) == false ||
307
- file_exists( $this->getAssetsAddress( 'widget_path', $this->getTemplateName() ) ) == false ||
308
- file_exists( $this->getAssetsAddress( 'settings_path', $this->getTemplateName() ) ) == false
309
- ) {
310
- throw new Exception( "Some template assets are missing Template Name : $template_name, Contact support." );
311
- } else {
312
- return true;
313
- }
314
- } catch ( Exception $e ) {
315
- $this->message( $e->getMessage(), false );
316
- return false;
317
- }
318
- }
319
-
320
- /**
321
- * Reinitilize Template file is exist or not for SEE request.
322
- *
323
- * @since 1.0
324
- *
325
- * @throws Exception If template name empty.
326
- * @throws Exception If template file is not exist.
327
- *
328
- * @param string $template_name The template name will be imported.
329
- * @param string $template_id The template ID will be imported.
330
- * @return boolean File status.
331
- */
332
- public function reinitialize_data_sse( $template_name, $template_id ) {
333
- try {
334
-
335
- // Check template name and ID.
336
- if ( empty( $template_name ) || empty( $template_id ) ) {
337
- throw new Exception( 'Choose template first!' );
338
- }
339
-
340
- $this->setTemplateName( $template_name );
341
- $this->setTemplateID( $template_id );
342
-
343
- // Check template file exist or not.
344
- if ( false === file_exists( $this->getAssetsAddress( 'template_content_path', $this->getTemplateName() ) ) ) {
345
- throw new Exception( 'Template content does not exist - Contact support.' );
346
- }
347
-
348
- return true;
349
- } catch ( Exception $e ) {
350
- $this->message_sse( $e->getMessage(), true );
351
- exit;
352
- }
353
- }
354
-
355
- /**
356
- * Method that is resposible to pass plugin list to UI base on lazy load condition.
357
- *
358
- * @param str $_POST[from] from number.
359
- * @param str $_POST[count] how many.
360
- *
361
- * @return bool will return boolean status of action , all message is setted to $this->message()
362
- */
363
- public function loadTemplatesFromApi() {
364
- try {
365
- $from = ( isset( $_POST['from'] ) ? intval( $_POST['from'] ) : null );
366
- $count = ( isset( $_POST['count'] ) ? intval( $_POST['count'] ) : null );
367
- $template_id = ( isset( $_POST['template_id'] ) ? intval( $_POST['template_id'] ) : 0 );
368
- $template_name = ( isset( $_POST['template_name'] ) ? sanitize_text_field( $_POST['template_name'] ) : null );
369
- $template_category = ( isset( $_POST['template_category'] ) ? sanitize_text_field( $_POST['template_category'] ) : null );
370
-
371
- if ( is_null( $from ) || is_null( $count ) ) {
372
- throw new Exception( 'System problem , please contact support', 1001 );
373
- return false;
374
- }
375
- $getTemplateListArgs = [
376
- 'pagination_start' => $from,
377
- 'pagination_count' => $count,
378
- 'template_category' => $template_category,
379
- 'template_name' => $template_name,
380
- 'template_id' => $template_id,
381
- ];
382
- $list_of_templates = $this->getTemplateListFromApi( $getTemplateListArgs );
383
-
384
- if ( ! is_array( $list_of_templates ) ) {
385
- throw new Exception( 'Template list is not what we expected' );
386
- }
387
-
388
- if ( jupiterx_is_pro() ) {
389
- foreach ( $list_of_templates as $index => $template ) {
390
- $list_of_templates[ $index ]->free_template = '1';
391
- }
392
- }
393
-
394
- $db_manager = new JupiterX_Control_Panel_Database_Manager();
395
- $backups = $db_manager->is_restore_db();
396
- $this->message(
397
- 'Successfull', true, array(
398
- 'templates' => $list_of_templates,
399
- 'backups' => $backups,
400
- )
401
- );
402
- return true;
403
-
404
- } catch ( Exception $e ) {
405
- $this->message( $e->getMessage(), false );
406
- return false;
407
- }
408
- }
409
- public function preparation( $template_name ) {
410
- try {
411
- $this->message( 'All is ready.', true );
412
- return true;
413
- } catch ( Exception $e ) {
414
- $this->message( $e->getMessage(), false );
415
- return false;
416
- }
417
- }
418
- public function backupDB() {
419
- try {
420
- $db_manager = new JupiterX_Control_Panel_Database_Manager();
421
- $dm_response = $db_manager->backup_db();
422
- if ( false == $dm_response ) {
423
- throw new Exception( $db_manager->get_error_message() );
424
- }
425
-
426
- $this->message( 'Backup created.', true );
427
- return true;
428
-
429
- } catch ( Exception $e ) {
430
- $this->message( $e->getMessage(), false );
431
- return false;
432
- }
433
- }
434
- public function backup_media_records() {
435
- try {
436
- $db_manager = new JupiterX_Control_Panel_Database_Manager();
437
-
438
- $dm_response = $db_manager->backup_media_records();
439
-
440
- if ( false == $dm_response ) {
441
- throw new Exception( $db_manager->get_error_message() );
442
- }
443
- $this->message( 'Media records backup created.', true );
444
- return true;
445
-
446
- } catch ( Exception $e ) {
447
- $this->message( $e->getMessage(), false );
448
- return false;
449
- }
450
- }
451
- public function restore_media_records() {
452
- try {
453
- $db_manager = new JupiterX_Control_Panel_Database_Manager();
454
-
455
- $dm_response = $db_manager->restore_media_records();
456
-
457
- if ( false == $dm_response ) {
458
- throw new Exception( $db_manager->get_error_message() );
459
- }
460
- $this->message( 'Media records restored successfully', true );
461
- return true;
462
-
463
- } catch ( Exception $e ) {
464
- $this->message( $e->getMessage(), false );
465
- return false;
466
- }
467
- }
468
- public function isRestoreDB() {
469
- try {
470
- $db_manager = new JupiterX_Control_Panel_Database_Manager();
471
- $result = $db_manager->is_restore_db();
472
- if ( is_array( $result ) ) {
473
- $this->message( 'Successfull', true, $result );
474
- return true;
475
- } else {
476
- throw new Exception( 'Result is not what we expected' );
477
- }
478
- } catch ( Exception $e ) {
479
- $this->message( $e->getMessage(), false );
480
- return false;
481
- }
482
- }
483
- public function restoreLatestDB() {
484
- try {
485
- $db_manager = new JupiterX_Control_Panel_Database_Manager();
486
- $return = $db_manager->restore_latest_db();
487
- if ( false == $return ) {
488
- throw new Exception( $db_manager->get_error_message() );
489
- }
490
- JupiterX_Control_Panel_Helpers::prevent_cache_plugins();
491
- $this->message( 'Restore completed!', true );
492
- return true;
493
- } catch ( Exception $e ) {
494
- $this->message( $e->getMessage(), false );
495
- return false;
496
- }
497
- }
498
- public function resetDB() {
499
- try {
500
- $tables = array(
501
- 'comments',
502
- 'commentmeta',
503
- 'links',
504
- 'postmeta',
505
- 'posts',
506
- 'term_relationships',
507
- 'termmeta',
508
- 'terms',
509
- 'term_taxonomy',
510
- );
511
-
512
- include_once ABSPATH . 'wp-admin/includes/plugin.php';
513
- if ( jupiterx_is_callable( 'SitePress' ) ) {
514
- $tables[] = 'icl_translations';
515
- }
516
-
517
- $this->resetWordpressDatabase( $tables, array(), false );
518
- $this->message( 'Database reseted', true );
519
-
520
- return true;
521
- } catch ( Exception $e ) {
522
- $this->message( $e->getMessage(), false );
523
-
524
- return false;
525
- }
526
- }
527
- public function uploadTemplateToServer( $template_name ) {
528
- try {
529
- $this->setTemplateName( $template_name );
530
- $getTemplateName = $this->getTemplateName();
531
- if ( empty( $getTemplateName ) ) {
532
- throw new Exception( 'Choose one template first' );
533
- }
534
- $url = $this->getTemplateDownloadLink( $this->getTemplateName(), 'download' );
535
- $template_file_name = $this->getTemplateDownloadLink( $this->getTemplateName(), 'filename' );
536
- $this->setTemplateRemoteAddress( $url );
537
- if ( filter_var( $url, FILTER_VALIDATE_URL ) === false ) {
538
- throw new Exception( 'Template source URL is not validate' );
539
- }
540
- JupiterX_Control_Panel_Helpers::upload_from_url( $this->getTemplateRemoteAddress(), $template_file_name, $this->getBasePath() );
541
- $this->message( 'Uploaded to server', true );
542
- return true;
543
- } catch ( Exception $e ) {
544
- $this->message( $e->getMessage(), false );
545
- return false;
546
- }
547
- }
548
- public function unzipTemplateInServer( $template_name ) {
549
- try {
550
- $this->setTemplateName( $template_name );
551
- $getTemplateName = $this->getTemplateName();
552
- if ( empty( $getTemplateName ) ) {
553
- throw new Exception( 'Choose one template first' );
554
- }
555
-
556
- $response = $this->getTemplateDownloadLink( $this->getTemplateName(), 'filename' );
557
-
558
- $this->setTemplateFileName( $response );
559
-
560
- $jupiterx_filesystem = new JupiterX_Filesystem(
561
- array(
562
- 'context' => $this->getBasePath(),
563
- )
564
- );
565
-
566
- if ( $jupiterx_filesystem->get_error_code() ) {
567
- throw new Exception( $jupiterx_filesystem->get_error_message() );
568
- return false;
569
- }
570
-
571
- if ( ! $jupiterx_filesystem->exists( $this->getBasePath() . $this->getTemplateName() ) ) {
572
- JupiterX_Control_Panel_Helpers::un_zip( $this->getBasePath() . $this->getTemplateFileName(), $this->getBasePath() );
573
- } else {
574
- if ( $jupiterx_filesystem->rmdir( $this->getBasePath() . $this->getTemplateName(), true ) ) {
575
- JupiterX_Control_Panel_Helpers::un_zip( $this->getBasePath() . $this->getTemplateFileName(), $this->getBasePath() );
576
- }
577
- }
578
-
579
- $jupiterx_filesystem->delete( $this->getBasePath() . $this->getTemplateFileName() );
580
-
581
- $this->message( 'Completed', true );
582
-
583
- return true;
584
- } catch ( Exception $e ) {
585
- $this->message( $e->getMessage(), false );
586
-
587
- return false;
588
- }
589
- }
590
- public function validateTemplateFiles( $template_name ) {
591
- try {
592
- if ( empty( $template_name ) ) {
593
- throw new Exception( 'Choose template first' );
594
- }
595
-
596
- $jupiterx_filesystem = new JupiterX_Filesystem(
597
- array(
598
- 'context' => $this->getBasePath(),
599
- )
600
- );
601
-
602
- if ( $jupiterx_filesystem->get_error_code() ) {
603
- throw new Exception( $jupiterx_filesystem->get_error_message() );
604
- return false;
605
- }
606
-
607
- $this->setTemplateName( $template_name );
608
- if (
609
- $jupiterx_filesystem->exists( $this->getAssetsAddress( 'template_content_path', $this->getTemplateName() ) ) == false ||
610
- $jupiterx_filesystem->exists( $this->getAssetsAddress( 'widget_path', $this->getTemplateName() ) ) == false ||
611
- $jupiterx_filesystem->exists( $this->getAssetsAddress( 'settings_path', $this->getTemplateName() ) ) == false
612
- ) {
613
- throw new Exception( "Some template assets are missing Template Name : $template_name, Contact support." );
614
- } else {
615
- $this->message( 'Completed', true );
616
- return true;
617
- }
618
- } catch ( Exception $e ) {
619
- $this->message( $e->getMessage(), false );
620
-
621
- return false;
622
- }
623
- }
624
-
625
- public function installRequiredPlugins( $template_name ) {
626
-
627
- $plugin_install_access = is_multisite() ? is_super_admin() : ( current_user_can( 'install_themes' ) && current_user_can( 'activate_plugins' ) );
628
- $single_site_message = 'You are not allowed to install a new plugin or template because your user role does not have required permissions.';
629
- $multi_site_message = 'Template installation is only allowed for user with Super Admin role. Please contact your website\'s administrator. <a target="_blank" href="https://themes.artbees.net/docs/installing-a-template/">Learn More</a>';
630
-
631
- if ( ! $plugin_install_access ) {
632
- $message = $single_site_message;
633
- if ( is_multisite() ) {
634
- $message = $multi_site_message;
635
- }
636
- $this->message( $message, false );
637
- }
638
-
639
- $template_settings = $this->getSettingsData( $template_name );
640
- $actions = [];
641
- $plugins_to_install = [];
642
- $tgmpa_url = $this->tgmpa->get_tgmpa_url();
643
- $template_plugins = $template_settings['options']['jupiterx_support_plugins'];
644
-
645
- $template_plugins = array_diff( $template_plugins, ['jupiterx-pro', 'advanced-custom-fields-pro'] );
646
-
647
- $template_plugins[] = 'advanced-custom-fields';
648
-
649
- foreach ( $template_plugins as $slug ) {
650
-
651
- if ( ! $this->tgmpa->is_plugin_active( $slug ) || false !== $this->tgmpa->does_plugin_have_update( $slug ) ) {
652
- if ( ! $this->tgmpa->is_plugin_installed( $slug ) ) {
653
- $plugins_to_install[] = $slug;
654
- }
655
- }
656
- }
657
-
658
- if ( ! empty( $plugins_to_install ) ) {
659
- $actions['install'] = [
660
- 'url' => $tgmpa_url,
661
- 'plugin' => $plugins_to_install,
662
- 'tgmpa-page' => $this->tgmpa->menu,
663
- 'plugin_status' => 'all',
664
- '_wpnonce' => wp_create_nonce( 'bulk-plugins' ),
665
- 'action' => 'tgmpa-bulk-install',
666
- 'action2' => - 1,
667
- 'message' => esc_html__( 'Installing', 'jupiterx-core' ),
668
- ];
669
- }
670
-
671
- $actions['url'] = $tgmpa_url;
672
- $actions['status'] = true;
673
-
674
- wp_send_json( $actions );
675
- }
676
-
677
- public function activateRequiredPlugins( $template_name ) {
678
-
679
- $template_settings = $this->getSettingsData( $template_name );
680
- $template_plugins = $template_settings['options']['jupiterx_support_plugins'];
681
-
682
- $template_plugins = array_diff( $template_plugins, [ 'jupiterx-pro', 'advanced-custom-fields-pro' ] );
683
- $template_plugins[] = 'advanced-custom-fields';
684
-
685
- foreach ( $template_plugins as $slug ) {
686
- if ( isset( $this->tgmpa->plugins[ $slug ] ) ) {
687
- activate_plugin( $this->tgmpa->plugins[ $slug ]['file_path'] );
688
- }
689
- }
690
-
691
- wp_send_json( [
692
- 'status' => true,
693
- ] );
694
- }
695
-
696
-
697
- /**
698
- * Import plugins content.
699
- *
700
- * @since 1.0.3
701
- */
702
- public function import_plugins_content( $template_name ) {
703
-
704
- try {
705
- $this->setTemplateName( $template_name );
706
- // Get template settings.
707
- $settings = $this->getSettingsData( $this->getTemplateName() );
708
-
709
- // Supported plugins list.
710
- $supported_plugins = $settings['options']['jupiterx_support_plugins'];
711
-
712
- // Run plugins importer.
713
- foreach ( $supported_plugins as $plugin ) {
714
- if ( is_callable( [ $this, "import_{$plugin}_content" ] ) ) {
715
- call_user_func( [ $this, "import_{$plugin}_content" ] );
716
- }
717
- }
718
-
719
- $this->message( esc_html__( 'Data of plugins have imported.', 'jupiterx-core' ), true );
720
-
721
- return true;
722
- } catch ( Exception $e ) {
723
- $this->message( $e->getMessage(), false );
724
- return false;
725
- }
726
-
727
- }
728
-
729
- /**
730
- * Import Revolution Slider content.
731
- *
732
- * @since 1.0.3
733
- */
734
- public function import_revslider_content() {
735
- if ( ! class_exists( 'RevSlider' ) ) {
736
- return;
737
- }
738
-
739
- $filesystem = new JupiterX_Filesystem( [
740
- 'context' => $this->getBasePath(),
741
- ] );
742
-
743
- $revslider_folder = $this->getBasePath() . sanitize_title( $this->getTemplateName() ) . '/revslider';
744
-
745
- // Check extracted template if `revslider` folder exists inside.
746
- if ( ! $filesystem->exists( $revslider_folder ) ) {
747
- return;
748
- }
749
-
750
- $revslider = new RevSlider();
751
-
752
- $sliders = glob( $revslider_folder . '/*.zip' );
753
-
754
- if ( empty( $sliders ) ) {
755
- return;
756
- }
757
-
758
- global $wpdb;
759
-
760
- $tables = [
761
- 'revslider_css',
762
- 'revslider_layer_animations',
763
- 'revslider_navigations',
764
- 'revslider_sliders',
765
- 'revslider_slides',
766
- 'revslider_static_slides',
767
- ];
768
-
769
- // Truncate tables.
770
- foreach ( $tables as $table ) {
771
- $wpdb->query( "TRUNCATE TABLE {$wpdb->prefix}{$table}" );
772
- }
773
-
774
- // Import sliders.
775
- foreach ( $sliders as $slide ) {
776
- /**
777
- * Start import slider.
778
- *
779
- * @param boolean Update animation.
780
- * @param boolean Deprecated static param.
781
- * @param mixed Slider file path.
782
- * @param boolean Template slide.
783
- * @param boolean Single slide.
784
- * @param boolean Update navigation.
785
- */
786
- $revslider->importSliderFromPost( true, true, $slide, false, false, true );
787
- }
788
- }
789
-
790
- /**
791
- * Import theme content via Server-Sent Events request.
792
- *
793
- *
794
- * @throws Exception If template data is empty.
795
- * @throws Exception If preliminary data is empty.
796
- */
797
- public function import_theme_content_sse() {
798
- try {
799
- /*
800
- * Filter data input from GET method. Eventsource doesn't allow us to use
801
- * POST method.
802
- */
803
- $template_name = '';
804
- if ( ! empty( $_GET['template_name'] ) ) {
805
- // WPCS: XSS ok, CSRF ok.
806
- $template_name = sanitize_text_field( $_GET['template_name'] );
807
- }
808
-
809
- $template_id = '';
810
- if ( ! empty( $_GET['template_id'] ) ) {
811
- // WPCS: XSS ok, CSRF ok.
812
- $template_id = sanitize_text_field( $_GET['template_id'] );
813
- }
814
-
815
- $fetch_attachments = 'false';
816
- if ( ! empty( $_GET['fetch_attachments'] ) ) {
817
- // WPCS: XSS ok, CSRF ok.
818
- $fetch_attachments = sanitize_text_field( $_GET['fetch_attachments'] );
819
- } elseif ( ! empty( $_GET['import_media'] ) ) {
820
- $fetch_attachments = sanitize_text_field( $_GET['import_media'] );
821
- }
822
-
823
- $partial_import = false;
824
- if ( ! empty( $_GET['partial_import'] ) ) {
825
- // phpcs:ignore
826
- $partial_import = filter_var( $_GET['partial_import'], FILTER_VALIDATE_BOOLEAN );
827
- }
828
-
829
- // Include wordpress-importer class.
830
- JupiterX_Control_Panel_Helpers::include_wordpress_importer();
831
- $this->reinitialize_data_sse( $template_name, $template_id );
832
-
833
- // Set importer options as an array.
834
- $options = array(
835
- 'fetch_attachments' => filter_var( $fetch_attachments, FILTER_VALIDATE_BOOLEAN ),
836
- 'default_author' => get_current_user_id(),
837
- );
838
-
839
- // Create new instance for Importer.
840
- $importer = new JupiterX_Importer( $options, $partial_import );
841
- $logger = new JupiterX_Importer_Logger_ServerSentEvents();
842
- $importer->set_logger( $logger );
843
-
844
- // Get preliminary information.
845
- $file = $this->getAssetsAddress( 'template_content_path', $this->getTemplateName() );
846
- $pre_data = $importer->get_preliminary_information( $file );
847
- if ( is_wp_error( $pre_data ) ) {
848
- throw new Exception( $pre_data->get_error_message() );
849
- }
850
-
851
- // @codingStandardsIgnoreStart
852
- // Turn off PHP output compression, allow us to print the log.
853
- $previous = error_reporting(error_reporting() ^ E_WARNING);
854
-
855
- // Configuration disabled for theme check plugin.
856
- // ini_set('output_buffering', 'off');
857
- // ini_set('zlib.output_compression', false);
858
-
859
- error_reporting($previous);
860
- // @codingStandardsIgnoreEnd
861
-
862
- if ( $GLOBALS['is_nginx'] ) {
863
- // Setting this header instructs Nginx to disable fastcgi_buffering
864
- // and disable gzip for this request.
865
- header( 'X-Accel-Buffering: no' );
866
- header( 'Content-Encoding: none' );
867
- }
868
-
869
- // Start the event stream here to record all the logs.
870
- header( 'Content-Type: text/event-stream' );
871
- header( 'Cache-Control: no-cache' );
872
-
873
- // Time to run the import!
874
- set_time_limit( 0 );
875
-
876
- // Ensure we're not buffered.
877
- wp_ob_end_flush_all();
878
- flush();
879
-
880
- // Run import process.
881
- $process = $importer->import( $file );
882
-
883
- // Setup complete response.
884
- $complete = array(
885
- 'status' => true, // The process is complete no matter success or not.
886
- 'error' => false, // Message error if any.
887
- 'data' => null, // Compatibility with current Ajax.
888
- 'message' => 'Template contents were imported.',
889
- );
890
-
891
- // Check if the request is error, then set the message.
892
- if ( is_wp_error( $process ) ) {
893
- $complete['error'] = $process->get_error_message();
894
- }
895
-
896
- $this->message_sse( $complete );
897
- exit;
898
-
899
- } catch ( Exception $e ) {
900
- $this->message_sse( $e->getMessage(), true );
901
- exit;
902
- }
903
- }
904
-
905
- /**
906
- * Get settings.json data.
907
- *
908
- */
909
- public function getSettingsData( $template_name ) {
910
-
911
- $this->setTemplateName( $template_name );
912
- $settings_url = $this->getAssetsAddress( 'settings_url', $this->getTemplateName() );
913
- $settings_path = $this->getAssetsAddress( 'settings_path', $this->getTemplateName() );
914
- $response = JupiterX_Control_Panel_Helpers::getFileBody( $settings_url, $settings_path );
915
-
916
- return json_decode( $response, true );
917
- }
918
-
919
- /**
920
- * Send a Server-Sent Events message.
921
- *
922
- *
923
- * @param mixed $message Data to be JSON-encoded and sent in the message.
924
- * @param boolean $need_header Send response along with the header.
925
- */
926
- public function message_sse( $message, $need_header = false ) {
927
- // Add header to start event stream only if needed.
928
- if ( $need_header ) {
929
- // Start the event stream.
930
- header( 'Content-Type: text/event-stream' );
931
- header( 'Cache-Control: no-cache' );
932
- }
933
-
934
- // Convert any message data as an array.
935
- if ( ! is_array( $message ) ) {
936
- $message = array(
937
- 'message' => $message,
938
- );
939
- }
940
-
941
- // Set message event and pass the data.
942
- echo "event: message\n";
943
- echo 'data: ' . wp_json_encode( $message ) . "\n\n";
944
-
945
- flush();
946
- }
947
-
948
- public function importThemeContent( $template_name, $fetch_attachments = false, $partial_import = false ) {
949
- try {
950
-
951
- // Include wordpress-importer class.
952
- JupiterX_Control_Panel_Helpers::include_wordpress_importer();
953
- $this->reinitializeData( $template_name );
954
- // Set importer options as an array.
955
- $options = array(
956
- 'fetch_attachments' => filter_var( $fetch_attachments, FILTER_VALIDATE_BOOLEAN ),
957
- 'default_author' => get_current_user_id(),
958
- );
959
-
960
- // Create new instance for Importer.
961
- $importer = new JupiterX_WXR_Importer( $options, $partial_import );
962
- $logger = new JupiterX_Importer_Logger_ServerSentEvents();
963
- $importer->set_logger( $logger );
964
-
965
- // Get preliminary information.
966
- $file = $this->getAssetsAddress( 'template_content_path', $this->getTemplateName() );
967
- $data = $importer->get_preliminary_information( $file );
968
- if ( is_wp_error( $data ) ) {
969
- $this->message( 'Error in parsing theme_content.xml!', false );
970
- return false;
971
- }
972
-
973
- // Time to run the import!
974
- set_time_limit( 0 );
975
-
976
- // Run import process.
977
- ob_start();
978
- $importer->import( $file );
979
- ob_end_clean();
980
-
981
- $this->message( 'Template contents were imported.', true );
982
- return true;
983
-
984
- } catch ( Exception $e ) {
985
- $this->message( $e->getMessage(), false );
986
- return false;
987
- }
988
- }
989
- public function importMenuLocations( $template_name ) {
990
- try {
991
- $settings = $this->getSettingsData( $template_name );
992
-
993
- $nav_menus = wp_get_nav_menus();
994
-
995
- if ( ! isset( $settings['options']['jupiterx_menu_locations'] ) || empty( $settings['options']['jupiterx_menu_locations'] ) || empty( $nav_menus ) ) {
996
- $this->message( 'There were no menu locations to import.', true );
997
- }
998
-
999
- $menu_locations = $settings['options']['jupiterx_menu_locations'];
1000
-
1001
- $locations = [];
1002
-
1003
- foreach ( $nav_menus as $menu ) {
1004
- if ( in_array( $menu->name, $menu_locations, true ) ) {
1005
- $location_key = array_search( $menu->name, $menu_locations, true );
1006
- $locations[ $location_key ] = $menu->term_id;
1007
- }
1008
- }
1009
-
1010
- set_theme_mod( 'nav_menu_locations', $locations );
1011
-
1012
- $this->message( 'Navigation locations is configured.', true, [ $locations ] );
1013
-
1014
- return true;
1015
- } catch ( Exception $e ) {
1016
- $this->message( $e->getMessage(), false );
1017
-
1018
- return false;
1019
- } // End try().
1020
- }
1021
-
1022
- public function setUpPages( $template_name ) {
1023
- try {
1024
- $package_data = $this->getSettingsData( $template_name );
1025
-
1026
- // Set homepage.
1027
- if(isset($package_data['options']['page_on_front'])) {
1028
- $homepage_title = $package_data['options']['page_on_front'];
1029
- if ( ! empty( $homepage_title ) ) {
1030
- $homepage = get_page_by_title( $homepage_title );
1031
- }
1032
- if ( ! empty( $homepage->ID ) ) {
1033
- update_option( 'page_on_front', $homepage->ID );
1034
- update_option( 'show_on_front', 'page' );
1035
- }
1036
- }
1037
-
1038
- // Set shop page.
1039
- if(isset($package_data['options']['woocommerce_shop_page_id'])) {
1040
- $shop_title = $package_data['options']['woocommerce_shop_page_id'];
1041
- if ( ! empty( $shop_title ) ) {
1042
- $shop_page = get_page_by_title( $shop_title );
1043
- }
1044
- if ( ! empty( $shop_page->ID ) ) {
1045
- update_option( 'woocommerce_shop_page_id', $shop_page->ID );
1046
- }
1047
- }
1048
-
1049
- // Set cart page.
1050
- if(isset($package_data['options']['woocommerce_cart_page_id'])) {
1051
- $cart_title = $package_data['options']['woocommerce_cart_page_id'];
1052
- if ( ! empty( $cart_title ) ) {
1053
- $cart_page = get_page_by_title( $cart_title );
1054
- }
1055
- if ( ! empty( $cart_page->ID ) ) {
1056
- update_option( 'woocommerce_cart_page_id', $cart_page->ID );
1057
- }
1058
- }
1059
-
1060
- // Set Checkout page.
1061
- if(isset($package_data['options']['woocommerce_checkout_page_id'])) {
1062
- $checkout_title = $package_data['options']['woocommerce_checkout_page_id'];
1063
- if ( ! empty( $checkout_title ) ) {
1064
- $checkout_page = get_page_by_title( $checkout_title );
1065
- }
1066
- if ( ! empty( $checkout_page->ID ) ) {
1067
- update_option( 'woocommerce_checkout_page_id', $checkout_page->ID );
1068
- }
1069
- }
1070
-
1071
- // Set My Account page.
1072
- if ( isset( $package_data['options']['woocommerce_myaccount_page_id'] ) ) {
1073
- $myaccount_title = $package_data['options']['woocommerce_myaccount_page_id'];
1074
-
1075
- if ( ! empty( $myaccount_title ) ) {
1076
- $myaccount_page = get_page_by_title( $myaccount_title );
1077
- }
1078
-
1079
- if ( ! empty( $myaccount_page->ID ) ) {
1080
- update_option( 'woocommerce_myaccount_page_id', $myaccount_page->ID );
1081
- }
1082
- }
1083
-
1084
- $this->message( 'pages are configured.', true );
1085
-
1086
- return true;
1087
- } catch ( Exception $e ) {
1088
- $this->message( $e->getMessage(), false );
1089
-
1090
- return false;
1091
- } // End try().
1092
- }
1093
- /**
1094
- * Import Settings options.
1095
- *
1096
- * @param string $template_name Name of template.
1097
- * @return mixed
1098
- * @throws Exception When Settings file is empty.
1099
- */
1100
- public function import_settings( $template_name ) {
1101
- try {
1102
- $this->reinitializeData( $template_name );
1103
- $data = $this->getSettingsData( $template_name );
1104
-
1105
- // Data checks.
1106
- if ( 'array' != gettype( $data ) ) {
1107
- throw new Exception(
1108
- sprintf( esc_html__( 'Error importing settings! Please check that you uploaded (%s) a settings export file.', 'jupiterx-core' ), $file_name )
1109
- );
1110
- }
1111
- if ( ! isset( $data['template'] ) || ! isset( $data['mods'] ) ) {
1112
- throw new Exception(
1113
- sprintf( esc_html__( 'Error importing settings! template Please check that you uploaded (%s) a settings export file.', 'jupiterx-core' ), $file_name )
1114
- );
1115
- }
1116
-
1117
- // Clear theme mods.
1118
- remove_theme_mods();
1119
-
1120
- $data['mods'] = JupiterX_Control_Panel_Export_Import::_import_images( $data['mods'] );
1121
-
1122
- // If wp_css is set then import it.
1123
- if ( function_exists( 'wp_update_custom_css_post' ) && isset( $data['wp_css'] ) && '' !== $data['wp_css'] ) {
1124
- wp_update_custom_css_post( $data['wp_css'] );
1125
- }
1126
-
1127
- // Exclude nav menu locations in this process.
1128
- if ( isset( $data['mods']['nav_menu_locations'] ) ) {
1129
- unset( $data['mods']['nav_menu_locations'] );
1130
- }
1131
-
1132
- // Loop through the mods.
1133
- foreach ( $data['mods'] as $key => $val ) {
1134
- set_theme_mod( $key, $val );
1135
- }
1136
-
1137
- // Set Jet Menu options.
1138
- if ( isset( $data['options']['jet_menu_options'] ) ) {
1139
- update_option( 'jet_menu_options', $data['options']['jet_menu_options'] );
1140
- }
1141
-
1142
- // Set Jet Popup options.
1143
- if ( isset( $data['options']['jet_popup_conditions'] ) ) {
1144
- update_option( 'jet_popup_conditions', $data['options']['jet_popup_conditions'] );
1145
- }
1146
-
1147
- // Set Jupiter X custom siderbars option.
1148
- if ( isset( $data['options']['jupiterx_custom_sidebars'] ) ) {
1149
- jupiterx_update_option( 'custom_sidebars', $data['options']['jupiterx_custom_sidebars'] );
1150
- }
1151
-
1152
- // Set extra options.
1153
- if ( ! empty( $data['options']['extra'] ) ) {
1154
- foreach( $data['options']['extra'] as $key => $val ) {
1155
- if ( 'elementor_cpt_support' === $key && ! is_array( $val ) ) {
1156
- continue;
1157
- }
1158
-
1159
- if ( 'elementor_global_image_lightbox' === $key && is_bool( $val ) ) {
1160
- continue;
1161
- }
1162
-
1163
- update_option( $key, $val );
1164
- }
1165
- }
1166
-
1167
- $this->message( 'Settings are imported.', true );
1168
- return true;
1169
-
1170
- } catch ( Exception $e ) {
1171
- $this->message( $e->getMessage(), false );
1172
-
1173
- return false;
1174
- }
1175
- }
1176
- public function importThemeWidgets( $template_name ) {
1177
- $this->reinitializeData( $template_name );
1178
- try {
1179
- $data = JupiterX_Control_Panel_Helpers::getFileBody(
1180
- $this->getAssetsAddress( 'widget_url', $this->getTemplateName() ),
1181
- $this->getAssetsAddress( 'widget_path', $this->getTemplateName() )
1182
- );
1183
- $data = json_decode( $data, true );
1184
- $this->import_widget_data( $data );
1185
-
1186
- $this->message( 'Widgets are imported.', true );
1187
-
1188
- return true;
1189
- } catch ( Exception $e ) {
1190
- $this->message( $e->getMessage(), false );
1191
-
1192
- return false;
1193
- }
1194
- }
1195
- public function finalizeImporting( $template_name, $partial_import = false ) {
1196
- $this->reinitializeData( $template_name );
1197
- $template_name = sanitize_title( $template_name );
1198
- // Check if it had something to import.
1199
- try {
1200
-
1201
- if ( ! $this->cleanInstallFiles( $template_name ) ) {
1202
- throw new Exception( 'Can not remove installation source files' );
1203
- return false;
1204
- }
1205
-
1206
- if ( ! $partial_import ) {
1207
- jupiterx_update_option( 'template_installed', $this->getTemplateName() );
1208
- jupiterx_update_option( 'template_installed_id', $this->getTemplateID() );
1209
- }
1210
-
1211
- jupiterx_core_flush_cache();
1212
-
1213
- $this->message( 'Data imported successfully', true );
1214
- return true;
1215
-
1216
- } catch ( Exception $e ) {
1217
- $this->message( $e->getMessage(), false );
1218
-
1219
- return false;
1220
- }
1221
- }
1222
-
1223
- /**
1224
- * Set default value Raven nav menus recursively.
1225
- *
1226
- * @access public
1227
- * @since 1.4.0
1228
- *
1229
- * @param array $element Template element.
1230
- * @param array $list Raven menu default list.
1231
- * @return void
1232
- */
1233
- public function set_default_raven_menu_list( &$element, $list )
1234
- {
1235
- if (
1236
- isset( $element['elType'] ) &&
1237
- $element['elType'] === 'widget' &&
1238
- isset( $element['widgetType'] ) &&
1239
- $element['widgetType'] === 'raven-nav-menu' &&
1240
- ! isset( $element['settings']['list'] )
1241
- ) {
1242
- $element['settings']['list'] = $list;
1243
- return;
1244
- }
1245
-
1246
- foreach( $element['elements'] as &$inner_element ) {
1247
- $this->set_default_raven_menu_list( $inner_element, $list );
1248
- }
1249
- }
1250
-
1251
- /**
1252
- * Clean install files
1253
- *
1254
- * @param $template_name
1255
- * @author Artbees Team
1256
- * @return bool
1257
- */
1258
- private function cleanInstallFiles( $template_name ) {
1259
- $jupiterx_filesystem = new JupiterX_Filesystem(
1260
- array(
1261
- 'context' => $this->getBasePath(),
1262
- )
1263
- );
1264
-
1265
- // Deleting Template Source Folder.
1266
- $template_path = $this->getBasePath() . sanitize_title( $template_name );
1267
- if ( $jupiterx_filesystem->exists( $template_path ) && $jupiterx_filesystem->is_dir( $template_path ) && ! $jupiterx_filesystem->delete( $template_path, true ) ) {
1268
- return false;
1269
- }
1270
-
1271
- // Deleting Template Source Zip file.
1272
- $template_zip = $template_path . '.zip';
1273
- if ( $jupiterx_filesystem->exists( $template_zip ) && $jupiterx_filesystem->is_file( $template_zip ) && ! $jupiterx_filesystem->delete( $template_zip ) ) {
1274
- return false;
1275
- }
1276
-
1277
- return true;
1278
- }
1279
- public function uninstallTemplate() {
1280
- try {
1281
- $tables = array(
1282
- 'comments',
1283
- 'commentmeta',
1284
- 'links',
1285
- 'options',
1286
- 'postmeta',
1287
- 'posts',
1288
- 'term_relationships',
1289
- 'termmeta',
1290
- 'terms',
1291
- 'term_taxonomy',
1292
- );
1293
-
1294
- $db_manager = new JupiterX_Control_Panel_Database_Manager();
1295
-
1296
- $db_manager->backup_media_records();
1297
-
1298
- $reset = $this->resetWordpressDatabase( $tables, array(), true );
1299
-
1300
- $db_manager->restore_media_records();
1301
-
1302
- if ( ! $reset ) {
1303
- throw new Exception( 'Failed to uninstall template. Please try again.' );
1304
- }
1305
-
1306
- $this->message( 'Template uninstall success.', true );
1307
- return true;
1308
- } catch ( Exception $e ) {
1309
- $this->message( $e->getMessage(), false );
1310
-
1311
- return false;
1312
- }
1313
- }
1314
- public function availableWidgets() {
1315
- global $wp_registered_widget_controls;
1316
- $widget_controls = $wp_registered_widget_controls;
1317
- $available_widgets = array();
1318
- foreach ( $widget_controls as $widget ) {
1319
- if ( ! empty( $widget['id_base'] ) && ! isset( $available_widgets[ $widget['id_base'] ] ) ) {
1320
- $available_widgets[ $widget['id_base'] ]['id_base'] = $widget['id_base'];
1321
- $available_widgets[ $widget['id_base'] ]['name'] = $widget['name'];
1322
- }
1323
- }
1324
-
1325
- return apply_filters( 'available_widgets', $available_widgets );
1326
- }
1327
-
1328
- /**
1329
- * Import widgets' data.
1330
- *
1331
- * @throws Exception If can not read widget data.
1332
- *
1333
- * @param array $data Widgets' data.
1334
- * @return boolean
1335
- */
1336
- public function import_widget_data( $data ) {
1337
- global $wp_registered_sidebars;
1338
-
1339
- $available_widgets = $this->availableWidgets();
1340
- $widget_instances = array();
1341
- foreach ( $available_widgets as $widget_data ) {
1342
- $widget_instances[ $widget_data['id_base'] ] = get_option( 'widget_' . $widget_data['id_base'] );
1343
- }
1344
- if ( empty( $data ) || ! is_array( $data ) ) {
1345
- throw new Exception( 'Widget data could not be read. Please try a different file.' );
1346
- }
1347
- $results = array();
1348
- foreach ( $data as $sidebar_id => $widgets ) {
1349
- if ( 'wp_inactive_widgets' == $sidebar_id ) {
1350
- continue;
1351
- }
1352
- if ( isset( $wp_registered_sidebars[ $sidebar_id ] ) ) {
1353
- $sidebar_available = true;
1354
- $use_sidebar_id = $sidebar_id;
1355
- $sidebar_message_type = 'success';
1356
- $sidebar_message = '';
1357
- } else {
1358
- $sidebar_available = false;
1359
- $use_sidebar_id = 'wp_inactive_widgets';
1360
- $sidebar_message_type = 'error';
1361
- $sidebar_message = 'Sidebar does not exist in theme (using Inactive)';
1362
- }
1363
- $results[ $sidebar_id ]['name'] = ! empty( $wp_registered_sidebars[ $sidebar_id ]['name'] ) ? $wp_registered_sidebars[ $sidebar_id ]['name'] : $sidebar_id;
1364
- $results[ $sidebar_id ]['message_type'] = $sidebar_message_type;
1365
- $results[ $sidebar_id ]['message'] = $sidebar_message;
1366
- $results[ $sidebar_id ]['widgets'] = array();
1367
- foreach ( $widgets as $widget_instance_id => $widget ) {
1368
- $fail = false;
1369
- $id_base = preg_replace( '/-[0-9]+$/', '', $widget_instance_id );
1370
- $instance_id_number = str_replace( $id_base . '-', '', $widget_instance_id );
1371
- if ( ! $fail && ! isset( $available_widgets[ $id_base ] ) ) {
1372
- $fail = true;
1373
- $widget_message_type = 'error';
1374
- $widget_message = 'Site does not support widget';
1375
- }
1376
- $widget = apply_filters( 'jupiterx_widget_settings', $widget );
1377
- if ( ! $fail && isset( $widget_instances[ $id_base ] ) ) {
1378
- $sidebars_widgets = get_option( 'sidebars_widgets' );
1379
- $sidebar_widgets = isset( $sidebars_widgets[ $use_sidebar_id ] ) ? $sidebars_widgets[ $use_sidebar_id ] : array();
1380
- $single_widget_instances = ! empty( $widget_instances[ $id_base ] ) ? $widget_instances[ $id_base ] : array();
1381
- foreach ( $single_widget_instances as $check_id => $check_widget ) {
1382
- if ( in_array( "$id_base-$check_id", $sidebar_widgets ) && (array) $widget == $check_widget ) {
1383
- $fail = true;
1384
- $widget_message_type = 'warning';
1385
- $widget_message = 'Widget already exists';
1386
- break;
1387
- }
1388
- }
1389
- }
1390
- if ( ! $fail ) {
1391
- $single_widget_instances = get_option( 'widget_' . $id_base );
1392
- $single_widget_instances = ! empty( $single_widget_instances ) ? $single_widget_instances : array(
1393
- '_multiwidget' => 1,
1394
- );
1395
- $single_widget_instances[] = (array) $widget;
1396
- end( $single_widget_instances );
1397
- $new_instance_id_number = key( $single_widget_instances );
1398
- if ( '0' === strval( $new_instance_id_number ) ) {
1399
- $new_instance_id_number = 1;
1400
- $single_widget_instances[ $new_instance_id_number ] = $single_widget_instances[0];
1401
- unset( $single_widget_instances[0] );
1402
- }
1403
- if ( isset( $single_widget_instances['_multiwidget'] ) ) {
1404
- $multiwidget = $single_widget_instances['_multiwidget'];
1405
- unset( $single_widget_instances['_multiwidget'] );
1406
- $single_widget_instances['_multiwidget'] = $multiwidget;
1407
- }
1408
- update_option( 'widget_' . $id_base, $single_widget_instances );
1409
- $sidebars_widgets = get_option( 'sidebars_widgets' );
1410
- $new_instance_id = $id_base . '-' . $new_instance_id_number;
1411
- $sidebars_widgets[ $use_sidebar_id ][] = $new_instance_id;
1412
- update_option( 'sidebars_widgets', $sidebars_widgets );
1413
- if ( $sidebar_available ) {
1414
- $widget_message_type = 'success';
1415
- $widget_message = 'Imported';
1416
- } else {
1417
- $widget_message_type = 'warning';
1418
- $widget_message = 'Imported to Inactive';
1419
- }
1420
- }
1421
- $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['name'] = isset( $available_widgets[ $id_base ]['name'] ) ? $available_widgets[ $id_base ]['name'] : $id_base;
1422
- $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['title'] = ! empty( $widget->title ) ? $widget->title : '';
1423
- $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message_type'] = $widget_message_type;
1424
- $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message'] = $widget_message;
1425
- } // End foreach().
1426
- } // End foreach().
1427
-
1428
- return true;
1429
- }
1430
- /**
1431
- * It will empty all or custom database tables of WordPress and install WordPress again if needed.
1432
- *
1433
- * @param array $table which table need to be empty ? example : array('user' , 'usermeta')
1434
- * table names should be without any prefix
1435
- * @param bool $install_needed if WordPress need to be installed after reseting database
1436
- * it should be false or true
1437
- *
1438
- * @return bool return if everything looks good and throwing errors on problems
1439
- */
1440
- public function resetWordpressDatabase( $tables = array(), $exclude_tables = array(), $install_needed = false ) {
1441
- global $wpdb, $reactivate_wp_reset_additional, $current_user;
1442
-
1443
- if ( $install_needed ) {
1444
-
1445
- require_once ABSPATH . '/wp-admin/includes/upgrade.php';
1446
-
1447
- $new_options = array();
1448
-
1449
- $old_options = array(
1450
- 'active_plugins',
1451
- );
1452
-
1453
- $blogname = get_option( 'blogname' );
1454
- $blog_public = get_option( 'blog_public' );
1455
- $site_url = site_url();
1456
- $current_theme = wp_get_theme();
1457
-
1458
- foreach ( $old_options as $old_option_key ) {
1459
- $new_options[ $old_option_key ] = get_option( $old_option_key );
1460
- }
1461
-
1462
- $keep_options = [
1463
- 'api_key',
1464
- 'api_access_token',
1465
- 'envato_purchase_code_5177775',
1466
- 'setup_wizard_current_page',
1467
- 'setup_wizard_hide_notice',
1468
- ];
1469
-
1470
- $jupiterx_options = get_option( 'jupiterx', [] );
1471
-
1472
- $new_options['jupiterx'] = array_intersect_key( $jupiterx_options, array_flip( $keep_options ) );
1473
-
1474
- if ( 'admin' != $current_user->user_login ) {
1475
- $user = get_user_by( 'login', 'admin' );
1476
- }
1477
-
1478
- if ( empty( $user->user_level ) || $user->user_level < 10 ) {
1479
- $user = $current_user;
1480
- $session_tokens = get_user_meta( $user->ID, 'session_tokens', true );
1481
- }
1482
-
1483
- // Check if we need all the tables or specific table.
1484
- if ( is_array( $tables ) && count( $tables ) > 0 ) {
1485
- array_walk(
1486
- $tables, function ( &$value, $key ) use ( $wpdb ) {
1487
- $value = $wpdb->prefix . $value;
1488
- }
1489
- );
1490
- } else {
1491
- $prefix = str_replace( '_', '\_', $wpdb->prefix );
1492
- $tables = $wpdb->get_col( "SHOW TABLES LIKE '{$prefix}%'" );
1493
- }
1494
-
1495
- // exclude table if its valued.
1496
- if ( is_array( $exclude_tables ) && count( $exclude_tables ) > 0 ) {
1497
- array_walk(
1498
- $exclude_tables, function ( &$ex_value, $key ) use ( $wpdb ) {
1499
- $ex_value = $wpdb->prefix . $ex_value;
1500
- }
1501
- );
1502
- $tables = array_diff( $tables, $exclude_tables );
1503
- }
1504
- // Removing data from WordPress tables.
1505
- foreach ( $tables as $table ) {
1506
- $wpdb->query( "DROP TABLE $table" );
1507
- }
1508
-
1509
- $result = wp_install( $blogname, $user->user_login, $user->user_email, $blog_public );
1510
- switch_theme( $current_theme->get_stylesheet() );
1511
-
1512
- /* GoDaddy Patch => GD have a problem of cleaning siteurl option value after reseting database */
1513
- if ( site_url() == '' ) {
1514
- $wpdb->update(
1515
- $wpdb->options, array(
1516
- 'option_value' => $site_url,
1517
- ),array(
1518
- 'option_name' => 'siteurl',
1519
- )
1520
- );
1521
- }
1522
- extract( $result, EXTR_SKIP );
1523
-
1524
- $query = $wpdb->prepare( "UPDATE $wpdb->users SET user_pass = %s, user_activation_key = '' WHERE ID = %d", $user->user_pass, $user_id );
1525
- $wpdb->query( $query );
1526
-
1527
- $get_user_meta = function_exists( 'get_user_meta' ) ? 'get_user_meta' : 'get_usermeta';
1528
- $update_user_meta = function_exists( 'update_user_meta' ) ? 'update_user_meta' : 'update_usermeta';
1529
-
1530
- if ( $get_user_meta($user_id, 'default_password_nag') ) {
1531
- $update_user_meta($user_id, 'default_password_nag', false);
1532
- }
1533
-
1534
- if ( $get_user_meta($user_id, $wpdb->prefix . 'default_password_nag') ) {
1535
- $update_user_meta($user_id, $wpdb->prefix . 'default_password_nag', false);
1536
- }
1537
-
1538
- wp_clear_auth_cookie();
1539
- wp_set_current_user( $user_id, $user->user_login );
1540
- if ( $session_tokens ) {
1541
- delete_user_meta( $user->ID, 'session_tokens' );
1542
- update_user_meta( $user->ID, 'session_tokens', $session_tokens );
1543
- }
1544
-
1545
- wp_set_auth_cookie( $user_id, true );
1546
- do_action( 'wp_login', $user->user_login, $user );
1547
-
1548
- if ( $new_options ) {
1549
- foreach ( $new_options as $key => $value ) {
1550
- update_option( $key, $value );
1551
- }
1552
- }
1553
- return true;
1554
- } else {
1555
-
1556
- $jupiterx_temp_installed = jupiterx_get_option( 'template_installed' );
1557
-
1558
- if ( $jupiterx_temp_installed ) {
1559
-
1560
- // Delete option data for page_on_front.
1561
- if ( get_option( 'page_on_front' ) ) {
1562
- delete_option( 'page_on_front' );
1563
- }
1564
-
1565
- // Delete option data for show_on_front.
1566
- if ( get_option( 'show_on_front' ) ) {
1567
- delete_option( 'show_on_front' );
1568
- }
1569
-
1570
- // Delete option data for woocommerce_shop_page_id.
1571
- if ( get_option( 'woocommerce_shop_page_id' ) ) {
1572
- delete_option( 'woocommerce_shop_page_id' );
1573
- }
1574
-
1575
- // Delete widgets.
1576
- $wpdb->query( "DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE '%widget%';" );
1577
-
1578
- }// End if().
1579
-
1580
- // truncate tables.
1581
- foreach ( $tables as $table ) {
1582
- $wpdb->query( "TRUNCATE TABLE {$wpdb->prefix}{$table}" );
1583
- }
1584
-
1585
- return true;
1586
- }// End if().
1587
- }
1588
-
1589
- private function setResponseForApiTemplateList( $url, $configs ) {
1590
- $headers = array(
1591
- 'theme-name' => $this->getThemeName(),
1592
- 'pagination-start' => isset( $configs['pagination_start'] ) ? $configs['pagination_start'] : 0,
1593
- 'pagination-count' => isset( $configs['pagination_count'] ) ? $configs['pagination_count'] : 1,
1594
- );
1595
-
1596
- if ( isset( $configs['template_id'] ) && is_null( $configs['template_id'] ) == false ) {
1597
- $headers['template-id'] = $configs['template_id'];
1598
- }
1599
-
1600
- if ( isset( $configs['template_name'] ) && is_null( $configs['template_name'] ) == false ) {
1601
- $headers['template-name'] = $configs['template_name'];
1602
- }
1603
-
1604
- if ( isset( $configs['template_category'] ) && is_null( $configs['template_category'] ) == false ) {
1605
- $headers['template-category'] = $configs['template_category'];
1606
- }
1607
-
1608
- return $this->wp_remote_get( $url, $headers );
1609
- }
1610
- /**
1611
- * This method is resposible to get template list from api and create download link if template need to extract from WordPress repo.
1612
- *
1613
- * @param str $template_name if template name is valued it will return array of information about the this template.
1614
- * but if template is valued as false it will return all templates information
1615
- *
1616
- * @return array will return array of templates
1617
- */
1618
- public function getTemplateListFromApi( $configs ) {
1619
- if ( ! is_array( $configs ) ) {
1620
- $configs = array();
1621
- }
1622
- $url = $this->getApiURL() . 'theme/templates';
1623
- $response = $this->setResponseForApiTemplateList( $url, $configs );
1624
- if ( false == isset( $response->bool ) || false == $response->bool ) {
1625
- throw new Exception( $response->message );
1626
- }
1627
- return $response->data;
1628
- }
1629
- public function getTemplateDownloadLink( $template_name = '', $type = 'download' ) {
1630
- $url = $this->getApiURL() . 'theme/download-template';
1631
- $response = $this->wp_remote_get( $url, array(
1632
- 'template-name' => $template_name,
1633
- 'type' => $type,
1634
- ) );
1635
-
1636
- if ( false == isset( $response->bool ) || false == $response->bool ) {
1637
- throw new Exception( $response->message );
1638
- }
1639
-
1640
- /**
1641
- * Filters the template download url.
1642
- *
1643
- * @param string $response->data Download url.
1644
- */
1645
- return apply_filters( 'jupiterx_template_download_url', $response->data, $type );
1646
- }
1647
-
1648
- /**
1649
- * Gets psd file download link.
1650
- *
1651
- */
1652
- public function get_template_psd_link() {
1653
- $template_name = sanitize_text_field( $_POST['template_name'] );
1654
- try {
1655
- $response = $this->getTemplateDownloadLink( $template_name . ' jupiterx', 'download-psd' );
1656
- $this->message(
1657
- 'Successfull', true, array(
1658
- 'psd_link' => $response,
1659
- )
1660
- );
1661
- return true;
1662
- } catch ( Exception $e ) {
1663
- $this->message( $e->getMessage(), false );
1664
- return false;
1665
- } // End try().
1666
- }
1667
-
1668
- /**
1669
- * This method is resposible to get templates categories list from api
1670
- *
1671
- * @param str $template_name if template name is valued it will return array of information about the this template.
1672
- * but if template is valued as false it will return all templates information.
1673
- *
1674
- * @return array will return array of plugins.
1675
- */
1676
- public function getTemplateCategoryListFromApi() {
1677
- try {
1678
- $url = $this->getApiURL() . 'theme/template-categories';
1679
- $response = $this->wp_remote_get( $url );
1680
- if ( false == isset( $response->bool ) || false == $response->bool ) {
1681
- throw new Exception( $response->message );
1682
- }
1683
- $this->message( 'Successfull', true, $response->data );
1684
- return true;
1685
- } catch ( Exception $e ) {
1686
- $this->message( $e->getMessage(), false );
1687
- return false;
1688
- }
1689
- }
1690
- /**
1691
- * We need to make assets addresses dynamic and fully proccess.
1692
- * in one method for future development
1693
- * it will get the type of address and will return full address in string
1694
- * example :
1695
- * for (options_url) type , it will return something like this
1696
- * (http://localhost/jupiter/wp-content/uploads/jupiterx_templates/dia/options.txt).
1697
- *
1698
- * For (options_path) type , it will return something like this.
1699
- * (/usr/apache/www/wp-content/uploads/jupiterx_templates/dia/options.txt)
1700
- *
1701
- * @param str $which_one Which address do you need.
1702
- * @param str $template_name such as.
1703
- */
1704
- public function getAssetsAddress( $which_one, $template_name ) {
1705
- $template_name = sanitize_title( $template_name );
1706
- switch ( $which_one ) {
1707
- case 'template_content_url':
1708
- return $this->getBaseUrl() . $template_name . '/' . $this->getTemplateContentFileName();
1709
- break;
1710
- case 'template_content_path':
1711
- return $this->getBasePath() . $template_name . '/' . $this->getTemplateContentFileName();
1712
- break;
1713
- case 'widget_url':
1714
- return $this->getBaseUrl() . $template_name . '/' . $this->getWidgetFileName();
1715
- break;
1716
- case 'widget_path':
1717
- return $this->getBasePath() . $template_name . '/' . $this->getWidgetFileName();
1718
- break;
1719
- case 'settings_url':
1720
- return $this->getBaseUrl() . $template_name . '/' . $this->get_settings_file_name();
1721
- break;
1722
- case 'settings_path':
1723
- return $this->getBasePath() . $template_name . '/' . $this->get_settings_file_name();
1724
- break;
1725
- default:
1726
- throw new Exception( 'File name you are looking for is not introduced.' );
1727
-
1728
- return false;
1729
- break;
1730
- }
1731
- }
1732
-
1733
- public function find_plugin_path( $plugin_slug ) {
1734
- $plugins = get_plugins();
1735
- foreach ( $plugins as $plugin_address => $plugin_data ) {
1736
-
1737
- // Extract slug from address
1738
- if ( strlen( $plugin_address ) == basename( $plugin_address ) ) {
1739
- $slug = strtolower( str_replace( '.php', '', $plugin_address ) );
1740
- } else {
1741
- $slug = strtolower( str_replace( '/' . basename( $plugin_address ), '', $plugin_address ) );
1742
- }
1743
- // Check if slug exists
1744
- if ( strtolower( $plugin_slug ) == $slug ) {
1745
- return $plugin_address;
1746
- }
1747
- }
1748
- return false;
1749
- }
1750
-
1751
- public function importLayerSliderContent( $content_path ) {
1752
- global $wpdb;
1753
- $ls_path = $this->find_plugin_path( $this->layer_slider_slug );
1754
-
1755
- if ( $ls_path == false ) {
1756
- throw new Exception( 'LayerSlider is not installed , install it first' );
1757
- return false;
1758
- }
1759
-
1760
- if ( defined( LS_PLUGIN_VERSION ) ) {
1761
- throw new Exception( 'LayerSlider is installed but not activated , activate it first' );
1762
- return false;
1763
- }
1764
- // Empty layerslider table first.
1765
- $table = $wpdb->prefix . 'layerslider';
1766
- $wpdb->query( "TRUNCATE TABLE $table" );
1767
-
1768
- // Try to import configs.
1769
- $ls_plugin_root_path = pathinfo( $plugin->get_plugins_dir() . $ls_path );
1770
- include $ls_plugin_root_path['dirname'] . '/classes/class.ls.importutil.php';
1771
- new LS_ImportUtil( $content_path );
1772
- return true;
1773
- }
1774
-
1775
- /**
1776
- * Import templates's custom tables.
1777
- *
1778
- * @since 1.11.0
1779
- *
1780
- * @param string $template_name Template name.
1781
- */
1782
- public function import_custom_tables( $template_name ) {
1783
- $this->reinitializeData( $template_name );
1784
-
1785
- try {
1786
- $template_name = sanitize_title( $template_name );
1787
- $import_path = $this->getBasePath() . $template_name;
1788
- $file = $import_path . '/tables.sql';
1789
- $db_manager = new JupiterX_Control_Panel_PHP_DB_Manager();
1790
-
1791
- if ( file_exists( $file ) ) {
1792
- $import_tables = $db_manager->import_tables( $file );
1793
-
1794
- if ( $import_tables !== true ) {
1795
- throw new Exception( $import_tables );
1796
- }
1797
- }
1798
-
1799
- $this->message( 'Custom tables are imported.', true );
1800
- } catch ( Exception $e ) {
1801
- $this->message( $e->getMessage(), false );
1802
- }
1803
- }
1804
-
1805
- /**
1806
- * Reusable wrapper method for WP remote getter.
1807
- *
1808
- * Method only returns response body.
1809
- */
1810
- public function wp_remote_get( $url = '', $headers = [] ) {
1811
- $required_headers = [
1812
- 'api-key' => jupiterx_get_option( 'api_key' ),
1813
- 'domain' => esc_url_raw( $_SERVER['SERVER_NAME'] ),
1814
- ];
1815
-
1816
- // Combined headers.
1817
- $headers = array_merge( $headers, $required_headers );
1818
-
1819
- $response = json_decode( wp_remote_retrieve_body( wp_remote_get( $url, [
1820
- 'sslverify' => false,
1821
- 'headers' => $headers,
1822
- ] ) ) );
1823
-
1824
- return $response;
1825
- }
1826
-
1827
- /**
1828
- * This method is resposible to manage all the classes messages.
1829
- */
1830
- public function message( $message, $status, $data = null ) {
1831
- $response = [
1832
- 'message' => jupiterx_logic_message_helper( 'template-management', $message ),
1833
- 'status' => $status,
1834
- 'data' => $data,
1835
- ];
1836
-
1837
- wp_send_json( $response );
1838
- }
1839
- }
1840
- }
1841
-
1842
- if ( ! function_exists( 'jupiterx_disable_woocommerce' ) ) {
1843
- /* Disable woocommerce redirection */
1844
- add_action( 'admin_init', 'jupiterx_disable_woocommerce', 5 );
1845
- /**
1846
- * Disable Woocommerce redirect for template install
1847
- *
1848
- */
1849
- function jupiterx_disable_woocommerce() {
1850
- delete_transient( '_wc_activation_redirect' );
1851
- add_filter(
1852
- 'woocommerce_prevent_automatic_wizard_redirect', function () {
1853
- return true;
1854
- }
1855
- );
1856
- }
1857
- }
1858
-
1859
-
1860
- add_filter(
1861
- 'pre_transient__wc_activation_redirect', function () {
1862
- return 0;
1863
- }
1864
- );
1865
-
1866
- add_filter(
1867
- 'pre_transient__vc_page_welcome_redirect', function () {
1868
- return 0;
1869
- }
1870
- );
1871
-
1872
- global $abb_phpunit;
1873
- if ( empty( $abb_phpunit ) || $abb_phpunit == false ) {
1874
- new JupiterX_Control_Panel_Install_Template();
1875
- }
1
+ <?php
2
+ /**
3
+ * This class is responsible manage all jupiter templates
4
+ * it will communicate with artbees API and get list of templates , install them or remove them.
5
+ *
6
+ * @author Artbees <info@artbees.net>
7
+ * @copyright Artbees LTD (c)
8
+ *
9
+ * @link https://artbees.net
10
+ * @since 1.0
11
+ * @version 1.0
12
+ */
13
+ if ( ! class_exists( 'JupiterX_Control_Panel_Install_Template' ) ) {
14
+ class JupiterX_Control_Panel_Install_Template {
15
+
16
+
17
+ private $layer_slider_slug = 'layerslider';
18
+
19
+ private $theme_name;
20
+
21
+ public function setThemeName( $theme_name ) {
22
+ $this->theme_name = $theme_name;
23
+ }
24
+
25
+ public function getThemeName() {
26
+ return $this->theme_name;
27
+ }
28
+
29
+ private $api_url;
30
+
31
+ public function setApiURL( $api_url ) {
32
+ $this->api_url = $api_url;
33
+ }
34
+
35
+ public function getApiURL() {
36
+ return $this->api_url;
37
+ }
38
+
39
+ private $template_id;
40
+
41
+ public function setTemplateID( $template_id ) {
42
+ $this->template_id = $template_id;
43
+ }
44
+
45
+ public function getTemplateID() {
46
+ return intval( $this->template_id );
47
+ }
48
+
49
+ private $template_name;
50
+
51
+ public function setTemplateName( $template_name ) {
52
+ $this->template_name = $template_name;
53
+ }
54
+
55
+ public function getTemplateName() {
56
+ return strtolower( $this->template_name );
57
+ }
58
+
59
+ private $template_file_name;
60
+
61
+ public function setTemplateFileName( $template_file_name ) {
62
+ $this->template_file_name = $template_file_name;
63
+ }
64
+
65
+ public function getTemplateFileName() {
66
+ return $this->template_file_name;
67
+ }
68
+
69
+ private $template_remote_address;
70
+
71
+ public function setTemplateRemoteAddress( $template_remote_address ) {
72
+ $this->template_remote_address = $template_remote_address;
73
+ }
74
+
75
+ public function getTemplateRemoteAddress() {
76
+ return $this->template_remote_address;
77
+ }
78
+
79
+ private $template_content_file_name;
80
+
81
+ public function setTemplateContentFileName( $template_content_file_name ) {
82
+ $this->template_content_file_name = $template_content_file_name;
83
+ }
84
+
85
+ public function getTemplateContentFileName() {
86
+ return $this->template_content_file_name;
87
+ }
88
+
89
+ private $widget_file_name;
90
+
91
+ public function setWidgetFileName( $widget_file_name ) {
92
+ $this->widget_file_name = $widget_file_name;
93
+ }
94
+
95
+ public function getWidgetFileName() {
96
+ return $this->widget_file_name;
97
+ }
98
+
99
+ /**
100
+ * Settings filename.
101
+ *
102
+ * @since 1.0
103
+ * @var string
104
+ */
105
+ private $settings_file_name;
106
+
107
+ /**
108
+ * Set Settings filename.
109
+ *
110
+ * @since 1.0
111
+ * @param string $settings_file_name Settings filename.
112
+ */
113
+ public function set_settings_file_name( $settings_file_name ) {
114
+ $this->settings_file_name = $settings_file_name;
115
+ }
116
+
117
+ /**
118
+ * Get Settings filename.
119
+ *
120
+ * @since 1.0
121
+ * @return string Settings filename.
122
+ */
123
+ public function get_settings_file_name() {
124
+ return $this->settings_file_name;
125
+ }
126
+
127
+ private $upload_dir;
128
+
129
+ public function setUploadDir( $upload_dir ) {
130
+ $this->upload_dir = $upload_dir;
131
+ }
132
+
133
+ public function getUploadDir() {
134
+ return $this->upload_dir;
135
+ }
136
+
137
+ private $base_path;
138
+
139
+ public function setBasePath( $base_path ) {
140
+ $this->base_path = $base_path;
141
+ }
142
+
143
+ public function getBasePath() {
144
+ return $this->base_path;
145
+ }
146
+
147
+ private $base_url;
148
+
149
+ public function setBaseUrl( $base_url ) {
150
+ $this->base_url = $base_url;
151
+ }
152
+
153
+ public function getBaseUrl() {
154
+ return $this->base_url;
155
+ }
156
+
157
+ private $message;
158
+
159
+ public function setMessage( $message ) {
160
+ $this->message = $message;
161
+ }
162
+
163
+ public function getMessage() {
164
+ return $this->message;
165
+ }
166
+
167
+ /**
168
+ * Construct.
169
+ *
170
+ * @param bool $system_text_env if you want to create an instance of this method for phpunit it should be true
171
+ */
172
+ public function __construct() {
173
+
174
+ add_filter( 'jupiterx_control_panel_pane_install_templates', [ $this, 'view' ] );
175
+
176
+ // Get TGMPA.
177
+ if ( class_exists( 'TGM_Plugin_Activation' ) ) {
178
+ $this->tgmpa = isset( $GLOBALS['tgmpa'] ) ? $GLOBALS['tgmpa'] : TGM_Plugin_Activation::get_instance();
179
+ }
180
+
181
+ $menu_items_access = get_site_option( 'menu_items' );
182
+
183
+ @set_time_limit( 0 );
184
+
185
+ $this->setThemeName( 'jupiterx' );
186
+
187
+ $this->setApiURL( 'https://artbees.net/api/v2/' );
188
+
189
+ $this->setUploadDir( wp_upload_dir() );
190
+ $this->setBasePath( $this->getUploadDir()['basedir'] . '/jupiterx_templates/' );
191
+ $this->setBaseUrl( $this->getUploadDir()['baseurl'] . '/jupiterx_templates/' );
192
+
193
+ $this->setTemplateContentFileName( 'theme_content.xml' );
194
+ $this->setWidgetFileName( 'widget_data.wie' );
195
+ $this->set_settings_file_name( 'settings.json' );
196
+ global $wpdb;
197
+
198
+ if ( ! defined( 'JupiterX_LOAD_IMPORTERS' ) ) {
199
+ define( 'JupiterX_LOAD_IMPORTERS', true );
200
+ }
201
+
202
+ add_filter( 'tgmpa_load', '__return_true', 10, 1 );
203
+
204
+ add_action( 'wp_ajax_abb_template_lazy_load', array( &$this, 'loadTemplatesFromApi' ) );
205
+ add_action( 'wp_ajax_abb_install_template_procedure', array( &$this, 'install_template_procedure' ) );
206
+
207
+ // Action only for importing theme content with Server-Sent Event.
208
+ add_action( 'wp_ajax_abb_install_template_sse', array( &$this, 'import_theme_content_sse' ) );
209
+
210
+ add_action( 'wp_ajax_abb_get_templates_categories', array( &$this, 'getTemplateCategoryListFromApi' ) );
211
+ add_action( 'wp_ajax_abb_restore_latest_db', array( &$this, 'restoreLatestDB' ) );
212
+ add_action( 'wp_ajax_abb_is_restore_db', array( &$this, 'isRestoreDB' ) );
213
+
214
+ add_action( 'wp_ajax_abb_uninstall_template', array( &$this, 'uninstallTemplate' ) );
215
+ add_action( 'wp_ajax_abb_get_template_psd_link', array( &$this, 'get_template_psd_link' ) );
216
+ }
217
+
218
+ /**
219
+ * Settings HTML path.
220
+ *
221
+ * @since 1.4.0
222
+ *
223
+ * @return string
224
+ */
225
+ public function view() {
226
+ return jupiterx_core()->plugin_dir() . 'includes/control-panel/views/install-templates.php';
227
+ }
228
+
229
+ public function install_template_procedure() {
230
+ $template_id = ( isset( $_POST['template_id'] ) ? intval( $_POST['template_id'] ) : 0 );
231
+ $this->setTemplateID( $template_id );
232
+ $template_name = ( isset( $_POST['template_name'] ) ? sanitize_text_field( $_POST['template_name'] ) : null );
233
+ $import_media = ( isset( $_POST['import_media'] ) ? sanitize_text_field( $_POST['import_media'] ) : false );
234
+ $type = ( isset( $_POST['type'] ) ? sanitize_text_field( $_POST['type'] ) : null );
235
+ $partial_import = ( isset( $_POST['partial_import'] ) ? filter_var( $_POST['partial_import'], FILTER_VALIDATE_BOOLEAN ) : false );
236
+
237
+ if ( is_null( $template_name ) || is_null( $type ) ) {
238
+ $this->message( 'System problem at installing , please contact support', false );
239
+ return false;
240
+ }
241
+
242
+ switch ( $type ) {
243
+ case 'preparation':
244
+ $this->preparation( $template_name );
245
+ break;
246
+ case 'backup_db':
247
+ $this->backupDB();
248
+ break;
249
+ case 'backup_media_records':
250
+ $this->backup_media_records();
251
+ break;
252
+ case 'restore_media_records':
253
+ $this->restore_media_records();
254
+ break;
255
+ case 'reset_db':
256
+ $this->resetDB();
257
+ break;
258
+ case 'upload':
259
+ $this->uploadTemplateToServer( $template_name );
260
+ break;
261
+ case 'unzip':
262
+ $this->unzipTemplateInServer( $template_name );
263
+ break;
264
+ case 'validate':
265
+ $this->validateTemplateFiles( $template_name );
266
+ break;
267
+ case 'install_plugins':
268
+ $this->installRequiredPlugins( $template_name );
269
+ break;
270
+ case 'activate_plugins':
271
+ $this->activateRequiredPlugins( $template_name );
272
+ break;
273
+ case 'custom_tables':
274
+ $this->import_custom_tables( $template_name );
275
+ break;
276
+ case 'theme_content':
277
+ $this->importThemeContent( $template_name, $import_media, $partial_import );
278
+ break;
279
+ case 'setup_pages':
280
+ $this->setUpPages( $template_name );
281
+ break;
282
+ case 'plugins_content':
283
+ $this->import_plugins_content( $template_name );
284
+ break;
285
+ case 'settings':
286
+ $this->import_settings( $template_name );
287
+ break;
288
+ case 'menu_locations':
289
+ $this->importMenuLocations( $template_name );
290
+ break;
291
+ case 'theme_widget':
292
+ $this->importThemeWidgets( $template_name );
293
+ break;
294
+ case 'finalize':
295
+ $this->finalizeImporting( $template_name, $partial_import );
296
+ break;
297
+ }
298
+ }
299
+ public function reinitializeData( $template_name ) {
300
+ try {
301
+ if ( empty( $template_name ) ) {
302
+ throw new Exception( 'Choose template first' );
303
+ }
304
+ $this->setTemplateName( $template_name );
305
+ if (
306
+ file_exists( $this->getAssetsAddress( 'template_content_path', $this->getTemplateName() ) ) == false ||
307
+ file_exists( $this->getAssetsAddress( 'widget_path', $this->getTemplateName() ) ) == false ||
308
+ file_exists( $this->getAssetsAddress( 'settings_path', $this->getTemplateName() ) ) == false
309
+ ) {
310
+ throw new Exception( "Some template assets are missing Template Name : $template_name, Contact support." );
311
+ } else {
312
+ return true;
313
+ }
314
+ } catch ( Exception $e ) {
315
+ $this->message( $e->getMessage(), false );
316
+ return false;
317
+ }
318
+ }
319
+
320
+ /**
321
+ * Reinitilize Template file is exist or not for SEE request.
322
+ *
323
+ * @since 1.0
324
+ *
325
+ * @throws Exception If template name empty.
326
+ * @throws Exception If template file is not exist.
327
+ *
328
+ * @param string $template_name The template name will be imported.
329
+ * @param string $template_id The template ID will be imported.
330
+ * @return boolean File status.
331
+ */
332
+ public function reinitialize_data_sse( $template_name, $template_id ) {
333
+ try {
334
+
335
+ // Check template name and ID.
336
+ if ( empty( $template_name ) || empty( $template_id ) ) {
337
+ throw new Exception( 'Choose template first!' );
338
+ }
339
+
340
+ $this->setTemplateName( $template_name );
341
+ $this->setTemplateID( $template_id );
342
+
343
+ // Check template file exist or not.
344
+ if ( false === file_exists( $this->getAssetsAddress( 'template_content_path', $this->getTemplateName() ) ) ) {
345
+ throw new Exception( 'Template content does not exist - Contact support.' );
346
+ }
347
+
348
+ return true;
349
+ } catch ( Exception $e ) {
350
+ $this->message_sse( $e->getMessage(), true );
351
+ exit;
352
+ }
353
+ }
354
+
355
+ /**
356
+ * Method that is resposible to pass plugin list to UI base on lazy load condition.
357
+ *
358
+ * @param str $_POST[from] from number.
359
+ * @param str $_POST[count] how many.
360
+ *
361
+ * @return bool will return boolean status of action , all message is setted to $this->message()
362
+ */
363
+ public function loadTemplatesFromApi() {
364
+ try {
365
+ $from = ( isset( $_POST['from'] ) ? intval( $_POST['from'] ) : null );
366
+ $count = ( isset( $_POST['count'] ) ? intval( $_POST['count'] ) : null );
367
+ $template_id = ( isset( $_POST['template_id'] ) ? intval( $_POST['template_id'] ) : 0 );
368
+ $template_name = ( isset( $_POST['template_name'] ) ? sanitize_text_field( $_POST['template_name'] ) : null );
369
+ $template_category = ( isset( $_POST['template_category'] ) ? sanitize_text_field( $_POST['template_category'] ) : null );
370
+
371
+ if ( is_null( $from ) || is_null( $count ) ) {
372
+ throw new Exception( 'System problem , please contact support', 1001 );
373
+ return false;
374
+ }
375
+ $getTemplateListArgs = [
376
+ 'pagination_start' => $from,
377
+ 'pagination_count' => $count,
378
+ 'template_category' => $template_category,
379
+ 'template_name' => $template_name,
380
+ 'template_id' => $template_id,
381
+ ];
382
+ $list_of_templates = $this->getTemplateListFromApi( $getTemplateListArgs );
383
+
384
+ if ( ! is_array( $list_of_templates ) ) {
385
+ throw new Exception( 'Template list is not what we expected' );
386
+ }
387
+
388
+ if ( jupiterx_is_pro() ) {
389
+ foreach ( $list_of_templates as $index => $template ) {
390
+ $list_of_templates[ $index ]->free_template = '1';
391
+ }
392
+ }
393
+
394
+ $db_manager = new JupiterX_Control_Panel_Database_Manager();
395
+ $backups = $db_manager->is_restore_db();
396
+ $this->message(
397
+ 'Successfull', true, array(
398
+ 'templates' => $list_of_templates,
399
+ 'backups' => $backups,
400
+ )
401
+ );
402
+ return true;
403
+
404
+ } catch ( Exception $e ) {
405
+ $this->message( $e->getMessage(), false );
406
+ return false;
407
+ }
408
+ }
409
+ public function preparation( $template_name ) {
410
+ try {
411
+ $this->message( 'All is ready.', true );
412
+ return true;
413
+ } catch ( Exception $e ) {
414
+ $this->message( $e->getMessage(), false );
415
+ return false;
416
+ }
417
+ }
418
+ public function backupDB() {
419
+ try {
420
+ $db_manager = new JupiterX_Control_Panel_Database_Manager();
421
+ $dm_response = $db_manager->backup_db();
422
+ if ( false == $dm_response ) {
423
+ throw new Exception( $db_manager->get_error_message() );
424
+ }
425
+
426
+ $this->message( 'Backup created.', true );
427
+ return true;
428
+
429
+ } catch ( Exception $e ) {
430
+ $this->message( $e->getMessage(), false );
431
+ return false;
432
+ }
433
+ }
434
+ public function backup_media_records() {
435
+ try {
436
+ $db_manager = new JupiterX_Control_Panel_Database_Manager();
437
+
438
+ $dm_response = $db_manager->backup_media_records();
439
+
440
+ if ( false == $dm_response ) {
441
+ throw new Exception( $db_manager->get_error_message() );
442
+ }
443
+ $this->message( 'Media records backup created.', true );
444
+ return true;
445
+
446
+ } catch ( Exception $e ) {
447
+ $this->message( $e->getMessage(), false );
448
+ return false;
449
+ }
450
+ }
451
+ public function restore_media_records() {
452
+ try {
453
+ $db_manager = new JupiterX_Control_Panel_Database_Manager();
454
+
455
+ $dm_response = $db_manager->restore_media_records();
456
+
457
+ if ( false == $dm_response ) {
458
+ throw new Exception( $db_manager->get_error_message() );
459
+ }
460
+ $this->message( 'Media records restored successfully', true );
461
+ return true;
462
+
463
+ } catch ( Exception $e ) {
464
+ $this->message( $e->getMessage(), false );
465
+ return false;
466
+ }
467
+ }
468
+ public function isRestoreDB() {
469
+ try {
470
+ $db_manager = new JupiterX_Control_Panel_Database_Manager();
471
+ $result = $db_manager->is_restore_db();
472
+ if ( is_array( $result ) ) {
473
+ $this->message( 'Successfull', true, $result );
474
+ return true;
475
+ } else {
476
+ throw new Exception( 'Result is not what we expected' );
477
+ }
478
+ } catch ( Exception $e ) {
479
+ $this->message( $e->getMessage(), false );
480
+ return false;
481
+ }
482
+ }
483
+ public function restoreLatestDB() {
484
+ try {
485
+ $db_manager = new JupiterX_Control_Panel_Database_Manager();
486
+ $return = $db_manager->restore_latest_db();
487
+ if ( false == $return ) {
488
+ throw new Exception( $db_manager->get_error_message() );
489
+ }
490
+ JupiterX_Control_Panel_Helpers::prevent_cache_plugins();
491
+ $this->message( 'Restore completed!', true );
492
+ return true;
493
+ } catch ( Exception $e ) {
494
+ $this->message( $e->getMessage(), false );
495
+ return false;
496
+ }
497
+ }
498
+ public function resetDB() {
499
+ try {
500
+ $tables = array(
501
+ 'comments',
502
+ 'commentmeta',
503
+ 'links',
504
+ 'postmeta',
505
+ 'posts',
506
+ 'term_relationships',
507
+ 'termmeta',
508
+ 'terms',
509
+ 'term_taxonomy',
510
+ );
511
+
512
+ include_once ABSPATH . 'wp-admin/includes/plugin.php';
513
+ if ( jupiterx_is_callable( 'SitePress' ) ) {
514
+ $tables[] = 'icl_translations';
515
+ }
516
+
517
+ $this->resetWordpressDatabase( $tables, array(), false );
518
+ $this->message( 'Database reset completed', true );
519
+
520
+ return true;
521
+ } catch ( Exception $e ) {
522
+ $this->message( $e->getMessage(), false );
523
+
524
+ return false;
525
+ }
526
+ }
527
+ public function uploadTemplateToServer( $template_name ) {
528
+ try {
529
+ $this->setTemplateName( $template_name );
530
+ $getTemplateName = $this->getTemplateName();
531
+ if ( empty( $getTemplateName ) ) {
532
+ throw new Exception( 'Choose one template first' );
533
+ }
534
+ $url = $this->getTemplateDownloadLink( $this->getTemplateName(), 'download' );
535
+ $template_file_name = $this->getTemplateDownloadLink( $this->getTemplateName(), 'filename' );
536
+ $this->setTemplateRemoteAddress( $url );
537
+ if ( filter_var( $url, FILTER_VALIDATE_URL ) === false ) {
538
+ throw new Exception( 'Template source URL is not validate' );
539
+ }
540
+ JupiterX_Control_Panel_Helpers::upload_from_url( $this->getTemplateRemoteAddress(), $template_file_name, $this->getBasePath() );
541
+ $this->message( 'Uploaded to server', true );
542
+ return true;
543
+ } catch ( Exception $e ) {
544
+ $this->message( $e->getMessage(), false );
545
+ return false;
546
+ }
547
+ }
548
+ public function unzipTemplateInServer( $template_name ) {
549
+ try {
550
+ $this->setTemplateName( $template_name );
551
+ $getTemplateName = $this->getTemplateName();
552
+ if ( empty( $getTemplateName ) ) {
553
+ throw new Exception( 'Choose one template first' );
554
+ }
555
+
556
+ $response = $this->getTemplateDownloadLink( $this->getTemplateName(), 'filename' );
557
+
558
+ $this->setTemplateFileName( $response );
559
+
560
+ $jupiterx_filesystem = new JupiterX_Filesystem(
561
+ array(
562
+ 'context' => $this->getBasePath(),
563
+ )
564
+ );
565
+
566
+ if ( $jupiterx_filesystem->get_error_code() ) {
567
+ throw new Exception( $jupiterx_filesystem->get_error_message() );
568
+ return false;
569
+ }
570
+
571
+ if ( ! $jupiterx_filesystem->exists( $this->getBasePath() . $this->getTemplateName() ) ) {
572
+ JupiterX_Control_Panel_Helpers::un_zip( $this->getBasePath() . $this->getTemplateFileName(), $this->getBasePath() );
573
+ } else {
574
+ if ( $jupiterx_filesystem->rmdir( $this->getBasePath() . $this->getTemplateName(), true ) ) {
575
+ JupiterX_Control_Panel_Helpers::un_zip( $this->getBasePath() . $this->getTemplateFileName(), $this->getBasePath() );
576
+ }
577
+ }
578
+
579
+ $jupiterx_filesystem->delete( $this->getBasePath() . $this->getTemplateFileName() );
580
+
581
+ $this->message( 'Completed', true );
582
+
583
+ return true;
584
+ } catch ( Exception $e ) {
585
+ $this->message( $e->getMessage(), false );
586
+
587
+ return false;
588
+ }
589
+ }
590
+ public function validateTemplateFiles( $template_name ) {
591
+ try {
592
+ if ( empty( $template_name ) ) {
593
+ throw new Exception( 'Choose template first' );
594
+ }
595
+
596
+ $jupiterx_filesystem = new JupiterX_Filesystem(
597
+ array(
598
+ 'context' => $this->getBasePath(),
599
+ )
600
+ );
601
+
602
+ if ( $jupiterx_filesystem->get_error_code() ) {
603
+ throw new Exception( $jupiterx_filesystem->get_error_message() );
604
+ return false;
605
+ }
606
+
607
+ $this->setTemplateName( $template_name );
608
+ if (
609
+ $jupiterx_filesystem->exists( $this->getAssetsAddress( 'template_content_path', $this->getTemplateName() ) ) == false ||
610
+ $jupiterx_filesystem->exists( $this->getAssetsAddress( 'widget_path', $this->getTemplateName() ) ) == false ||
611
+ $jupiterx_filesystem->exists( $this->getAssetsAddress( 'settings_path', $this->getTemplateName() ) ) == false
612
+ ) {
613
+ throw new Exception( "Some template assets are missing Template Name : $template_name, Contact support." );
614
+ } else {
615
+ $this->message( 'Completed', true );
616
+ return true;
617
+ }
618
+ } catch ( Exception $e ) {
619
+ $this->message( $e->getMessage(), false );
620
+
621
+ return false;
622
+ }
623
+ }
624
+
625
+ public function installRequiredPlugins( $template_name ) {
626
+
627
+ $plugin_install_access = is_multisite() ? is_super_admin() : ( current_user_can( 'install_themes' ) && current_user_can( 'activate_plugins' ) );
628
+ $single_site_message = 'You are not allowed to install a new plugin or template because your user role does not have required permissions.';
629
+ $multi_site_message = 'Template installation is only allowed for user with Super Admin role. Please contact your website\'s administrator. <a target="_blank" href="https://themes.artbees.net/docs/installing-a-template/">Learn More</a>';
630
+
631
+ if ( ! $plugin_install_access ) {
632
+ $message = $single_site_message;
633
+ if ( is_multisite() ) {
634
+ $message = $multi_site_message;
635
+ }
636
+ $this->message( $message, false );
637
+ }
638
+
639
+ $template_settings = $this->getSettingsData( $template_name );
640
+ $actions = [];
641
+ $plugins_to_install = [];
642
+ $tgmpa_url = $this->tgmpa->get_tgmpa_url();
643
+ $template_plugins = $template_settings['options']['jupiterx_support_plugins'];
644
+
645
+ $template_plugins = array_diff( $template_plugins, ['jupiterx-pro', 'advanced-custom-fields-pro'] );
646
+
647
+ $template_plugins[] = 'advanced-custom-fields';
648
+
649
+ foreach ( $template_plugins as $slug ) {
650
+
651
+ if ( ! $this->tgmpa->is_plugin_active( $slug ) || false !== $this->tgmpa->does_plugin_have_update( $slug ) ) {
652
+ if ( ! $this->tgmpa->is_plugin_installed( $slug ) ) {
653
+ $plugins_to_install[] = $slug;
654
+ }
655
+ }
656
+ }
657
+
658
+ if ( ! empty( $plugins_to_install ) ) {
659
+ $actions['install'] = [
660
+ 'url' => $tgmpa_url,
661
+ 'plugin' => $plugins_to_install,
662
+ 'tgmpa-page' => $this->tgmpa->menu,
663
+ 'plugin_status' => 'all',
664
+ '_wpnonce' => wp_create_nonce( 'bulk-plugins' ),
665
+ 'action' => 'tgmpa-bulk-install',
666
+ 'action2' => - 1,
667
+ 'message' => esc_html__( 'Installing', 'jupiterx-core' ),
668
+ ];
669
+ }
670
+
671
+ $actions['url'] = $tgmpa_url;
672
+ $actions['status'] = true;
673
+
674
+ wp_send_json( $actions );
675
+ }
676
+
677
+ public function activateRequiredPlugins( $template_name ) {
678
+
679
+ $template_settings = $this->getSettingsData( $template_name );
680
+ $template_plugins = $template_settings['options']['jupiterx_support_plugins'];
681
+
682
+ $template_plugins = array_diff( $template_plugins, [ 'jupiterx-pro', 'advanced-custom-fields-pro' ] );
683
+ $template_plugins[] = 'advanced-custom-fields';
684
+
685
+ foreach ( $template_plugins as $slug ) {
686
+ if ( isset( $this->tgmpa->plugins[ $slug ] ) ) {
687
+ activate_plugin( $this->tgmpa->plugins[ $slug ]['file_path'] );
688
+ }
689
+ }
690
+
691
+ wp_send_json( [
692
+ 'status' => true,
693
+ ] );
694
+ }
695
+
696
+
697
+ /**
698
+ * Import plugins content.
699
+ *
700
+ * @since 1.0.3
701
+ */
702
+ public function import_plugins_content( $template_name ) {
703
+
704
+ try {
705
+ $this->setTemplateName( $template_name );
706
+ // Get template settings.
707
+ $settings = $this->getSettingsData( $this->getTemplateName() );
708
+
709
+ // Supported plugins list.
710
+ $supported_plugins = $settings['options']['jupiterx_support_plugins'];
711
+
712
+ // Run plugins importer.
713
+ foreach ( $supported_plugins as $plugin ) {
714
+ if ( is_callable( [ $this, "import_{$plugin}_content" ] ) ) {
715
+ call_user_func( [ $this, "import_{$plugin}_content" ] );
716
+ }
717
+ }
718
+
719
+ $this->message( esc_html__( 'Data of plugins have imported.', 'jupiterx-core' ), true );
720
+
721
+ return true;
722
+ } catch ( Exception $e ) {
723
+ $this->message( $e->getMessage(), false );
724
+ return false;
725
+ }
726
+
727
+ }
728
+
729
+ /**
730
+ * Import Revolution Slider content.
731
+ *
732
+ * @since 1.0.3
733
+ */
734
+ public function import_revslider_content() {
735
+ if ( ! class_exists( 'RevSlider' ) ) {
736
+ return;
737
+ }
738
+
739
+ $filesystem = new JupiterX_Filesystem( [
740
+ 'context' => $this->getBasePath(),
741
+ ] );
742
+
743
+ $revslider_folder = $this->getBasePath() . sanitize_title( $this->getTemplateName() ) . '/revslider';
744
+
745
+ // Check extracted template if `revslider` folder exists inside.
746
+ if ( ! $filesystem->exists( $revslider_folder ) ) {
747
+ return;
748
+ }
749
+
750
+ $revslider = new RevSlider();
751
+
752
+ $sliders = glob( $revslider_folder . '/*.zip' );
753
+
754
+ if ( empty( $sliders ) ) {
755
+ return;
756
+ }
757
+
758
+ global $wpdb;
759
+
760
+ $tables = [
761
+ 'revslider_css',
762
+ 'revslider_layer_animations',
763
+ 'revslider_navigations',
764
+ 'revslider_sliders',
765
+ 'revslider_slides',
766
+ 'revslider_static_slides',
767
+ ];
768
+
769
+ // Truncate tables.
770
+ foreach ( $tables as $table ) {
771
+ $wpdb->query( "TRUNCATE TABLE {$wpdb->prefix}{$table}" );
772
+ }
773
+
774
+ // Import sliders.
775
+ foreach ( $sliders as $slide ) {
776
+ /**
777
+ * Start import slider.
778
+ *
779
+ * @param boolean Update animation.
780
+ * @param boolean Deprecated static param.
781
+ * @param mixed Slider file path.
782
+ * @param boolean Template slide.
783
+ * @param boolean Single slide.
784
+ * @param boolean Update navigation.
785
+ */
786
+ $revslider->importSliderFromPost( true, true, $slide, false, false, true );
787
+ }
788
+ }
789
+
790
+ /**
791
+ * Import theme content via Server-Sent Events request.
792
+ *
793
+ *
794
+ * @throws Exception If template data is empty.
795
+ * @throws Exception If preliminary data is empty.
796
+ */
797
+ public function import_theme_content_sse() {
798
+ try {
799
+ /*
800
+ * Filter data input from GET method. Eventsource doesn't allow us to use
801
+ * POST method.
802
+ */
803
+ $template_name = '';
804
+ if ( ! empty( $_GET['template_name'] ) ) {
805
+ // WPCS: XSS ok, CSRF ok.
806
+ $template_name = sanitize_text_field( $_GET['template_name'] );
807
+ }
808
+
809
+ $template_id = '';
810
+ if ( ! empty( $_GET['template_id'] ) ) {
811
+ // WPCS: XSS ok, CSRF ok.
812
+ $template_id = sanitize_text_field( $_GET['template_id'] );
813
+ }
814
+
815
+ $fetch_attachments = 'false';
816
+ if ( ! empty( $_GET['fetch_attachments'] ) ) {
817
+ // WPCS: XSS ok, CSRF ok.
818
+ $fetch_attachments = sanitize_text_field( $_GET['fetch_attachments'] );
819
+ } elseif ( ! empty( $_GET['import_media'] ) ) {
820
+ $fetch_attachments = sanitize_text_field( $_GET['import_media'] );
821
+ }
822
+
823
+ $partial_import = false;
824
+ if ( ! empty( $_GET['partial_import'] ) ) {
825
+ // phpcs:ignore
826
+ $partial_import = filter_var( $_GET['partial_import'], FILTER_VALIDATE_BOOLEAN );
827
+ }
828
+
829
+ // Include wordpress-importer class.
830
+ JupiterX_Control_Panel_Helpers::include_wordpress_importer();
831
+ $this->reinitialize_data_sse( $template_name, $template_id );
832
+
833
+ // Set importer options as an array.
834
+ $options = array(
835
+ 'fetch_attachments' => filter_var( $fetch_attachments, FILTER_VALIDATE_BOOLEAN ),
836
+ 'default_author' => get_current_user_id(),
837
+ );
838
+
839
+ // Create new instance for Importer.
840
+ $importer = new JupiterX_Importer( $options, $partial_import );
841
+ $logger = new JupiterX_Importer_Logger_ServerSentEvents();
842
+ $importer->set_logger( $logger );
843
+
844
+ // Get preliminary information.
845
+ $file = $this->getAssetsAddress( 'template_content_path', $this->getTemplateName() );
846
+ $pre_data = $importer->get_preliminary_information( $file );
847
+ if ( is_wp_error( $pre_data ) ) {
848
+ throw new Exception( $pre_data->get_error_message() );
849
+ }
850
+
851
+ // @codingStandardsIgnoreStart
852
+ // Turn off PHP output compression, allow us to print the log.
853
+ $previous = error_reporting(error_reporting() ^ E_WARNING);
854
+
855
+ // Configuration disabled for theme check plugin.
856
+ // ini_set('output_buffering', 'off');
857
+ // ini_set('zlib.output_compression', false);
858
+
859
+ error_reporting($previous);
860
+ // @codingStandardsIgnoreEnd
861
+
862
+ if ( $GLOBALS['is_nginx'] ) {
863
+ // Setting this header instructs Nginx to disable fastcgi_buffering
864
+ // and disable gzip for this request.
865
+ header( 'X-Accel-Buffering: no' );
866
+ header( 'Content-Encoding: none' );
867
+ }
868
+
869
+ // Start the event stream here to record all the logs.
870
+ header( 'Content-Type: text/event-stream' );
871
+ header( 'Cache-Control: no-cache' );
872
+
873
+ // Time to run the import!
874
+ set_time_limit( 0 );
875
+
876
+ // Ensure we're not buffered.
877
+ wp_ob_end_flush_all();
878
+ flush();
879
+
880
+ // Run import process.
881
+ $process = $importer->import( $file );
882
+
883
+ // Setup complete response.
884
+ $complete = array(
885
+ 'status' => true, // The process is complete no matter success or not.
886
+ 'error' => false, // Message error if any.
887
+ 'data' => null, // Compatibility with current Ajax.
888
+ 'message' => 'Template contents were imported.',
889
+ );
890
+
891
+ // Check if the request is error, then set the message.
892
+ if ( is_wp_error( $process ) ) {
893
+ $complete['error'] = $process->get_error_message();
894
+ }
895
+
896
+ $this->message_sse( $complete );
897
+ exit;
898
+
899
+ } catch ( Exception $e ) {
900
+ $this->message_sse( $e->getMessage(), true );
901
+ exit;
902
+ }
903
+ }
904
+
905
+ /**
906
+ * Get settings.json data.
907
+ *
908
+ */
909
+ public function getSettingsData( $template_name ) {
910
+
911
+ $this->setTemplateName( $template_name );
912
+ $settings_url = $this->getAssetsAddress( 'settings_url', $this->getTemplateName() );
913
+ $settings_path = $this->getAssetsAddress( 'settings_path', $this->getTemplateName() );
914
+ $response = JupiterX_Control_Panel_Helpers::getFileBody( $settings_url, $settings_path );
915
+
916
+ return json_decode( $response, true );
917
+ }
918
+
919
+ /**
920
+ * Send a Server-Sent Events message.
921
+ *
922
+ *
923
+ * @param mixed $message Data to be JSON-encoded and sent in the message.
924
+ * @param boolean $need_header Send response along with the header.
925
+ */
926
+ public function message_sse( $message, $need_header = false ) {
927
+ // Add header to start event stream only if needed.
928
+ if ( $need_header ) {
929
+ // Start the event stream.
930
+ header( 'Content-Type: text/event-stream' );
931
+ header( 'Cache-Control: no-cache' );
932
+ }
933
+
934
+ // Convert any message data as an array.
935
+ if ( ! is_array( $message ) ) {
936
+ $message = array(
937
+ 'message' => $message,
938
+ );
939
+ }
940
+
941
+ // Set message event and pass the data.
942
+ echo "event: message\n";
943
+ echo 'data: ' . wp_json_encode( $message ) . "\n\n";
944
+
945
+ flush();
946
+ }
947
+
948
+ public function importThemeContent( $template_name, $fetch_attachments = false, $partial_import = false ) {
949
+ try {
950
+
951
+ // Include wordpress-importer class.
952
+ JupiterX_Control_Panel_Helpers::include_wordpress_importer();
953
+ $this->reinitializeData( $template_name );
954
+ // Set importer options as an array.
955
+ $options = array(
956
+ 'fetch_attachments' => filter_var( $fetch_attachments, FILTER_VALIDATE_BOOLEAN ),
957
+ 'default_author' => get_current_user_id(),
958
+ );
959
+
960
+ // Create new instance for Importer.
961
+ $importer = new JupiterX_WXR_Importer( $options, $partial_import );
962
+ $logger = new JupiterX_Importer_Logger_ServerSentEvents();
963
+ $importer->set_logger( $logger );
964
+
965
+ // Get preliminary information.
966
+ $file = $this->getAssetsAddress( 'template_content_path', $this->getTemplateName() );
967
+ $data = $importer->get_preliminary_information( $file );
968
+ if ( is_wp_error( $data ) ) {
969
+ $this->message( 'Error in parsing theme_content.xml!', false );
970
+ return false;
971
+ }
972
+
973
+ // Time to run the import!
974
+ set_time_limit( 0 );
975
+
976
+ // Run import process.
977
+ ob_start();
978
+ $importer->import( $file );
979
+ ob_end_clean();
980
+
981
+ $this->message( 'Template contents were imported.', true );
982
+ return true;
983
+
984
+ } catch ( Exception $e ) {
985
+ $this->message( $e->getMessage(), false );
986
+ return false;
987
+ }
988
+ }
989
+ public function importMenuLocations( $template_name ) {
990
+ try {
991
+ $settings = $this->getSettingsData( $template_name );
992
+
993
+ $nav_menus = wp_get_nav_menus();
994
+
995
+ if ( ! isset( $settings['options']['jupiterx_menu_locations'] ) || empty( $settings['options']['jupiterx_menu_locations'] ) || empty( $nav_menus ) ) {
996
+ $this->message( 'There were no menu locations to import.', true );
997
+ }
998
+
999
+ $menu_locations = $settings['options']['jupiterx_menu_locations'];
1000
+
1001
+ $locations = [];
1002
+
1003
+ foreach ( $nav_menus as $menu ) {
1004
+ if ( in_array( $menu->name, $menu_locations, true ) ) {
1005
+ $location_key = array_search( $menu->name, $menu_locations, true );
1006
+ $locations[ $location_key ] = $menu->term_id;
1007
+ }
1008
+ }
1009
+
1010
+ set_theme_mod( 'nav_menu_locations', $locations );
1011
+
1012
+ $this->message( 'Navigation locations is configured.', true, [ $locations ] );
1013
+
1014
+ return true;
1015
+ } catch ( Exception $e ) {
1016
+ $this->message( $e->getMessage(), false );
1017
+
1018
+ return false;
1019
+ } // End try().
1020
+ }
1021
+
1022
+ public function setUpPages( $template_name ) {
1023
+ try {
1024
+ $package_data = $this->getSettingsData( $template_name );
1025
+
1026
+ // Set homepage.
1027
+ if(isset($package_data['options']['page_on_front'])) {
1028
+ $homepage_title = $package_data['options']['page_on_front'];
1029
+ if ( ! empty( $homepage_title ) ) {
1030
+ $homepage = get_page_by_title( $homepage_title );
1031
+ }
1032
+ if ( ! empty( $homepage->ID ) ) {
1033
+ update_option( 'page_on_front', $homepage->ID );
1034
+ update_option( 'show_on_front', 'page' );
1035
+ }
1036
+ }
1037
+
1038
+ // Set shop page.
1039
+ if(isset($package_data['options']['woocommerce_shop_page_id'])) {
1040
+ $shop_title = $package_data['options']['woocommerce_shop_page_id'];
1041
+ if ( ! empty( $shop_title ) ) {
1042
+ $shop_page = get_page_by_title( $shop_title );
1043
+ }
1044
+ if ( ! empty( $shop_page->ID ) ) {
1045
+ update_option( 'woocommerce_shop_page_id', $shop_page->ID );
1046
+ }
1047
+ }
1048
+
1049
+ // Set cart page.
1050
+ if(isset($package_data['options']['woocommerce_cart_page_id'])) {
1051
+ $cart_title = $package_data['options']['woocommerce_cart_page_id'];
1052
+ if ( ! empty( $cart_title ) ) {
1053
+ $cart_page = get_page_by_title( $cart_title );
1054
+ }
1055
+ if ( ! empty( $cart_page->ID ) ) {
1056
+ update_option( 'woocommerce_cart_page_id', $cart_page->ID );
1057
+ }
1058
+ }
1059
+
1060
+ // Set Checkout page.
1061
+ if(isset($package_data['options']['woocommerce_checkout_page_id'])) {
1062
+ $checkout_title = $package_data['options']['woocommerce_checkout_page_id'];
1063
+ if ( ! empty( $checkout_title ) ) {
1064
+ $checkout_page = get_page_by_title( $checkout_title );
1065
+ }
1066
+ if ( ! empty( $checkout_page->ID ) ) {
1067
+ update_option( 'woocommerce_checkout_page_id', $checkout_page->ID );
1068
+ }
1069
+ }
1070
+
1071
+ // Set My Account page.
1072
+ if ( isset( $package_data['options']['woocommerce_myaccount_page_id'] ) ) {
1073
+ $myaccount_title = $package_data['options']['woocommerce_myaccount_page_id'];
1074
+
1075
+ if ( ! empty( $myaccount_title ) ) {
1076
+ $myaccount_page = get_page_by_title( $myaccount_title );
1077
+ }
1078
+
1079
+ if ( ! empty( $myaccount_page->ID ) ) {
1080
+ update_option( 'woocommerce_myaccount_page_id', $myaccount_page->ID );
1081
+ }
1082
+ }
1083
+
1084
+ $this->message( 'pages are configured.', true );
1085
+
1086
+ return true;
1087
+ } catch ( Exception $e ) {
1088
+ $this->message( $e->getMessage(), false );
1089
+
1090
+ return false;
1091
+ } // End try().
1092
+ }
1093
+ /**
1094
+ * Import Settings options.
1095
+ *
1096
+ * @param string $template_name Name of template.
1097
+ * @return mixed
1098
+ * @throws Exception When Settings file is empty.
1099
+ */
1100
+ public function import_settings( $template_name ) {
1101
+ try {
1102
+ $this->reinitializeData( $template_name );
1103
+ $data = $this->getSettingsData( $template_name );
1104
+
1105
+ // Data checks.
1106
+ if ( 'array' != gettype( $data ) ) {
1107
+ throw new Exception(
1108
+ sprintf( esc_html__( 'Error importing settings! Please check that you uploaded (%s) a settings export file.', 'jupiterx-core' ), $file_name )
1109
+ );
1110
+ }
1111
+ if ( ! isset( $data['template'] ) || ! isset( $data['mods'] ) ) {
1112
+ throw new Exception(
1113
+ sprintf( esc_html__( 'Error importing settings! template Please check that you uploaded (%s) a settings export file.', 'jupiterx-core' ), $file_name )
1114
+ );
1115
+ }
1116
+
1117
+ // Clear theme mods.
1118
+ remove_theme_mods();
1119
+
1120
+ $data['mods'] = JupiterX_Control_Panel_Export_Import::_import_images( $data['mods'] );
1121
+
1122
+ // If wp_css is set then import it.
1123
+ if ( function_exists( 'wp_update_custom_css_post' ) && isset( $data['wp_css'] ) && '' !== $data['wp_css'] ) {
1124
+ wp_update_custom_css_post( $data['wp_css'] );
1125
+ }
1126
+
1127
+ // Exclude nav menu locations in this process.
1128
+ if ( isset( $data['mods']['nav_menu_locations'] ) ) {
1129
+ unset( $data['mods']['nav_menu_locations'] );
1130
+ }
1131
+
1132
+ // Loop through the mods.
1133
+ foreach ( $data['mods'] as $key => $val ) {
1134
+ set_theme_mod( $key, $val );
1135
+ }
1136
+
1137
+ // Set Jet Menu options.
1138
+ if ( isset( $data['options']['jet_menu_options'] ) ) {
1139
+ update_option( 'jet_menu_options', $data['options']['jet_menu_options'] );
1140
+ }
1141
+
1142
+ // Set Jet Popup options.
1143
+ if ( isset( $data['options']['jet_popup_conditions'] ) ) {
1144
+ update_option( 'jet_popup_conditions', $data['options']['jet_popup_conditions'] );
1145
+ }
1146
+
1147
+ // Set Jupiter X custom siderbars option.
1148
+ if ( isset( $data['options']['jupiterx_custom_sidebars'] ) ) {
1149
+ jupiterx_update_option( 'custom_sidebars', $data['options']['jupiterx_custom_sidebars'] );
1150
+ }
1151
+
1152
+ // Set extra options.
1153
+ if ( ! empty( $data['options']['extra'] ) ) {
1154
+ foreach( $data['options']['extra'] as $key => $val ) {
1155
+ if ( 'elementor_cpt_support' === $key && ! is_array( $val ) ) {
1156
+ continue;
1157
+ }
1158
+
1159
+ if ( 'elementor_global_image_lightbox' === $key && is_bool( $val ) ) {
1160
+ continue;
1161
+ }
1162
+
1163
+ update_option( $key, $val );
1164
+ }
1165
+ }
1166
+
1167
+ $this->message( 'Settings are imported.', true );
1168
+ return true;
1169
+
1170
+ } catch ( Exception $e ) {
1171
+ $this->message( $e->getMessage(), false );
1172
+
1173
+ return false;
1174
+ }
1175
+ }
1176
+ public function importThemeWidgets( $template_name ) {
1177
+ $this->reinitializeData( $template_name );
1178
+ try {
1179
+ $data = JupiterX_Control_Panel_Helpers::getFileBody(
1180
+ $this->getAssetsAddress( 'widget_url', $this->getTemplateName() ),
1181
+ $this->getAssetsAddress( 'widget_path', $this->getTemplateName() )
1182
+ );
1183
+ $data = json_decode( $data, true );
1184
+ $this->import_widget_data( $data );
1185
+
1186
+ $this->message( 'Widgets are imported.', true );
1187
+
1188
+ return true;
1189
+ } catch ( Exception $e ) {
1190
+ $this->message( $e->getMessage(), false );
1191
+
1192
+ return false;
1193
+ }
1194
+ }
1195
+ public function finalizeImporting( $template_name, $partial_import = false ) {
1196
+ $this->reinitializeData( $template_name );
1197
+ $template_name = sanitize_title( $template_name );
1198
+ // Check if it had something to import.
1199
+ try {
1200
+
1201
+ if ( ! $this->cleanInstallFiles( $template_name ) ) {
1202
+ throw new Exception( 'Can not remove installation source files' );
1203
+ return false;
1204
+ }
1205
+
1206
+ if ( ! $partial_import ) {
1207
+ jupiterx_update_option( 'template_installed', $this->getTemplateName() );
1208
+ jupiterx_update_option( 'template_installed_id', $this->getTemplateID() );
1209
+ }
1210
+
1211
+ jupiterx_core_flush_cache();
1212
+ flush_rewrite_rules();
1213
+
1214
+ $this->message( 'Data imported successfully', true );
1215
+ return true;
1216
+
1217
+ } catch ( Exception $e ) {
1218
+ $this->message( $e->getMessage(), false );
1219
+
1220
+ return false;
1221
+ }
1222
+ }
1223
+
1224
+ /**
1225
+ * Set default value Raven nav menus recursively.
1226
+ *
1227
+ * @access public
1228
+ * @since 1.4.0
1229
+ *
1230
+ * @param array $element Template element.
1231
+ * @param array $list Raven menu default list.
1232
+ * @return void
1233
+ */
1234
+ public function set_default_raven_menu_list( &$element, $list )
1235
+ {
1236
+ if (
1237
+ isset( $element['elType'] ) &&
1238
+ $element['elType'] === 'widget' &&
1239
+ isset( $element['widgetType'] ) &&
1240
+ $element['widgetType'] === 'raven-nav-menu' &&
1241
+ ! isset( $element['settings']['list'] )
1242
+ ) {
1243
+ $element['settings']['list'] = $list;
1244
+ return;
1245
+ }
1246
+
1247
+ foreach( $element['elements'] as &$inner_element ) {
1248
+ $this->set_default_raven_menu_list( $inner_element, $list );
1249
+ }
1250
+ }
1251
+
1252
+ /**
1253
+ * Clean install files
1254
+ *
1255
+ * @param $template_name
1256
+ * @author Artbees Team
1257
+ * @return bool
1258
+ */
1259
+ private function cleanInstallFiles( $template_name ) {
1260
+ $jupiterx_filesystem = new JupiterX_Filesystem(
1261
+ array(
1262
+ 'context' => $this->getBasePath(),
1263
+ )
1264
+ );
1265
+
1266
+ // Deleting Template Source Folder.
1267
+ $template_path = $this->getBasePath() . sanitize_title( $template_name );
1268
+ if ( $jupiterx_filesystem->exists( $template_path ) && $jupiterx_filesystem->is_dir( $template_path ) && ! $jupiterx_filesystem->delete( $template_path, true ) ) {
1269
+ return false;
1270
+ }
1271
+
1272
+ // Deleting Template Source Zip file.
1273
+ $template_zip = $template_path . '.zip';
1274
+ if ( $jupiterx_filesystem->exists( $template_zip ) && $jupiterx_filesystem->is_file( $template_zip ) && ! $jupiterx_filesystem->delete( $template_zip ) ) {
1275
+ return false;
1276
+ }
1277
+
1278
+ return true;
1279
+ }
1280
+ public function uninstallTemplate() {
1281
+ try {
1282
+ $tables = array(
1283
+ 'comments',
1284
+ 'commentmeta',
1285
+ 'links',
1286
+ 'options',
1287
+ 'postmeta',
1288
+ 'posts',
1289
+ 'term_relationships',
1290
+ 'termmeta',
1291
+ 'terms',
1292
+ 'term_taxonomy',
1293
+ );
1294
+
1295
+ $db_manager = new JupiterX_Control_Panel_Database_Manager();
1296
+
1297
+ $db_manager->backup_media_records();
1298
+
1299
+ $reset = $this->resetWordpressDatabase( $tables, array(), true );
1300
+
1301
+ $db_manager->restore_media_records();
1302
+
1303
+ if ( ! $reset ) {
1304
+ throw new Exception( 'Failed to uninstall template. Please try again.' );
1305
+ }
1306
+
1307
+ $this->message( 'Template uninstall success.', true );
1308
+ return true;
1309
+ } catch ( Exception $e ) {
1310
+ $this->message( $e->getMessage(), false );
1311
+
1312
+ return false;
1313
+ }
1314
+ }
1315
+ public function availableWidgets() {
1316
+ global $wp_registered_widget_controls;
1317
+ $widget_controls = $wp_registered_widget_controls;
1318
+ $available_widgets = array();
1319
+ foreach ( $widget_controls as $widget ) {
1320
+ if ( ! empty( $widget['id_base'] ) && ! isset( $available_widgets[ $widget['id_base'] ] ) ) {
1321
+ $available_widgets[ $widget['id_base'] ]['id_base'] = $widget['id_base'];
1322
+ $available_widgets[ $widget['id_base'] ]['name'] = $widget['name'];
1323
+ }
1324
+ }
1325
+
1326
+ return apply_filters( 'available_widgets', $available_widgets );
1327
+ }
1328
+
1329
+ /**
1330
+ * Import widgets' data.
1331
+ *
1332
+ * @throws Exception If can not read widget data.
1333
+ *
1334
+ * @param array $data Widgets' data.
1335
+ * @return boolean
1336
+ */
1337
+ public function import_widget_data( $data ) {
1338
+ global $wp_registered_sidebars;
1339
+
1340
+ $available_widgets = $this->availableWidgets();
1341
+ $widget_instances = array();
1342
+ foreach ( $available_widgets as $widget_data ) {
1343
+ $widget_instances[ $widget_data['id_base'] ] = get_option( 'widget_' . $widget_data['id_base'] );
1344
+ }
1345
+ if ( empty( $data ) || ! is_array( $data ) ) {
1346
+ throw new Exception( 'Widget data could not be read. Please try a different file.' );
1347
+ }
1348
+ $results = array();
1349
+ foreach ( $data as $sidebar_id => $widgets ) {
1350
+ if ( 'wp_inactive_widgets' == $sidebar_id ) {
1351
+ continue;
1352
+ }
1353
+ if ( isset( $wp_registered_sidebars[ $sidebar_id ] ) ) {
1354
+ $sidebar_available = true;
1355
+ $use_sidebar_id = $sidebar_id;
1356
+ $sidebar_message_type = 'success';
1357
+ $sidebar_message = '';
1358
+ } else {
1359
+ $sidebar_available = false;
1360
+ $use_sidebar_id = 'wp_inactive_widgets';
1361
+ $sidebar_message_type = 'error';
1362
+ $sidebar_message = 'Sidebar does not exist in theme (using Inactive)';
1363
+ }
1364
+ $results[ $sidebar_id ]['name'] = ! empty( $wp_registered_sidebars[ $sidebar_id ]['name'] ) ? $wp_registered_sidebars[ $sidebar_id ]['name'] : $sidebar_id;
1365
+ $results[ $sidebar_id ]['message_type'] = $sidebar_message_type;
1366
+ $results[ $sidebar_id ]['message'] = $sidebar_message;
1367
+ $results[ $sidebar_id ]['widgets'] = array();
1368
+ foreach ( $widgets as $widget_instance_id => $widget ) {
1369
+ $fail = false;
1370
+ $id_base = preg_replace( '/-[0-9]+$/', '', $widget_instance_id );
1371
+ $instance_id_number = str_replace( $id_base . '-', '', $widget_instance_id );
1372
+ if ( ! $fail && ! isset( $available_widgets[ $id_base ] ) ) {
1373
+ $fail = true;
1374
+ $widget_message_type = 'error';
1375
+ $widget_message = 'Site does not support widget';
1376
+ }
1377
+ $widget = apply_filters( 'jupiterx_widget_settings', $widget );
1378
+ if ( ! $fail && isset( $widget_instances[ $id_base ] ) ) {
1379
+ $sidebars_widgets = get_option( 'sidebars_widgets' );
1380
+ $sidebar_widgets = isset( $sidebars_widgets[ $use_sidebar_id ] ) ? $sidebars_widgets[ $use_sidebar_id ] : array();
1381
+ $single_widget_instances = ! empty( $widget_instances[ $id_base ] ) ? $widget_instances[ $id_base ] : array();
1382
+ foreach ( $single_widget_instances as $check_id => $check_widget ) {
1383
+ if ( in_array( "$id_base-$check_id", $sidebar_widgets ) && (array) $widget == $check_widget ) {
1384
+ $fail = true;
1385
+ $widget_message_type = 'warning';
1386
+ $widget_message = 'Widget already exists';
1387
+ break;
1388
+ }
1389
+ }
1390
+ }
1391
+ if ( ! $fail ) {
1392
+ $single_widget_instances = get_option( 'widget_' . $id_base );
1393
+ $single_widget_instances = ! empty( $single_widget_instances ) ? $single_widget_instances : array(
1394
+ '_multiwidget' => 1,
1395
+ );
1396
+ $single_widget_instances[] = (array) $widget;
1397
+ end( $single_widget_instances );
1398
+ $new_instance_id_number = key( $single_widget_instances );
1399
+ if ( '0' === strval( $new_instance_id_number ) ) {
1400
+ $new_instance_id_number = 1;
1401
+ $single_widget_instances[ $new_instance_id_number ] = $single_widget_instances[0];
1402
+ unset( $single_widget_instances[0] );
1403
+ }
1404
+ if ( isset( $single_widget_instances['_multiwidget'] ) ) {
1405
+ $multiwidget = $single_widget_instances['_multiwidget'];
1406
+ unset( $single_widget_instances['_multiwidget'] );
1407
+ $single_widget_instances['_multiwidget'] = $multiwidget;
1408
+ }
1409
+ update_option( 'widget_' . $id_base, $single_widget_instances );
1410
+ $sidebars_widgets = get_option( 'sidebars_widgets' );
1411
+ $new_instance_id = $id_base . '-' . $new_instance_id_number;
1412
+ $sidebars_widgets[ $use_sidebar_id ][] = $new_instance_id;
1413
+ update_option( 'sidebars_widgets', $sidebars_widgets );
1414
+ if ( $sidebar_available ) {
1415
+ $widget_message_type = 'success';
1416
+ $widget_message = 'Imported';
1417
+ } else {
1418
+ $widget_message_type = 'warning';
1419
+ $widget_message = 'Imported to Inactive';
1420
+ }
1421
+ }
1422
+ $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['name'] = isset( $available_widgets[ $id_base ]['name'] ) ? $available_widgets[ $id_base ]['name'] : $id_base;
1423
+ $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['title'] = ! empty( $widget->title ) ? $widget->title : '';
1424
+ $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message_type'] = $widget_message_type;
1425
+ $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message'] = $widget_message;
1426
+ } // End foreach().
1427
+ } // End foreach().
1428
+
1429
+ return true;
1430
+ }
1431
+ /**
1432
+ * It will empty all or custom database tables of WordPress and install WordPress again if needed.
1433
+ *
1434
+ * @param array $table which table need to be empty ? example : array('user' , 'usermeta')
1435
+ * table names should be without any prefix
1436
+ * @param bool $install_needed if WordPress need to be installed after reseting database
1437
+ * it should be false or true
1438
+ *
1439
+ * @return bool return if everything looks good and throwing errors on problems
1440
+ */
1441
+ public function resetWordpressDatabase( $tables = array(), $exclude_tables = array(), $install_needed = false ) {
1442
+ global $wpdb, $reactivate_wp_reset_additional, $current_user;
1443
+
1444
+ if ( $install_needed ) {
1445
+
1446
+ require_once ABSPATH . '/wp-admin/includes/upgrade.php';
1447
+
1448
+ $new_options = array();
1449
+
1450
+ $old_options = array(
1451
+ 'active_plugins',
1452
+ );
1453
+
1454
+ $blogname = get_option( 'blogname' );
1455
+ $blog_public = get_option( 'blog_public' );
1456
+ $site_url = site_url();
1457
+ $current_theme = wp_get_theme();
1458
+
1459
+ foreach ( $old_options as $old_option_key ) {
1460
+ $new_options[ $old_option_key ] = get_option( $old_option_key );
1461
+ }
1462
+
1463
+ $keep_options = [
1464
+ 'api_key',
1465
+ 'api_access_token',
1466
+ 'envato_purchase_code_5177775',
1467
+ 'setup_wizard_current_page',
1468
+ 'setup_wizard_hide_notice',
1469
+ ];
1470
+
1471
+ $jupiterx_options = get_option( 'jupiterx', [] );
1472
+
1473
+ $new_options['jupiterx'] = array_intersect_key( $jupiterx_options, array_flip( $keep_options ) );
1474
+
1475
+ if ( 'admin' != $current_user->user_login ) {
1476
+ $user = get_user_by( 'login', 'admin' );
1477
+ }
1478
+
1479
+ if ( empty( $user->user_level ) || $user->user_level < 10 ) {
1480
+ $user = $current_user;
1481
+ $session_tokens = get_user_meta( $user->ID, 'session_tokens', true );
1482
+ }
1483
+
1484
+ // Check if we need all the tables or specific table.
1485
+ if ( is_array( $tables ) && count( $tables ) > 0 ) {
1486
+ array_walk(
1487
+ $tables, function ( &$value, $key ) use ( $wpdb ) {
1488
+ $value = $wpdb->prefix . $value;
1489
+ }
1490
+ );
1491
+ } else {
1492
+ $prefix = str_replace( '_', '\_', $wpdb->prefix );
1493
+ $tables = $wpdb->get_col( "SHOW TABLES LIKE '{$prefix}%'" );
1494
+ }
1495
+
1496
+ // exclude table if its valued.
1497
+ if ( is_array( $exclude_tables ) && count( $exclude_tables ) > 0 ) {
1498
+ array_walk(
1499
+ $exclude_tables, function ( &$ex_value, $key ) use ( $wpdb ) {
1500
+ $ex_value = $wpdb->prefix . $ex_value;
1501
+ }
1502
+ );
1503
+ $tables = array_diff( $tables, $exclude_tables );
1504
+ }
1505
+ // Removing data from WordPress tables.
1506
+ foreach ( $tables as $table ) {
1507
+ $wpdb->query( "DROP TABLE $table" );
1508
+ }
1509
+
1510
+ $result = wp_install( $blogname, $user->user_login, $user->user_email, $blog_public );
1511
+ switch_theme( $current_theme->get_stylesheet() );
1512
+
1513
+ /* GoDaddy Patch => GD have a problem of cleaning siteurl option value after reseting database */
1514
+ if ( site_url() == '' ) {
1515
+ $wpdb->update(
1516
+ $wpdb->options, array(
1517
+ 'option_value' => $site_url,
1518
+ ),array(
1519
+ 'option_name' => 'siteurl',
1520
+ )
1521
+ );
1522
+ }
1523
+ extract( $result, EXTR_SKIP );
1524
+
1525
+ $query = $wpdb->prepare( "UPDATE $wpdb->users SET user_pass = %s, user_activation_key = '' WHERE ID = %d", $user->user_pass, $user_id );
1526
+ $wpdb->query( $query );
1527
+
1528
+ $get_user_meta = function_exists( 'get_user_meta' ) ? 'get_user_meta' : 'get_usermeta';
1529
+ $update_user_meta = function_exists( 'update_user_meta' ) ? 'update_user_meta' : 'update_usermeta';
1530
+
1531
+ if ( $get_user_meta($user_id, 'default_password_nag') ) {
1532
+ $update_user_meta($user_id, 'default_password_nag', false);
1533
+ }
1534
+
1535
+ if ( $get_user_meta($user_id, $wpdb->prefix . 'default_password_nag') ) {
1536
+ $update_user_meta($user_id, $wpdb->prefix . 'default_password_nag', false);
1537
+ }
1538
+
1539
+ wp_clear_auth_cookie();
1540
+ wp_set_current_user( $user_id, $user->user_login );
1541
+ if ( $session_tokens ) {
1542
+ delete_user_meta( $user->ID, 'session_tokens' );
1543
+ update_user_meta( $user->ID, 'session_tokens', $session_tokens );
1544
+ }
1545
+
1546
+ wp_set_auth_cookie( $user_id, true );
1547
+ do_action( 'wp_login', $user->user_login, $user );
1548
+
1549
+ if ( $new_options ) {
1550
+ foreach ( $new_options as $key => $value ) {
1551
+ update_option( $key, $value );
1552
+ }
1553
+ }
1554
+ return true;
1555
+ } else {
1556
+
1557
+ $jupiterx_temp_installed = jupiterx_get_option( 'template_installed' );
1558
+
1559
+ if ( $jupiterx_temp_installed ) {
1560
+
1561
+ // Delete option data for page_on_front.
1562
+ if ( get_option( 'page_on_front' ) ) {
1563
+ delete_option( 'page_on_front' );
1564
+ }
1565
+
1566
+ // Delete option data for show_on_front.
1567
+ if ( get_option( 'show_on_front' ) ) {
1568
+ delete_option( 'show_on_front' );
1569
+ }
1570
+
1571
+ // Delete option data for woocommerce_shop_page_id.
1572
+ if ( get_option( 'woocommerce_shop_page_id' ) ) {
1573
+ delete_option( 'woocommerce_shop_page_id' );
1574
+ }
1575
+
1576
+ // Delete widgets.
1577
+ $wpdb->query( "DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE '%widget%';" );
1578
+
1579
+ }// End if().
1580
+
1581
+ // truncate tables.
1582
+ foreach ( $tables as $table ) {
1583
+ $wpdb->query( "TRUNCATE TABLE {$wpdb->prefix}{$table}" );
1584
+ }
1585
+
1586
+ return true;
1587
+ }// End if().
1588
+ }
1589
+
1590
+ private function setResponseForApiTemplateList( $url, $configs ) {
1591
+ $headers = array(
1592
+ 'theme-name' => $this->getThemeName(),
1593
+ 'pagination-start' => isset( $configs['pagination_start'] ) ? $configs['pagination_start'] : 0,
1594
+ 'pagination-count' => isset( $configs['pagination_count'] ) ? $configs['pagination_count'] : 1,
1595
+ );
1596
+
1597
+ if ( isset( $configs['template_id'] ) && is_null( $configs['template_id'] ) == false ) {
1598
+ $headers['template-id'] = $configs['template_id'];
1599
+ }
1600
+
1601
+ if ( isset( $configs['template_name'] ) && is_null( $configs['template_name'] ) == false ) {
1602
+ $headers['template-name'] = $configs['template_name'];
1603
+ }
1604
+
1605
+ if ( isset( $configs['template_category'] ) && is_null( $configs['template_category'] ) == false ) {
1606
+ $headers['template-category'] = $configs['template_category'];
1607
+ }
1608
+
1609
+ return $this->wp_remote_get( $url, $headers );
1610
+ }
1611
+ /**
1612
+ * This method is resposible to get template list from api and create download link if template need to extract from WordPress repo.
1613
+ *
1614
+ * @param str $template_name if template name is valued it will return array of information about the this template.
1615
+ * but if template is valued as false it will return all templates information
1616
+ *
1617
+ * @return array will return array of templates
1618
+ */
1619
+ public function getTemplateListFromApi( $configs ) {
1620
+ if ( ! is_array( $configs ) ) {
1621
+ $configs = array();
1622
+ }
1623
+ $url = $this->getApiURL() . 'theme/templates';
1624
+ $response = $this->setResponseForApiTemplateList( $url, $configs );
1625
+ if ( false == isset( $response->bool ) || false == $response->bool ) {
1626
+ throw new Exception( $response->message );
1627
+ }
1628
+ return $response->data;
1629
+ }
1630
+ public function getTemplateDownloadLink( $template_name = '', $type = 'download' ) {
1631
+ $url = $this->getApiURL() . 'theme/download-template';
1632
+ $response = $this->wp_remote_get( $url, array(
1633
+ 'template-name' => $template_name,
1634
+ 'type' => $type,
1635
+ ) );
1636
+
1637
+ if ( false == isset( $response->bool ) || false == $response->bool ) {
1638
+ throw new Exception( $response->message );
1639
+ }
1640
+
1641
+ /**
1642
+ * Filters the template download url.
1643
+ *
1644
+ * @param string $response->data Download url.
1645
+ */
1646
+ return apply_filters( 'jupiterx_template_download_url', $response->data, $type );
1647
+ }
1648
+
1649
+ /**
1650
+ * Gets psd file download link.
1651
+ *
1652
+ */
1653
+ public function get_template_psd_link() {
1654
+ $template_name = sanitize_text_field( $_POST['template_name'] );
1655
+ try {
1656
+ $response = $this->getTemplateDownloadLink( $template_name . ' jupiterx', 'download-psd' );
1657
+ $this->message(
1658
+ 'Successfull', true, array(
1659
+ 'psd_link' => $response,
1660
+ )
1661
+ );
1662
+ return true;
1663
+ } catch ( Exception $e ) {
1664
+ $this->message( $e->getMessage(), false );
1665
+ return false;
1666
+ } // End try().
1667
+ }
1668
+
1669
+ /**
1670
+ * This method is resposible to get templates categories list from api
1671
+ *
1672
+ * @param str $template_name if template name is valued it will return array of information about the this template.
1673
+ * but if template is valued as false it will return all templates information.
1674
+ *
1675
+ * @return array will return array of plugins.
1676
+ */
1677
+ public function getTemplateCategoryListFromApi() {
1678
+ try {
1679
+ $url = $this->getApiURL() . 'theme/template-categories';
1680
+ $response = $this->wp_remote_get( $url );
1681
+ if ( false == isset( $response->bool ) || false == $response->bool ) {
1682
+ throw new Exception( $response->message );
1683
+ }
1684
+ $this->message( 'Successfull', true, $response->data );
1685
+ return true;
1686
+ } catch ( Exception $e ) {
1687
+ $this->message( $e->getMessage(), false );
1688
+ return false;
1689
+ }
1690
+ }
1691
+ /**
1692
+ * We need to make assets addresses dynamic and fully proccess.
1693
+ * in one method for future development
1694
+ * it will get the type of address and will return full address in string
1695
+ * example :
1696
+ * for (options_url) type , it will return something like this
1697
+ * (http://localhost/jupiter/wp-content/uploads/jupiterx_templates/dia/options.txt).
1698
+ *
1699
+ * For (options_path) type , it will return something like this.
1700
+ * (/usr/apache/www/wp-content/uploads/jupiterx_templates/dia/options.txt)
1701
+ *
1702
+ * @param str $which_one Which address do you need.
1703
+ * @param str $template_name such as.
1704
+ */
1705
+ public function getAssetsAddress( $which_one, $template_name ) {
1706
+ $template_name = sanitize_title( $template_name );
1707
+ switch ( $which_one ) {
1708
+ case 'template_content_url':
1709
+ return $this->getBaseUrl() . $template_name . '/' . $this->getTemplateContentFileName();
1710
+ break;
1711
+ case 'template_content_path':
1712
+ return $this->getBasePath() . $template_name . '/' . $this->getTemplateContentFileName();
1713
+ break;
1714
+ case 'widget_url':
1715
+ return $this->getBaseUrl() . $template_name . '/' . $this->getWidgetFileName();
1716
+ break;
1717
+ case 'widget_path':
1718
+ return $this->getBasePath() . $template_name . '/' . $this->getWidgetFileName();
1719
+ break;
1720
+ case 'settings_url':
1721
+ return $this->getBaseUrl() . $template_name . '/' . $this->get_settings_file_name();
1722
+ break;
1723
+ case 'settings_path':
1724
+ return $this->getBasePath() . $template_name . '/' . $this->get_settings_file_name();
1725
+ break;
1726
+ default:
1727
+ throw new Exception( 'File name you are looking for is not introduced.' );
1728
+
1729
+ return false;
1730
+ break;
1731
+ }
1732
+ }
1733
+
1734
+ public function find_plugin_path( $plugin_slug ) {
1735
+ $plugins = get_plugins();
1736
+ foreach ( $plugins as $plugin_address => $plugin_data ) {
1737
+
1738
+ // Extract slug from address
1739
+ if ( strlen( $plugin_address ) == basename( $plugin_address ) ) {
1740
+ $slug = strtolower( str_replace( '.php', '', $plugin_address ) );
1741
+ } else {
1742
+ $slug = strtolower( str_replace( '/' . basename( $plugin_address ), '', $plugin_address ) );
1743
+ }
1744
+ // Check if slug exists
1745
+ if ( strtolower( $plugin_slug ) == $slug ) {
1746
+ return $plugin_address;
1747
+ }
1748
+ }
1749
+ return false;
1750
+ }
1751
+
1752
+ public function importLayerSliderContent( $content_path ) {
1753
+ global $wpdb;
1754
+ $ls_path = $this->find_plugin_path( $this->layer_slider_slug );
1755
+
1756
+ if ( $ls_path == false ) {
1757
+ throw new Exception( 'LayerSlider is not installed , install it first' );
1758
+ return false;
1759
+ }
1760
+
1761
+ if ( defined( LS_PLUGIN_VERSION ) ) {
1762
+ throw new Exception( 'LayerSlider is installed but not activated , activate it first' );
1763
+ return false;
1764
+ }
1765
+ // Empty layerslider table first.
1766
+ $table = $wpdb->prefix . 'layerslider';
1767
+ $wpdb->query( "TRUNCATE TABLE $table" );
1768
+
1769
+ // Try to import configs.
1770
+ $ls_plugin_root_path = pathinfo( $plugin->get_plugins_dir() . $ls_path );
1771
+ include $ls_plugin_root_path['dirname'] . '/classes/class.ls.importutil.php';
1772
+ new LS_ImportUtil( $content_path );
1773
+ return true;
1774
+ }
1775
+
1776
+ /**
1777
+ * Import templates's custom tables.
1778
+ *
1779
+ * @since 1.11.0
1780
+ *
1781
+ * @param string $template_name Template name.
1782
+ */
1783
+ public function import_custom_tables( $template_name ) {
1784
+ $this->reinitializeData( $template_name );
1785
+
1786
+ try {
1787
+ $template_name = sanitize_title( $template_name );
1788
+ $import_path = $this->getBasePath() . $template_name;
1789
+ $file = $import_path . '/tables.sql';
1790
+ $db_manager = new JupiterX_Control_Panel_PHP_DB_Manager();
1791
+
1792
+ if ( file_exists( $file ) ) {
1793
+ $import_tables = $db_manager->import_tables( $file );
1794
+
1795
+ if ( $import_tables !== true ) {
1796
+ throw new Exception( $import_tables );
1797
+ }
1798
+ }
1799
+ $this->message( 'Custom tables are imported.', true );
1800
+ } catch ( Exception $e ) {
1801
+ $this->message( $e->getMessage(), false );
1802
+ }
1803
+ }
1804
+
1805
+ /**
1806
+ * Reusable wrapper method for WP remote getter.
1807
+ *
1808
+ * Method only returns response body.
1809
+ */
1810
+ public function wp_remote_get( $url = '', $headers = [] ) {
1811
+ $required_headers = [
1812
+ 'api-key' => jupiterx_get_option( 'api_key' ),
1813
+ 'domain' => esc_url_raw( $_SERVER['SERVER_NAME'] ),
1814
+ ];
1815
+
1816
+ // Combined headers.
1817
+ $headers = array_merge( $headers, $required_headers );
1818
+
1819
+ $response = json_decode( wp_remote_retrieve_body( wp_remote_get( $url, [
1820
+ 'sslverify' => false,
1821
+ 'headers' => $headers,
1822
+ ] ) ) );
1823
+
1824
+ return $response;
1825
+ }
1826
+
1827
+ /**
1828
+ * This method is resposible to manage all the classes messages.
1829
+ */
1830
+ public function message( $message, $status, $data = null ) {
1831
+ $response = [
1832
+ 'message' => jupiterx_logic_message_helper( 'template-management', $message ),
1833
+ 'status' => $status,
1834
+ 'data' => $data,
1835
+ ];
1836
+
1837
+ wp_send_json( $response );
1838
+ }
1839
+ }
1840
+ }
1841
+
1842
+ if ( ! function_exists( 'jupiterx_disable_woocommerce' ) ) {
1843
+ /* Disable woocommerce redirection */
1844
+ add_action( 'admin_init', 'jupiterx_disable_woocommerce', 5 );
1845
+ /**
1846
+ * Disable Woocommerce redirect for template install
1847
+ *
1848
+ */
1849
+ function jupiterx_disable_woocommerce() {
1850
+ delete_transient( '_wc_activation_redirect' );
1851
+ add_filter(
1852
+ 'woocommerce_prevent_automatic_wizard_redirect', function () {
1853
+ return true;
1854
+ }
1855
+ );
1856
+ }
1857
+ }
1858
+
1859
+
1860
+ add_filter(
1861
+ 'pre_transient__wc_activation_redirect', function () {
1862
+ return 0;
1863
+ }
1864
+ );
1865
+
1866
+ add_filter(
1867
+ 'pre_transient__vc_page_welcome_redirect', function () {
1868
+ return 0;
1869
+ }
1870
+ );
1871
+
1872
+ global $abb_phpunit;
1873
+ if ( empty( $abb_phpunit ) || $abb_phpunit == false ) {
1874
+ new JupiterX_Control_Panel_Install_Template();
1875
+ }
includes/control-panel/includes/logic-messages.php CHANGED
@@ -228,7 +228,7 @@ if ( ! function_exists( 'jupiterx_logic_message_helper' ) ) {
228
  'user_msg' => __( '', 'jupiterx-core' ),
229
  ),
230
  array(
231
- 'sys_msg' => 'Database reseted',
232
  'user_msg' => __( '', 'jupiterx-core' ),
233
  ),
234
  array(
228
  'user_msg' => __( '', 'jupiterx-core' ),
229
  ),
230
  array(
231
+ 'sys_msg' => 'Database reset completed',
232
  'user_msg' => __( '', 'jupiterx-core' ),
233
  ),
234
  array(
includes/customizer/api/classes/class-multilingual.php CHANGED
@@ -349,7 +349,7 @@ class CoreCustomizerMultilingual {
349
  public static function add_lang_to_customizer_previewer() {
350
  $languages = self::get_languages_list();
351
 
352
- if ( ! $languages ) {
353
  return;
354
  }
355
 
349
  public static function add_lang_to_customizer_previewer() {
350
  $languages = self::get_languages_list();
351
 
352
+ if ( ! $languages || jupiterx_get( 'kt-woomail-customize' ) ) {
353
  return;
354
  }
355
 
includes/customizer/api/includes/class-templates.php CHANGED
@@ -69,6 +69,7 @@ final class JupiterX_Core_Customizer_Templates {
69
  <div class="jupiterx-fonts-control-preview" data-font-family="{{ data.name }}">
70
  <span class="jupiterx-fonts-control-preview-family">{{{ data.name }}}</span>
71
  <h3 class="jupiterx-fonts-control-preview-sample" style="font-family: {{ data.value || data.name }};"><?php esc_html_e( 'The spectate before us was indeed sublime.', 'jupiterx-core' ); ?></h3>
 
72
  <button class="jupiterx-fonts-control-preview-remove">
73
  <img src="<?php echo esc_url( JupiterX_Customizer_Utils::get_assets_url() ); ?>/img/x-white.svg" />
74
  <span class="screen-reader-text"><?php esc_html_e( 'Remove', 'jupiterx-core' ); ?></span>
@@ -109,6 +110,26 @@ final class JupiterX_Core_Customizer_Templates {
109
  </div>
110
  </div>
111
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  <div class="jupiterx-fonts-control-selector-buttons">
113
  <button class="jupiterx-fonts-control-selector-cancel jupiterx-button jupiterx-button-danger">
114
  <img src="<?php echo esc_url( JupiterX_Customizer_Utils::get_icon_url( 'x' ) ); ?>">
69
  <div class="jupiterx-fonts-control-preview" data-font-family="{{ data.name }}">
70
  <span class="jupiterx-fonts-control-preview-family">{{{ data.name }}}</span>
71
  <h3 class="jupiterx-fonts-control-preview-sample" style="font-family: {{ data.value || data.name }};"><?php esc_html_e( 'The spectate before us was indeed sublime.', 'jupiterx-core' ); ?></h3>
72
+ <span class="jupiterx-fonts-control-preview-subsets">{{ data.subsets ? data.subsets.join(', ') : ''}}</span>
73
  <button class="jupiterx-fonts-control-preview-remove">
74
  <img src="<?php echo esc_url( JupiterX_Customizer_Utils::get_assets_url() ); ?>/img/x-white.svg" />
75
  <span class="screen-reader-text"><?php esc_html_e( 'Remove', 'jupiterx-core' ); ?></span>
110
  </div>
111
  </div>
112
  </div>
113
+ <div class="jupiterx-fonts-control-selector-subsets">
114
+ <div class="jupiterx-control jupiterx-multicheck-control">
115
+ <div class="jupiterx-multicheck-control-items">
116
+ <# _.each( data.subsets, function (value, key) { #>
117
+ <div class="jupiterx-multicheck-control-item">
118
+ <input
119
+ id="jupiterx_fonts_subset_{{value}}"
120
+ class="jupiterx-multicheck-control-checkbox"
121
+ type="checkbox"
122
+ value="{{value}}">
123
+ <label
124
+ class="jupiterx-multicheck-control-label"
125
+ for="jupiterx_fonts_subset_{{value}}">
126
+ <span class="jupiterx-multicheck-control-box"></span> {{key}}
127
+ </label>
128
+ </div>
129
+ <# }) #>
130
+ </div>
131
+ </div>
132
+ </div>
133
  <div class="jupiterx-fonts-control-selector-buttons">
134
  <button class="jupiterx-fonts-control-selector-cancel jupiterx-button jupiterx-button-danger">
135
  <img src="<?php echo esc_url( JupiterX_Customizer_Utils::get_icon_url( 'x' ) ); ?>">
includes/customizer/api/includes/control/class-template.php CHANGED
@@ -1,110 +1,110 @@
1
- <?php
2
- /**
3
- * Handles Elementor template control class.
4
- *
5
- * @package JupiterX\Framework\API\Customizer
6
- *
7
- * @since 1.1.0
8
- */
9
-
10
- // Exit if accessed directly.
11
- if ( ! defined( 'ABSPATH' ) ) {
12
- exit;
13
- }
14
-
15
- /**
16
- * Elementor template control class.
17
- *
18
- * @since 1.1.0
19
- *
20
- * @package JupiterX\Framework\API\Customizer
21
- */
22
- class JupiterX_Customizer_Control_Template extends JupiterX_Customizer_Base_Control {
23
-
24
- /**
25
- * Control's type.
26
- *
27
- * @since 1.1.0
28
- *
29
- * @var string
30
- */
31
- public $type = 'jupiterx-template';
32
-
33
- /**
34
- * Control's select field placeholder.
35
- *
36
- * @since 1.1.0
37
- *
38
- * @var string
39
- */
40
- public $placeholder = '';
41
-
42
- /**
43
- * Type of template to create.
44
- *
45
- * @since 1.1.0
46
- *
47
- * @var string
48
- */
49
- public $template_type = '';
50
-
51
- /**
52
- * Show pro badge if locked.
53
- *
54
- * @since 1.11.0
55
- *
56
- * @var boolean
57
- */
58
- public $locked = false;
59
-
60
- /**
61
- * Refresh the parameters passed to the JavaScript via JSON.
62
- *
63
- * @since 1.1.0
64
- */
65
- public function to_json() {
66
- parent::to_json();
67
-
68
- // Select field placeholder.
69
- $this->json['placeholder'] = $this->placeholder;
70
-
71
- // Template type.
72
- $this->json['templateType'] = $this->template_type ? $this->template_type : 'post';
73
-
74
- $this->json['locked'] = $this->locked;
75
- }
76
-
77
- /**
78
- * An Underscore (JS) template for this control's content (but not its container).
79
- *
80
- * Class variables for this control class are available in the `data` JS object;
81
- * export custom variables by overriding {@see WP_Customize_Control::to_json()}.
82
- *
83
- * @see WP_Customize_Control::print_template()
84
- *
85
- * @since 1.1.0
86
- */
87
- protected function content_template() {
88
- ?>
89
- <# if ( data.label ) { #>
90
- <span class="customize-control-title">{{ data.label }}</span>
91
- <# } #>
92
- <div class="jupiterx-control jupiterx-template-control">
93
- <div class="jupiterx-select-control">
94
- <select class="jupiterx-select-control" value="{{ data.value }}" id="{{ data.id }}" {{{ data.link }}}></select>
95
- </div>
96
- <span class="jupiterx-text-separator">
97
- <?php esc_html_e( 'OR', 'jupiterx-core' ); ?>
98
- </span>
99
- <button type="button" class="jupiterx-button jupiterx-edit">
100
- <?php esc_html_e( 'Edit', 'jupiterx-core' ); ?>
101
- <# if ( data.locked ) { #><img class="jupiterx-control-pro-badge" src="<?php echo esc_url( jupiterx_get_pro_badge_url() ); ?>" /><# } #>
102
- </button>
103
- <button type="button" class="jupiterx-button jupiterx-add">
104
- <?php esc_html_e( 'New', 'jupiterx-core' ); ?>
105
- <# if ( data.locked ) { #><img class="jupiterx-control-pro-badge" src="<?php echo esc_url( jupiterx_get_pro_badge_url() ); ?>" /><# } #>
106
- </button>
107
- </div>
108
- <?php
109
- }
110
- }
1
+ <?php
2
+ /**
3
+ * Handles Elementor template control class.
4
+ *
5
+ * @package JupiterX\Framework\API\Customizer
6
+ *
7
+ * @since 1.1.0
8
+ */
9
+
10
+ // Exit if accessed directly.
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit;
13
+ }
14
+
15
+ /**
16
+ * Elementor template control class.
17
+ *
18
+ * @since 1.1.0
19
+ *
20
+ * @package JupiterX\Framework\API\Customizer
21
+ */
22
+ class JupiterX_Customizer_Control_Template extends JupiterX_Customizer_Base_Control {
23
+
24
+ /**
25
+ * Control's type.
26
+ *
27
+ * @since 1.1.0
28
+ *
29
+ * @var string
30
+ */
31
+ public $type = 'jupiterx-template';
32
+
33
+ /**
34
+ * Control's select field placeholder.
35
+ *
36
+ * @since 1.1.0
37
+ *
38
+ * @var string
39
+ */
40
+ public $placeholder = '';
41
+
42
+ /**
43
+ * Type of template to create.
44
+ *
45
+ * @since 1.1.0
46
+ *
47
+ * @var string
48
+ */
49
+ public $template_type = '';
50
+
51
+ /**
52
+ * Show pro badge if locked.
53
+ *
54
+ * @since 1.11.0
55
+ *
56
+ * @var boolean
57
+ */
58
+ public $locked = false;
59
+
60
+ /**
61
+ * Refresh the parameters passed to the JavaScript via JSON.
62
+ *
63
+ * @since 1.1.0
64
+ */
65
+ public function to_json() {
66
+ parent::to_json();
67
+
68
+ // Select field placeholder.
69
+ $this->json['placeholder'] = $this->placeholder;
70
+
71
+ // Template type.
72
+ $this->json['templateType'] = $this->template_type ? $this->template_type : 'post';
73
+
74
+ $this->json['locked'] = $this->locked;
75
+ }
76
+
77
+ /**
78
+ * An Underscore (JS) template for this control's content (but not its container).
79
+ *
80
+ * Class variables for this control class are available in the `data` JS object;
81
+ * export custom variables by overriding {@see WP_Customize_Control::to_json()}.
82
+ *
83
+ * @see WP_Customize_Control::print_template()
84
+ *
85
+ * @since 1.1.0
86
+ */
87
+ protected function content_template() {
88
+ ?>
89
+ <# if ( data.label ) { #>
90
+ <span class="customize-control-title">{{ data.label }}</span>
91
+ <# } #>
92
+ <div class="jupiterx-control jupiterx-template-control">
93
+ <div class="jupiterx-select-control">
94
+ <select class="jupiterx-select-control" value="{{ data.value }}" id="{{ data.id }}" {{{ data.link }}}></select>
95
+ </div>
96
+ <span class="jupiterx-text-separator">
97
+ <?php esc_html_e( 'OR', 'jupiterx-core' ); ?>
98
+ </span>
99
+ <button type="button" class="jupiterx-button jupiterx-edit">
100
+ <?php esc_html_e( 'Edit', 'jupiterx-core' ); ?>
101
+ <# if ( data.locked ) { #><img class="jupiterx-control-pro-badge" src="<?php echo esc_url( jupiterx_get_pro_badge_url() ); ?>" /><# } #>
102
+ </button>
103
+ <button type="button" class="jupiterx-button jupiterx-add">
104
+ <?php esc_html_e( 'New', 'jupiterx-core' ); ?>
105
+ <# if ( data.locked ) { #><img class="jupiterx-control-pro-badge" src="<?php echo esc_url( jupiterx_get_pro_badge_url() ); ?>" /><# } #>
106
+ </button>
107
+ </div>
108
+ <?php
109
+ }
110
+ }
includes/customizer/settings/blog-archive/settings.php CHANGED
@@ -29,7 +29,7 @@ JupiterX_Customizer::add_responsive_field( [
29
  'transport' => 'postMessage',
30
  'output' => [
31
  [
32
- 'element' => '.archive.category .jupiterx-main-content, .archive.tag .jupiterx-main-content',
33
  ],
34
  ],
35
  ] );
29
  'transport' => 'postMessage',
30
  'output' => [
31
  [
32
+ 'element' => '.archive.date .jupiterx-main-content, .archive.author .jupiterx-main-content, .archive.category .jupiterx-main-content, .archive.tag .jupiterx-main-content',
33
  ],
34
  ],
35
  ] );
includes/customizer/settings/comment/action-link.php CHANGED
@@ -18,7 +18,6 @@ JupiterX_Customizer::add_field( [
18
  'column' => '3',
19
  'icon' => 'font-color',
20
  'transport' => 'postMessage',
21
- 'default' => '#007bff',
22
  'output' => [
23
  [
24
  'element' => '.jupiterx-comments .jupiterx-comment-links a, .jupiterx-comments .logged-in-as a, .comment-respond a',
@@ -65,7 +64,6 @@ JupiterX_Customizer::add_field( [
65
  'column' => '3',
66
  'icon' => 'font-color',
67
  'transport' => 'postMessage',
68
- 'default' => '#0056b3',
69
  'output' => [
70
  [
71
  'element' => '.jupiterx-comments .jupiterx-comment-links a:hover, .jupiterx-comments .logged-in-as a:hover, .comment-respond a:hover',
18
  'column' => '3',
19
  'icon' => 'font-color',
20
  'transport' => 'postMessage',
 
21
  'output' => [
22
  [
23
  'element' => '.jupiterx-comments .jupiterx-comment-links a, .jupiterx-comments .logged-in-as a, .comment-respond a',
64
  'column' => '3',
65
  'icon' => 'font-color',
66
  'transport' => 'postMessage',
 
67
  'output' => [
68
  [
69
  'element' => '.jupiterx-comments .jupiterx-comment-links a:hover, .jupiterx-comments .logged-in-as a:hover, .comment-respond a:hover',
includes/customizer/settings/page-single/settings.php CHANGED
@@ -64,6 +64,7 @@ JupiterX_Customizer::add_field( [
64
  'css_var' => 'page-single-elements',
65
  'default' => [
66
  'featured_image',
 
67
  ],
68
  'choices' => [
69
  'featured_image' => __( 'Featured Image', 'jupiterx-core' ),
64
  'css_var' => 'page-single-elements',
65
  'default' => [
66
  'featured_image',
67
+ 'comments',
68
  ],
69
  'choices' => [
70
  'featured_image' => __( 'Featured Image', 'jupiterx-core' ),
includes/customizer/vendors/kirki/LICENSE CHANGED
File without changes
includes/customizer/vendors/kirki/assets/css/kirki-styles.css CHANGED
File without changes
includes/customizer/vendors/kirki/assets/images/1c.png CHANGED
File without changes
includes/customizer/vendors/kirki/assets/images/2cl.png CHANGED
File without changes
includes/customizer/vendors/kirki/assets/images/2cr.png CHANGED
File without changes
includes/customizer/vendors/kirki/assets/images/3cl.png CHANGED
File without changes
includes/customizer/vendors/kirki/assets/images/3cm.png CHANGED
File without changes
includes/customizer/vendors/kirki/assets/images/3cr.png CHANGED
File without changes
includes/customizer/vendors/kirki/assets/images/jquery.fs.stepper-arrows.png CHANGED
File without changes
includes/customizer/vendors/kirki/assets/images/kirki-bottom.png CHANGED
File without changes
includes/customizer/vendors/kirki/assets/images/kirki-bottom.svg CHANGED
File without changes
includes/customizer/vendors/kirki/assets/images/kirki-logo.svg CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/fontawesome/fontawesome.json CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/css/select2.css CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/css/select2.min.css CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/css/selectWoo.css CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/css/selectWoo.min.css CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ar.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/az.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/bg.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ca.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/cs.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/da.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/de.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/el.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/en.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/es.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/et.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/eu.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/fa.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/fi.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/fr.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/gl.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/he.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/hi.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/hr.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/hu.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/hy.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/id.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/is.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/it.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ja.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/km.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ko.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/lt.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/lv.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/mk.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ms.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/nb.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/nl.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/pl.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/pt-BR.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/pt.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ro.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ru.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sk.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sl.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sr-Cyrl.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sr.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sv.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/th.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/tr.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/uk.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/vi.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/zh-CN.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/zh-TW.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/select2.full.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/select2.full.min.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/select2.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/select2.min.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/selectWoo.full.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/selectWoo.full.min.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/selectWoo.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/selectWoo.min.js CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/kirki.css CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/kirki.css.map CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/selectWoo/kirki.scss CHANGED
File without changes
includes/customizer/vendors/kirki/assets/vendor/wp-color-picker-alpha/wp-color-picker-alpha.js CHANGED
File without changes
includes/customizer/vendors/kirki/class-kirki-autoload.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/class-kirki-controls.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/css/styles.css CHANGED
File without changes
includes/customizer/vendors/kirki/controls/js/script.js CHANGED
File without changes
includes/customizer/vendors/kirki/controls/js/script.min.js CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-background.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-base.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-checkbox.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-code.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-color-palette.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-color.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-cropped-image.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-custom.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-dashicons.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-date.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-dimension.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-dimensions.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-editor.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-generic.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-image.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-multicheck.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-multicolor.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-number.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-palette.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-radio-buttonset.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-radio-image.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-radio.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-repeater.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-select.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-slider.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-sortable.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-switch.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-toggle.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-typography.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-control-upload.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/php/class-kirki-settings-repeater-setting.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/views/code.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/views/color.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/views/generic.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/views/number.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/views/radio.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/views/select.php CHANGED
File without changes
includes/customizer/vendors/kirki/controls/views/textarea.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-config.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-control.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-field.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-helper.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-init.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-l10n.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-modules.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-panel.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-sanitize-values.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-section.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-sections.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-setting-site-option.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-setting-user-meta.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-settings.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-toolkit.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-util.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki-values.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/class-kirki.php CHANGED
File without changes
includes/customizer/vendors/kirki/core/dynamic-css.php CHANGED
File without changes
includes/customizer/vendors/kirki/deprecated/classes.php CHANGED
File without changes
includes/customizer/vendors/kirki/deprecated/deprecated.php CHANGED
File without changes
includes/customizer/vendors/kirki/deprecated/filters.php CHANGED
File without changes
includes/customizer/vendors/kirki/deprecated/functions.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-background.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-checkbox.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-code.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-color-alpha.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-color-palette.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-color.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-custom.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-dashicons.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-date.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-dimension.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-dimensions.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-editor.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-fontawesome.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-generic.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-group-title.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-image.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-kirki-generic.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-link.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-multicheck.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-multicolor.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-number.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-palette.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-preset.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-radio-buttonset.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-radio-image.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-radio.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-repeater.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-select.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-select2-multiple.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-select2.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-slider.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-sortable.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-spacing.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-switch.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-text.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-textarea.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-toggle.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-typography.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-upload.php CHANGED
File without changes
includes/customizer/vendors/kirki/field/class-kirki-field-url.php CHANGED
File without changes
includes/customizer/vendors/kirki/kirki.php CHANGED
File without changes
includes/customizer/vendors/kirki/lib/class-aricolor.php CHANGED
File without changes
includes/customizer/vendors/kirki/lib/class-kirki-color.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css-vars/class-kirki-modules-css-vars.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css-vars/script.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/class-kirki-css-to-file.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/class-kirki-modules-css-generator.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/class-kirki-modules-css.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/class-kirki-output.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-background.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-dimensions.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-image.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-multicolor.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-typography.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/property/class-kirki-output-property-background-image.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/property/class-kirki-output-property-background-position.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/property/class-kirki-output-property-font-family.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/css/property/class-kirki-output-property.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/custom-sections/class-kirki-modules-custom-sections.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/custom-sections/panels/class-kirki-panels-nested-panel.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/custom-sections/sections.css CHANGED
File without changes
includes/customizer/vendors/kirki/modules/custom-sections/sections.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/custom-sections/sections/class-kirki-sections-default-section.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/custom-sections/sections/class-kirki-sections-expanded-section.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/custom-sections/sections/class-kirki-sections-nested-section.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/customizer-branding/branding.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/customizer-branding/class-kirki-modules-customizer-branding.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/customizer-styling/class-kirki-modules-customizer-styling.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/field-dependencies/class-kirki-modules-field-dependencies.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/field-dependencies/field-dependencies.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/icons/class-kirki-modules-icons.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/icons/icons.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/loading/class-kirki-modules-loading.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/post-meta/class-kirki-modules-post-meta.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/post-meta/customize-controls.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/post-meta/customize-preview.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/postmessage/class-kirki-modules-postmessage.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/postmessage/postmessage.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/preset/class-kirki-modules-preset.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/preset/preset.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/selective-refresh/class-kirki-modules-selective-refresh.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/tooltips/class-kirki-modules-tooltips.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/tooltips/tooltip.css CHANGED
File without changes
includes/customizer/vendors/kirki/modules/tooltips/tooltip.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/class-kirki-modules-webfont-loader.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/closure.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/cssclassname.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/domhelper.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/eventdispatcher.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/font.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontmodule.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontmoduleloader.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontruler.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontwatcher.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontwatchrunner.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/initialize.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/nativefontwatchrunner.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/stylesheetwaiter.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/webfont.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules.yml CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/custom.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/fontdeck.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/google/fontapiparser.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/google/fontapiurlbuilder.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/google/googlefontapi.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/monotype.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/typekit.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/webfontloader.js CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfonts/class-kirki-fonts-google-local.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfonts/class-kirki-fonts-google.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfonts/class-kirki-fonts.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfonts/class-kirki-modules-webfonts-async.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfonts/class-kirki-modules-webfonts-local.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfonts/class-kirki-modules-webfonts.php CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfonts/webfont-files.json CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfonts/webfont-names.json CHANGED
File without changes
includes/customizer/vendors/kirki/modules/webfonts/webfonts.json CHANGED
File without changes
includes/customizer/vendors/kirki/readme.txt CHANGED
File without changes
includes/customizer/vendors/kirki/upgrade-notifications.php CHANGED
File without changes
includes/parse-css/class.php CHANGED
File without changes
includes/parse-css/functions.php CHANGED
File without changes
includes/parse-css/vendors/autoload.php CHANGED
File without changes
includes/parse-css/vendors/composer/ClassLoader.php CHANGED
File without changes
includes/parse-css/vendors/composer/LICENSE CHANGED
File without changes
includes/parse-css/vendors/composer/autoload_classmap.php CHANGED
File without changes
includes/parse-css/vendors/composer/autoload_namespaces.php CHANGED
File without changes
includes/parse-css/vendors/composer/autoload_psr4.php CHANGED
File without changes
includes/parse-css/vendors/composer/autoload_real.php CHANGED
File without changes
includes/parse-css/vendors/composer/autoload_static.php CHANGED
File without changes
includes/parse-css/vendors/composer/installed.json CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/CHANGELOG.md CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/LICENSE CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/README.md CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/phpunit.xml CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/FlipOptions.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/RtlCss.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/AbstractFlipLeftRight.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipBackground.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipBorderRadius.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipCursor.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipDirection.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipLeftProperty.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipLeftValue.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipMarginPaddingBorder.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipRightProperty.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipShadow.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipTransform.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipTransformOrigin.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipTransition.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/Operation/SizeFlipper.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/TransformationException.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/TransformationInterface.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/Value/TransformableStringValue.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/tests/CSSJanus/CSSJanusTest.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/tests/CSSJanus/cssjanus-1.2.1-adapted.json CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/tests/CSSJanus/cssjanus-1.2.1.json CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/tests/PrestaShop/RtlCss/RtlCssTest.php CHANGED
File without changes
includes/parse-css/vendors/prestashop/rtlcss-php/tests/bootstrap.php CHANGED
File without changes
includes/updater/views/html-notice-update-extensions-themes-inline.php CHANGED
File without changes
includes/widgets/functions.php CHANGED
File without changes
includes/widgets/widget-nav-menu.php CHANGED
File without changes
includes/widgets/widget-social.php CHANGED
File without changes
includes/woocommerce/wc-load-more.js CHANGED
@@ -16,17 +16,37 @@ jQuery(function($){
16
  beforeSend : function ( xhr ) {
17
  button.text(jupiterx_wc_loadmore_params.i18n.btn_text_loading);
18
  },
19
- success : function( data ){
20
- if( data ) {
21
- button.text( jupiterx_wc_loadmore_params.i18n.btn_text ).parent().prev().after(data);
22
- jupiterx_wc_loadmore_params.current_page++;
 
 
 
 
 
 
 
 
23
 
24
- if ( jupiterx_wc_loadmore_params.current_page == jupiterx_wc_loadmore_params.max_page )
25
- button.remove(); // if last page, remove the button
 
26
 
 
 
 
 
 
 
 
27
  } else {
28
  button.remove();
29
- }
 
 
 
 
30
  }
31
  });
32
  });
16
  beforeSend : function ( xhr ) {
17
  button.text(jupiterx_wc_loadmore_params.i18n.btn_text_loading);
18
  },
19
+ success : function( response ){
20
+ var products = '';
21
+ var resultCount = '';
22
+
23
+ if (!response || !response.data) {
24
+ return;
25
+ }
26
+
27
+ if (response.data.products) {
28
+ products = response.data.products;
29
+ products = products.join('')
30
+ }
31
 
32
+ if (response.data.result_count) {
33
+ resultCount = response.data.result_count
34
+ }
35
 
36
+ if (products) {
37
+ button.text( jupiterx_wc_loadmore_params.i18n.btn_text ).parent().prev().append(products);
38
+ jupiterx_wc_loadmore_params.current_page++;
39
+
40
+ if ( jupiterx_wc_loadmore_params.current_page == jupiterx_wc_loadmore_params.max_page ) {
41
+ button.remove(); // if last page, remove the button
42
+ }
43
  } else {
44
  button.remove();
45
+ }
46
+
47
+ if (resultCount) {
48
+ $('.woocommerce-result-count').html(resultCount);
49
+ }
50
  }
51
  });
52
  });
includes/woocommerce/woocommerce-load-more.php CHANGED
@@ -23,19 +23,19 @@ function jupiterx_add_load_more() {
23
  $paged = wc_get_loop_prop( 'current_page' );
24
  $first = ( $per_page * $paged ) - $per_page + 1;
25
  $last = min( $total, $per_page * $paged );
26
-
27
  } else {
28
  global $wp_query;
 
29
  $paged = max( 1, $wp_query->get( 'paged' ) );
30
  $per_page = $wp_query->get( 'posts_per_page' );
31
  $total = $wp_query->found_posts;
32
  $first = ( $per_page * $paged ) - $per_page + 1;
33
  $last = min( $total, $wp_query->get( 'posts_per_page' ) * $paged );
34
  }
35
- if ( $paged ) {
 
36
  echo '<div class="jupiterx-wc-loadmore-wrapper"><a class="button btn-info jupiterx-wc-load-more">' . esc_html__( 'Load More', 'jupiterx-core' ) . '</a></div>';
37
  }
38
-
39
  }
40
 
41
 
@@ -86,15 +86,35 @@ function jupiterx_wc_loadmore_ajax_handler() {
86
 
87
  query_posts( $args ); // phpcs:ignore WordPress.WP.DiscouragedFunctions.query_posts_query_posts
88
 
89
- woocommerce_product_loop_start();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  while ( have_posts() ) :
91
  the_post();
 
 
 
92
  wc_get_template_part( 'content', 'product' );
 
 
 
93
  endwhile;
94
- woocommerce_product_loop_end();
95
  woocommerce_reset_loop();
96
 
97
- die;
98
  }
99
 
100
  add_action( 'wp_ajax_jupiterx_loadmore_ajax_handler', 'jupiterx_wc_loadmore_ajax_handler' );
23
  $paged = wc_get_loop_prop( 'current_page' );
24
  $first = ( $per_page * $paged ) - $per_page + 1;
25
  $last = min( $total, $per_page * $paged );
 
26
  } else {
27
  global $wp_query;
28
+
29
  $paged = max( 1, $wp_query->get( 'paged' ) );
30
  $per_page = $wp_query->get( 'posts_per_page' );
31
  $total = $wp_query->found_posts;
32
  $first = ( $per_page * $paged ) - $per_page + 1;
33
  $last = min( $total, $wp_query->get( 'posts_per_page' ) * $paged );
34
  }
35
+
36
+ if ( $paged && $last < $total ) {
37
  echo '<div class="jupiterx-wc-loadmore-wrapper"><a class="button btn-info jupiterx-wc-load-more">' . esc_html__( 'Load More', 'jupiterx-core' ) . '</a></div>';
38
  }
 
39
  }
40
 
41
 
86
 
87
  query_posts( $args ); // phpcs:ignore WordPress.WP.DiscouragedFunctions.query_posts_query_posts
88
 
89
+ wc_setup_loop();
90
+
91
+ $data = [
92
+ 'products' => [],
93
+ 'result_count' => '',
94
+ ];
95
+
96
+ $total = wc_get_loop_prop( 'total' );
97
+ $per_page = wc_get_loop_prop( 'per_page' );
98
+ $current = wc_get_loop_prop( 'current_page' );
99
+ $last = min( $total, $per_page * $current );
100
+
101
+ /* translators: 1: first result 2: last result 3: total results */
102
+ $data['result_count'] = sprintf( _nx( 'Showing %1$d&ndash;%2$d of %3$d result', 'Showing %1$d&ndash;%2$d of %3$d results', $total, 'with first and last result', 'woocommerce' ), 1, $last, $total );
103
+
104
  while ( have_posts() ) :
105
  the_post();
106
+
107
+ ob_start();
108
+
109
  wc_get_template_part( 'content', 'product' );
110
+
111
+ $data['products'][] = ob_get_clean();
112
+
113
  endwhile;
114
+
115
  woocommerce_reset_loop();
116
 
117
+ wp_send_json_success( $data );
118
  }
119
 
120
  add_action( 'wp_ajax_jupiterx_loadmore_ajax_handler', 'jupiterx_wc_loadmore_ajax_handler' );
jupiterx-core.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Jupiter X Core
4
  * Plugin URI: https://jupiterx.com
5
  * Description: Jupiter X Core
6
- * Version: 1.11.0
7
  * Author: Artbees
8
  * Author URI: https://artbees.net
9
  * Text Domain: jupiterx-core
3
  * Plugin Name: Jupiter X Core
4
  * Plugin URI: https://jupiterx.com
5
  * Description: Jupiter X Core
6
+ * Version: 1.12.0
7
  * Author: Artbees
8
  * Author URI: https://artbees.net
9
  * Text Domain: jupiterx-core
languages/jupiterx-core.pot CHANGED
@@ -15,24 +15,80 @@ msgstr ""
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
 
18
- #: jupiterx-core.php:253, jupiterx-core.php:253, includes/dashboard/widgets/class-overview.php:128
19
- msgid "Control Panel"
20
  msgstr ""
21
 
22
- #: jupiterx-core.php:257, jupiterx-core.php:257, includes/dashboard/widgets/class-overview.php:127, includes/customizer/api/includes/control/class-child-popup.php:107
23
- msgid "Customize"
24
  msgstr ""
25
 
26
- #: jupiterx-core.php:261, jupiterx-core.php:261, includes/dashboard/widgets/class-overview.php:248
27
- msgid "Help"
28
  msgstr ""
29
 
30
- #: jupiterx-core.php:266, jupiterx-core.php:266, includes/dashboard/widgets/class-overview.php:256
31
- msgid "Upgrade"
32
  msgstr ""
33
 
34
- #: jupiterx-core.php:492
35
- msgid "Activate Product"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  msgstr ""
37
 
38
  #: includes/compiler/class-compiler.php:944
@@ -123,2880 +179,2824 @@ msgstr ""
123
  msgid "Tracking Codes Before %s Tag"
124
  msgstr ""
125
 
126
- #: includes/custom-fields/title-bar.php:28, includes/customizer/settings/title-bar/popup.php:12, includes/customizer/settings/title-bar/settings.php:87, includes/customizer/settings/title-bar/settings.php:194
127
- msgid "Subtitle"
128
  msgstr ""
129
 
130
- #: includes/dashboard/class.php:45, includes/control-panel/includes/class-export-import-content.php:113, includes/control-panel/includes/class-settings.php:51, includes/control-panel/includes/class-system-status.php:128
131
- msgid "Type param is missing."
132
  msgstr ""
133
 
134
- #. translators: action type
135
- #. translators: Function request type to initialize.
136
- #: includes/dashboard/class.php:54, includes/control-panel/includes/class-export-import-content.php:149, includes/control-panel/includes/class-settings.php:65, includes/control-panel/includes/class-system-status.php:134
137
- msgid "Type param (%s) is not valid."
138
  msgstr ""
139
 
140
- #: includes/dashboard/class.php:68
141
- msgid "The get_sites function is not defined."
142
  msgstr ""
143
 
144
- #: includes/dashboard/class.php:95
145
- msgid "Site param is missing."
146
  msgstr ""
147
 
148
- #: includes/post-type/class.php:36
149
- msgctxt "Portfolio General Name"
150
- msgid "Portfolios"
151
  msgstr ""
152
 
153
- #: includes/post-type/class.php:37
154
- msgctxt "Portfolio Singular Name"
155
- msgid "Portfolio"
156
  msgstr ""
157
 
158
- #: includes/post-type/class.php:38
159
- msgid "Portfolios"
160
  msgstr ""
161
 
162
- #: includes/post-type/class.php:39, includes/post-type/class.php:51, includes/widgets/widget-posts.php:41, includes/customizer/settings/settings.php:19, includes/customizer/settings/search/settings.php:22, includes/customizer/settings/sidebar/settings.php:61, includes/customizer/settings/title-bar/settings.php:127
163
- msgid "Portfolio"
164
  msgstr ""
165
 
166
- #: includes/post-type/class.php:40
167
- msgid "All Portfolios"
168
  msgstr ""
169
 
170
- #: includes/post-type/class.php:52
171
- msgid "Portfolio Description"
172
  msgstr ""
173
 
174
- #: includes/post-type/class.php:86
175
- msgctxt "Category General Name"
176
- msgid "Portfolio Categories"
177
  msgstr ""
178
 
179
- #: includes/post-type/class.php:87
180
- msgctxt "Category Singular Name"
181
- msgid "Category"
182
  msgstr ""
183
 
184
- #: includes/post-type/class.php:88, includes/customizer/settings/blog-single/settings.php:129, includes/customizer/settings/portfolio-single/settings.php:78, includes/customizer/settings/product-page/settings.php:97
185
- msgid "Categories"
 
 
186
  msgstr ""
187
 
188
- #: includes/post-type/class.php:89
189
- msgid "All Categories"
190
  msgstr ""
191
 
192
- #: includes/post-type/class.php:90
193
- msgid "Parent Category"
194
  msgstr ""
195
 
196
- #: includes/post-type/class.php:91
197
- msgid "Parent Category:"
198
  msgstr ""
199
 
200
- #: includes/post-type/class.php:92
201
- msgid "New Category Name"
202
  msgstr ""
203
 
204
- #: includes/post-type/class.php:93
205
- msgid "Add New Category"
206
  msgstr ""
207
 
208
- #: includes/post-type/class.php:94
209
- msgid "Edit Category"
210
  msgstr ""
211
 
212
- #: includes/post-type/class.php:95
213
- msgid "Update Category"
214
  msgstr ""
215
 
216
- #: includes/post-type/class.php:96
217
- msgid "View Category"
218
  msgstr ""
219
 
220
- #: includes/post-type/class.php:97
221
- msgid "Separate categories with commas"
222
  msgstr ""
223
 
224
- #: includes/post-type/class.php:98
225
- msgid "Add or remove categories "
226
  msgstr ""
227
 
228
- #: includes/post-type/class.php:99, includes/post-type/class.php:147
229
- msgid "Choose from the most used"
230
  msgstr ""
231
 
232
- #: includes/post-type/class.php:100
233
- msgid "Popular Categories"
234
  msgstr ""
235
 
236
- #: includes/post-type/class.php:101
237
- msgid "Search Categories"
238
  msgstr ""
239
 
240
- #: includes/post-type/class.php:102, includes/post-type/class.php:150
241
- msgid "Not Found"
242
  msgstr ""
243
 
244
- #: includes/post-type/class.php:103
245
- msgid "No categories "
246
  msgstr ""
247
 
248
- #: includes/post-type/class.php:104
249
- msgid "Categories list"
250
  msgstr ""
251
 
252
- #: includes/post-type/class.php:105
253
- msgid "Categories list navigation"
254
  msgstr ""
255
 
256
- #: includes/post-type/class.php:134
257
- msgctxt "Tag General Name"
258
- msgid "Portfolio Tags"
259
  msgstr ""
260
 
261
- #: includes/post-type/class.php:135
262
- msgctxt "Tag Singular Name"
263
- msgid "Tag"
264
  msgstr ""
265
 
266
- #: includes/post-type/class.php:136, includes/customizer/settings/blog-single/popup.php:15, includes/customizer/settings/blog-single/popup.php:92, includes/customizer/settings/blog-single/settings.php:130, includes/customizer/settings/product-page/settings.php:98
267
- msgid "Tags"
268
  msgstr ""
269
 
270
- #: includes/post-type/class.php:137
271
- msgid "All Tags"
272
  msgstr ""
273
 
274
- #: includes/post-type/class.php:138
275
- msgid "Parent Tag"
276
  msgstr ""
277
 
278
- #: includes/post-type/class.php:139
279
- msgid "Parent Tag:"
280
  msgstr ""
281
 
282
- #: includes/post-type/class.php:140
283
- msgid "New Tag Name"
284
  msgstr ""
285
 
286
- #: includes/post-type/class.php:141
287
- msgid "Add New Tag"
288
  msgstr ""
289
 
290
- #: includes/post-type/class.php:142
291
- msgid "Edit Tag"
292
  msgstr ""
293
 
294
- #: includes/post-type/class.php:143
295
- msgid "Update Tag"
296
  msgstr ""
297
 
298
- #: includes/post-type/class.php:144
299
- msgid "View Tag"
300
  msgstr ""
301
 
302
- #: includes/post-type/class.php:145
303
- msgid "Separate tags with commas"
304
  msgstr ""
305
 
306
- #: includes/post-type/class.php:146
307
- msgid "Add or remove tags"
308
  msgstr ""
309
 
310
- #: includes/post-type/class.php:148
311
- msgid "Popular Tags"
312
  msgstr ""
313
 
314
- #: includes/post-type/class.php:149
315
- msgid "Search Tags"
316
  msgstr ""
317
 
318
- #: includes/post-type/class.php:151
319
- msgid "No tags"
320
  msgstr ""
321
 
322
- #: includes/post-type/class.php:152
323
- msgid "Tags list"
324
  msgstr ""
325
 
326
- #: includes/post-type/class.php:153
327
- msgid "Tags list navigation"
328
  msgstr ""
329
 
330
- #: includes/templates/class.php:90, includes/templates/class.php:125
331
- msgid "e.g. Portfolio, Real estate, Minimal, Dark, ..."
332
  msgstr ""
333
 
334
- #: includes/templates/class.php:102
335
- msgid "Filters"
336
  msgstr ""
337
 
338
- #: includes/templates/class.php:107
339
- msgid "Template was found."
340
  msgstr ""
341
 
342
- #: includes/templates/class.php:113
343
- msgid "Filter & Refine"
344
  msgstr ""
345
 
346
- #: includes/templates/class.php:114
347
- msgid "Clear all"
348
  msgstr ""
349
 
350
- #: includes/templates/class.php:115
351
- msgid "Done"
352
  msgstr ""
353
 
354
- #: includes/templates/class.php:135, includes/widgets/widget-posts.php:58, includes/widgets/widget-posts.php:69, includes/customizer/settings/product-list/settings.php:76
355
- msgid "Category"
356
  msgstr ""
357
 
358
- #: includes/templates/class.php:142
359
- msgid "Style"
360
  msgstr ""
361
 
362
- #: includes/templates/class.php:143
363
- msgid "Header Type"
364
  msgstr ""
365
 
366
- #: includes/templates/class.php:144
367
- msgid "Menu Type"
368
  msgstr ""
369
 
370
- #: includes/templates/class.php:145
371
- msgid "Components"
372
  msgstr ""
373
 
374
- #: includes/templates/class.php:146
375
- msgid "Content Type"
376
  msgstr ""
377
 
378
- #: includes/templates/class.php:180
379
- msgid "All"
380
  msgstr ""
381
 
382
- #: includes/templates/class.php:186
383
- msgid "Click to expand"
384
  msgstr ""
385
 
386
- #: includes/templates/class.php:189
387
- msgid "Clear"
388
  msgstr ""
389
 
390
- #: includes/templates/class.php:345, includes/templates/class.php:352
391
- msgid "Cheatin&#8217; huh?"
392
  msgstr ""
393
 
394
- #. translators: 1. Heads up title.
395
- #: includes/updater/functions.php:38
396
- msgid "%1$s We have found conflicts on updating this plugin. Please resolve following issues before you continue otherwise it may cause unknown issues."
397
  msgstr ""
398
 
399
- #: includes/updater/functions.php:38
400
- msgid "Heads up!"
401
  msgstr ""
402
 
403
- #: includes/widget-area/functions.php:28
404
- msgid "name field is required"
405
  msgstr ""
406
 
407
- #: includes/widget-area/functions.php:52
408
- msgid "id field is required"
409
  msgstr ""
410
 
411
- #: includes/widget-area/functions.php:81
412
- msgid "Add Custom Sidebar"
413
  msgstr ""
414
 
415
- #: includes/widgets/class.php:476
416
- msgid "Add"
417
  msgstr ""
418
 
419
- #: includes/widgets/widget-nav-menu.php:108, includes/customizer/api/includes/control/group/class-box-shadow.php:53
420
- msgid "Vertical"
421
  msgstr ""
422
 
423
- #: includes/widgets/widget-nav-menu.php:109, includes/customizer/api/includes/control/group/class-box-shadow.php:44
424
- msgid "Horizontal"
425
  msgstr ""
426
 
427
- #: includes/widgets/widget-nav-menu.php:116
428
- msgid "Orientation:"
429
  msgstr ""
430
 
431
- #: includes/widgets/widget-nav-menu.php:149
432
- msgid "Space between:"
433
  msgstr ""
434
 
435
- #: includes/widgets/widget-posts.php:28, includes/widgets/widget-posts.php:136
436
- msgid "Jupiter X - Posts"
437
  msgstr ""
438
 
439
- #: includes/widgets/widget-posts.php:29
440
- msgid "Custom lists of posts."
441
  msgstr ""
442
 
443
- #: includes/widgets/widget-posts.php:34, includes/widgets/widget-posts.php:125, includes/widgets/widget-social.php:33, includes/customizer/settings/blog-single/popup.php:12, includes/customizer/settings/blog-single/popup.php:89, includes/customizer/settings/blog-single/settings.php:126, includes/customizer/settings/comment/popup.php:11, includes/customizer/settings/comment/popup.php:65, includes/customizer/settings/page-single/popup.php:11, includes/customizer/settings/page-single/popup.php:60, includes/customizer/settings/page-single/settings.php:70, includes/customizer/settings/portfolio-single/popup.php:11, includes/customizer/settings/portfolio-single/popup.php:64, includes/customizer/settings/portfolio-single/settings.php:75, includes/customizer/settings/post-types/popup.php:158, includes/customizer/settings/title-bar/popup.php:11, includes/customizer/settings/title-bar/settings.php:86, includes/customizer/settings/title-bar/settings.php:193
444
- msgid "Title"
445
  msgstr ""
446
 
447
- #: includes/widgets/widget-posts.php:40, includes/customizer/settings/search/settings.php:21
448
- msgid "Post"
449
  msgstr ""
450
 
451
- #: includes/widgets/widget-posts.php:49
452
- msgid "Recent"
453
  msgstr ""
454
 
455
- #: includes/widgets/widget-posts.php:50
456
- msgid "Popular"
457
  msgstr ""
458
 
459
- #: includes/widgets/widget-posts.php:51
460
- msgid "Commented"
461
  msgstr ""
462
 
463
- #: includes/widgets/widget-posts.php:80
464
- msgid "Show portfolio title on hover"
465
  msgstr ""
466
 
467
- #: includes/widgets/widget-posts.php:89
468
- msgid "Show post date"
469
  msgstr ""
470
 
471
- #: includes/widgets/widget-posts.php:98
472
- msgid "Show comment count"
473
  msgstr ""
474
 
475
- #: includes/widgets/widget-posts.php:107
476
- msgid "Show thumbnail"
477
  msgstr ""
478
 
479
- #: includes/widgets/widget-posts.php:116
480
- msgid "Number of posts to show"
481
  msgstr ""
482
 
483
- #: includes/widgets/widget-posts.php:122
484
- msgid "Order by"
485
  msgstr ""
486
 
487
- #: includes/widgets/widget-posts.php:124, includes/customizer/settings/blog-single/settings.php:127, includes/customizer/settings/comment/popup.php:16, includes/customizer/settings/comment/popup.php:70, includes/customizer/settings/comment/settings.php:34, includes/customizer/settings/portfolio-single/settings.php:76, includes/customizer/settings/post-types/popup.php:159
488
- msgid "Date"
489
  msgstr ""
490
 
491
- #: includes/widgets/widget-posts.php:126
492
- msgid "Menu order"
493
  msgstr ""
494
 
495
- #: includes/widgets/widget-posts.php:127
496
- msgid "Random"
497
  msgstr ""
498
 
499
- #: includes/widgets/widget-posts.php:318
500
- msgid " on "
501
  msgstr ""
502
 
503
- #: includes/widgets/widget-posts.php:438
504
- msgid "No Comments"
505
  msgstr ""
506
 
507
- #: includes/widgets/widget-posts.php:440
508
- msgid " Comments"
509
  msgstr ""
510
 
511
- #: includes/widgets/widget-posts.php:442
512
- msgid "1 Comment"
513
  msgstr ""
514
 
515
- #: includes/widgets/widget-social.php:28, includes/widgets/widget-social.php:158
516
- msgid "Jupiter X - Social Networks"
517
  msgstr ""
518
 
519
- #: includes/widgets/widget-social.php:29
520
- msgid "Social network icons."
521
  msgstr ""
522
 
523
- #: includes/widgets/widget-social.php:37
524
- msgid "Choose social networks"
525
  msgstr ""
526
 
527
- #: includes/widgets/widget-social.php:41
528
- msgid "Android"
529
  msgstr ""
530
 
531
- #: includes/widgets/widget-social.php:42
532
- msgid "Apple"
533
  msgstr ""
534
 
535
- #: includes/widgets/widget-social.php:43
536
- msgid "Behance"
537
  msgstr ""
538
 
539
- #: includes/widgets/widget-social.php:44
540
- msgid "Bitbucket"
541
  msgstr ""
542
 
543
- #: includes/widgets/widget-social.php:45
544
- msgid "Delicious"
545
  msgstr ""
546
 
547
- #: includes/widgets/widget-social.php:46
548
- msgid "Digg"
549
  msgstr ""
550
 
551
- #: includes/widgets/widget-social.php:47
552
- msgid "Dribbble"
553
  msgstr ""
554
 
555
- #: includes/widgets/widget-social.php:48
556
- msgid "Facebook"
557
  msgstr ""
558
 
559
- #: includes/widgets/widget-social.php:49
560
- msgid "Flickr"
561
  msgstr ""
562
 
563
- #: includes/widgets/widget-social.php:50
564
- msgid "Foursquare"
565
  msgstr ""
566
 
567
- #: includes/widgets/widget-social.php:51
568
- msgid "Github"
569
  msgstr ""
570
 
571
- #: includes/widgets/widget-social.php:52
572
- msgid "Google Plus"
573
  msgstr ""
574
 
575
- #: includes/widgets/widget-social.php:53
576
- msgid "Instagram"
577
  msgstr ""
578
 
579
- #: includes/widgets/widget-social.php:54
580
- msgid "JSFiddle"
581
  msgstr ""
582
 
583
- #: includes/widgets/widget-social.php:55
584
- msgid "Linkedin"
585
  msgstr ""
586
 
587
- #: includes/widgets/widget-social.php:56
588
- msgid "Medium"
589
  msgstr ""
590
 
591
- #: includes/widgets/widget-social.php:57
592
- msgid "Pinterest"
593
  msgstr ""
594
 
595
- #: includes/widgets/widget-social.php:58
596
- msgid "Product Hunt"
597
  msgstr ""
598
 
599
- #: includes/widgets/widget-social.php:59
600
- msgid "Reddit"
601
  msgstr ""
602
 
603
- #: includes/widgets/widget-social.php:60
604
- msgid "RSS"
605
  msgstr ""
606
 
607
- #: includes/widgets/widget-social.php:61
608
- msgid "Skype"
609
  msgstr ""
610
 
611
- #: includes/widgets/widget-social.php:62
612
- msgid "Snapchat"
613
  msgstr ""
614
 
615
- #: includes/widgets/widget-social.php:63
616
- msgid "Soundcloud"
617
  msgstr ""
618
 
619
- #: includes/widgets/widget-social.php:64
620
- msgid "Spotify"
621
  msgstr ""
622
 
623
- #: includes/widgets/widget-social.php:65
624
- msgid "Stack Overflow"
625
  msgstr ""
626
 
627
- #: includes/widgets/widget-social.php:66
628
- msgid "Steam"
629
  msgstr ""
630
 
631
- #: includes/widgets/widget-social.php:67
632
- msgid "Stumbleupon"
633
  msgstr ""
634
 
635
- #: includes/widgets/widget-social.php:68
636
- msgid "Telegram"
637
  msgstr ""
638
 
639
- #: includes/widgets/widget-social.php:69
640
- msgid "TripAdvisor"
641
  msgstr ""
642
 
643
- #: includes/widgets/widget-social.php:70
644
- msgid "Tumblr"
645
  msgstr ""
646
 
647
- #: includes/widgets/widget-social.php:71
648
- msgid "Twitch"
649
  msgstr ""
650
 
651
- #: includes/widgets/widget-social.php:72
652
- msgid "Twitter"
653
  msgstr ""
654
 
655
- #: includes/widgets/widget-social.php:73
656
- msgid "Vimeo"
657
  msgstr ""
658
 
659
- #: includes/widgets/widget-social.php:74
660
- msgid "VK"
661
  msgstr ""
662
 
663
- #: includes/widgets/widget-social.php:75
664
- msgid "Weibo"
665
  msgstr ""
666
 
667
- #: includes/widgets/widget-social.php:76
668
- msgid "Weixin"
669
  msgstr ""
670
 
671
- #: includes/widgets/widget-social.php:77
672
- msgid "Whatsapp"
673
  msgstr ""
674
 
675
- #: includes/widgets/widget-social.php:78
676
- msgid "WordPress"
677
  msgstr ""
678
 
679
- #: includes/widgets/widget-social.php:79
680
- msgid "Xing"
681
  msgstr ""
682
 
683
- #: includes/widgets/widget-social.php:80
684
- msgid "Yelp"
685
  msgstr ""
686
 
687
- #: includes/widgets/widget-social.php:81
688
- msgid "Youtube"
689
  msgstr ""
690
 
691
- #: includes/widgets/widget-social.php:82
692
- msgid "500px"
693
  msgstr ""
694
 
695
- #: includes/widgets/widget-social.php:88
696
- msgid "Open links in new tab"
697
  msgstr ""
698
 
699
- #: includes/widgets/widget-social.php:97
700
- msgid "Icon size"
701
  msgstr ""
702
 
703
- #: includes/widgets/widget-social.php:104
704
- msgid "Border radius"
705
  msgstr ""
706
 
707
- #: includes/widgets/widget-social.php:110
708
- msgid "Space between icons"
709
  msgstr ""
710
 
711
- #: includes/widgets/widget-social.php:115
712
- msgid "Use custom colors"
713
  msgstr ""
714
 
715
- #: includes/widgets/widget-social.php:120
716
- msgid "Icon color"
717
  msgstr ""
718
 
719
- #: includes/widgets/widget-social.php:129
720
- msgid "Background color"
721
  msgstr ""
722
 
723
- #: includes/widgets/widget-social.php:138
724
- msgid "Icon hover color"
725
  msgstr ""
726
 
727
- #: includes/widgets/widget-social.php:147
728
- msgid "Background hover color"
729
  msgstr ""
730
 
731
- #: includes/woocommerce/woocommerce-load-more.php:36, includes/woocommerce/woocommerce-load-more.php:61, includes/customizer/settings/product-list/settings.php:43
732
- msgid "Load More"
733
  msgstr ""
734
 
735
- #: includes/woocommerce/woocommerce-load-more.php:62
736
- msgid "Loading"
737
  msgstr ""
738
 
739
- #: includes/woocommerce/woocommerce-load-more.php:83, includes/control-panel/includes/class-system-status.php:55
740
- msgid "Nonce can't be verified"
741
  msgstr ""
742
 
743
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:24
744
- msgid "Raven"
745
  msgstr ""
746
 
747
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:31, includes/admin/tgmpa/tgmpa-plugin-list.php:41, includes/admin/tgmpa/tgmpa-plugin-list.php:51, includes/admin/tgmpa/tgmpa-plugin-list.php:61, includes/admin/tgmpa/tgmpa-plugin-list.php:71, includes/admin/tgmpa/tgmpa-plugin-list.php:81, includes/admin/tgmpa/tgmpa-plugin-list.php:91, includes/admin/tgmpa/tgmpa-plugin-list.php:101, includes/admin/tgmpa/tgmpa-plugin-list.php:111, includes/admin/tgmpa/tgmpa-plugin-list.php:121, includes/admin/tgmpa/tgmpa-plugin-list.php:131, includes/admin/tgmpa/tgmpa-plugin-list.php:141, includes/admin/tgmpa/tgmpa-plugin-list.php:151, includes/admin/tgmpa/tgmpa-plugin-list.php:161, includes/admin/tgmpa/tgmpa-plugin-list.php:171, includes/admin/tgmpa/tgmpa-plugin-list.php:181, includes/admin/tgmpa/tgmpa-plugin-list.php:190, includes/admin/tgmpa/tgmpa-plugin-list.php:199
748
- msgid "Optional"
749
  msgstr ""
750
 
751
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:34
752
- msgid "Jupiter Donut"
753
  msgstr ""
754
 
755
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:44
756
- msgid "Jet Elements"
757
  msgstr ""
758
 
759
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:54
760
- msgid "Jet Blog"
761
  msgstr ""
762
 
763
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:64
764
- msgid "Jet Menu"
765
  msgstr ""
766
 
767
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:74
768
- msgid "Jet Popup"
769
  msgstr ""
770
 
771
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:84
772
- msgid "Jet Tabs"
773
  msgstr ""
774
 
775
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:94
776
- msgid "Jet WooBuilder"
777
  msgstr ""
778
 
779
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:104
780
- msgid "Jet Tricks"
781
  msgstr ""
782
 
783
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:114
784
- msgid "Jet Engine"
785
  msgstr ""
786
 
787
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:124
788
- msgid "Jet SmartFilters"
789
  msgstr ""
790
 
791
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:134
792
- msgid "Advanced Custom Fields PRO"
793
  msgstr ""
794
 
795
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:144
796
- msgid "Slider Revolution"
797
  msgstr ""
798
 
799
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:154
800
- msgid "Master Slider"
801
  msgstr ""
802
 
803
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:164
804
- msgid "Layer Slider"
805
  msgstr ""
806
 
807
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:174
808
- msgid "WPBakery Page Builder"
809
  msgstr ""
810
 
811
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:184
812
- msgid "Customizer Reset"
813
  msgstr ""
814
 
815
- #: includes/admin/tgmpa/tgmpa-plugin-list.php:193
816
- msgid "Customizer Export/Import"
817
  msgstr ""
818
 
819
- #: includes/control-panel/includes/class-db-manager.php:139
820
- msgid "Can not create backup db file."
821
  msgstr ""
822
 
823
- #: includes/control-panel/includes/class-db-manager.php:174
824
- msgid "Can not create media records backup file."
825
  msgstr ""
826
 
827
- #: includes/control-panel/includes/class-db-manager.php:213
828
- msgid "There was an error unzipping the backup file."
829
  msgstr ""
830
 
831
- #: includes/control-panel/includes/class-db-manager.php:227
832
- msgid "Invalid backup file."
833
  msgstr ""
834
 
835
- #: includes/control-panel/includes/class-db-manager.php:234
836
- msgid "The backup file is not exists or not readable."
837
- msgstr ""
838
-
839
- #: includes/control-panel/includes/class-db-manager.php:338
840
- msgid "Media records backup file is not exists or not readable"
841
  msgstr ""
842
 
843
- #: includes/control-panel/includes/class-db-php-manager.php:52
844
- msgid "Can't open: "
845
  msgstr ""
846
 
847
- #: includes/control-panel/includes/class-db-php-manager.php:115
848
- msgid "Please contact your database administrator to fix the error. Error: "
849
  msgstr ""
850
 
851
- #: includes/control-panel/includes/class-db-php-manager.php:164
852
- msgid "File not exist: "
853
  msgstr ""
854
 
855
- #: includes/control-panel/includes/class-db-php-manager.php:169
856
- msgid "Can't read: "
857
  msgstr ""
858
 
859
- #: includes/control-panel/includes/class-export-import-content.php:119
860
- msgid "Step param is missing."
861
  msgstr ""
862
 
863
- #: includes/control-panel/includes/class-export-import-content.php:136
864
- msgid "Attachment ID param is missing."
865
  msgstr ""
866
 
867
- #: includes/control-panel/includes/class-export-import-content.php:192, includes/control-panel/includes/class-export-import-content.php:773
868
- msgid "Step param (%s) is not valid."
869
  msgstr ""
870
 
871
- #: includes/control-panel/includes/class-export-import-content.php:213
872
- msgid "A problem occurred in cleaning export directory."
873
  msgstr ""
874
 
875
- #: includes/control-panel/includes/class-export-import-content.php:239
876
- msgid "A problem occurred in exporting Content."
877
  msgstr ""
878
 
879
- #: includes/control-panel/includes/class-export-import-content.php:424
880
- msgid "A problem occurred in exporting widgets."
881
  msgstr ""
882
 
883
- #: includes/control-panel/includes/class-export-import-content.php:476
884
- msgid "All settings in Settings are set to default. Uncheck the Settings option or change one setting in Settings then export."
885
  msgstr ""
886
 
887
- #: includes/control-panel/includes/class-export-import-content.php:480
888
- msgid "A problem occurred in exporting Settings."
889
  msgstr ""
890
 
891
- #: includes/control-panel/includes/class-export-import-content.php:819, includes/control-panel/includes/class-export-import-content.php:979
892
- msgid "A required file (%s) is missing in the selected zip file."
893
  msgstr ""
894
 
895
- #: includes/control-panel/includes/class-export-import-content.php:840
896
- msgid "Error in parsing %s."
897
  msgstr ""
898
 
899
- #: includes/control-panel/includes/class-export-import-content.php:991
900
- msgid "A problem occurred in importing Widgets."
901
  msgstr ""
902
 
903
- #: includes/control-panel/includes/class-export-import-content.php:1023
904
- msgid "%s is missing in the selected zip file."
905
  msgstr ""
906
 
907
- #: includes/control-panel/includes/class-export-import-content.php:1037
908
- msgid "Error importing settings! Please check that you uploaded (%s) a Settings export file."
909
  msgstr ""
910
 
911
- #: includes/control-panel/includes/class-export-import-content.php:1042
912
- msgid "Error importing settings! template Please check that you uploaded (%s) a Settings export file."
913
  msgstr ""
914
 
915
- #: includes/control-panel/includes/class-filesystem.php:115
916
- msgid "Unable to connect to the filesystem. Please confirm your credentials."
917
  msgstr ""
918
 
919
- #: includes/control-panel/includes/class-filesystem.php:169
920
- msgid "Invalid method for $wp_filesystem object!"
921
  msgstr ""
922
 
923
- #: includes/control-panel/includes/class-filesystem.php:235, includes/control-panel/includes/class-helpers.php:95
924
- msgid "Can't create directory %s"
925
  msgstr ""
926
 
927
- #: includes/control-panel/includes/class-filesystem.php:255
928
- msgid "A directory exists has same name %s"
929
  msgstr ""
930
 
931
- #: includes/control-panel/includes/class-filesystem.php:279
932
- msgid "File already exists %s"
933
  msgstr ""
934
 
935
- #: includes/control-panel/includes/class-filesystem.php:284
936
- msgid "Copy source file not exists: %s"
937
  msgstr ""
938
 
939
- #: includes/control-panel/includes/class-filesystem.php:289
940
- msgid "Copy source file not valid: %s"
941
  msgstr ""
942
 
943
- #: includes/control-panel/includes/class-filesystem.php:294
944
- msgid "Copy source file not readable: %s"
945
  msgstr ""
946
 
947
- #: includes/control-panel/includes/class-filesystem.php:395
948
- msgid "Zip source file not exists: %s"
949
  msgstr ""
950
 
951
- #: includes/control-panel/includes/class-filesystem.php:400
952
- msgid "Zip source file not valid: %s"
953
  msgstr ""
954
 
955
- #: includes/control-panel/includes/class-filesystem.php:405
956
- msgid "Zip source file not readable: %s"
957
  msgstr ""
958
 
959
- #: includes/control-panel/includes/class-filesystem.php:419
960
- msgid "Failed to create unzip destination directory: %s"
961
  msgstr ""
962
 
963
- #: includes/control-panel/includes/class-filesystem.php:426
964
- msgid "Unzip destination is not writable: %s"
965
  msgstr ""
966
 
967
- #: includes/control-panel/includes/class-filesystem.php:440
968
- msgid "Failed unzipping file: %s"
969
  msgstr ""
970
 
971
- #: includes/control-panel/includes/class-helpers.php:39
972
- msgid "Zip file that you are looking for is not exist"
973
  msgstr ""
974
 
975
- #: includes/control-panel/includes/class-helpers.php:45
976
- msgid "Unzip destination path not exist"
977
  msgstr ""
978
 
979
- #: includes/control-panel/includes/class-helpers.php:51
980
- msgid "Unzip destination is not writable , Please resolve this issue first."
981
  msgstr ""
982
 
983
- #: includes/control-panel/includes/class-helpers.php:89
984
- msgid "%s directory is not writable"
985
  msgstr ""
986
 
987
- #: includes/control-panel/includes/class-helpers.php:120
988
- msgid "Destination directory is not ready for upload . {%s}"
989
  msgstr ""
990
 
991
- #: includes/control-panel/includes/class-helpers.php:151
992
- msgid "Can't write file to {%s}"
993
  msgstr ""
994
 
995
- #: includes/control-panel/includes/class-helpers.php:282
996
- msgid "SSL connection error. Code: template-assets-get"
997
  msgstr ""
998
 
999
- #: includes/control-panel/includes/class-install-plugins.php:410
1000
- msgid "Action is not valid."
1001
  msgstr ""
1002
 
1003
- #: includes/control-panel/includes/class-install-plugins.php:435
1004
- msgid "Can't deactivate plugin"
1005
  msgstr ""
1006
 
1007
- #: includes/control-panel/includes/class-install-plugins.php:441
1008
- msgid "Sorry, you are not allowed to deactivate this plugin."
1009
  msgstr ""
1010
 
1011
- #: includes/control-panel/includes/class-install-plugins.php:446
1012
- msgid "Deactivated Successfully."
1013
  msgstr ""
1014
 
1015
- #: includes/control-panel/includes/class-install-template.php:667
1016
- msgid "Installing"
1017
  msgstr ""
1018
 
1019
- #: includes/control-panel/includes/class-install-template.php:719
1020
- msgid "Data of plugins have imported."
1021
  msgstr ""
1022
 
1023
- #: includes/control-panel/includes/class-install-template.php:1108
1024
- msgid "Error importing settings! Please check that you uploaded (%s) a settings export file."
1025
  msgstr ""
1026
 
1027
- #: includes/control-panel/includes/class-install-template.php:1113
1028
- msgid "Error importing settings! template Please check that you uploaded (%s) a settings export file."
1029
  msgstr ""
1030
 
1031
- #: includes/control-panel/includes/class-settings.php:78
1032
- msgid "Assets flushed successfully."
1033
  msgstr ""
1034
 
1035
- #: includes/control-panel/includes/class-settings.php:90
1036
- msgid "Fields param is missing."
1037
  msgstr ""
1038
 
1039
- #: includes/control-panel/includes/class-settings.php:112
1040
- msgid "Settings saved successfully."
1041
  msgstr ""
1042
 
1043
- #: includes/control-panel/includes/class-system-status.php:157
1044
- msgid "HTTP requests have been blocked by the WP_HTTP_BLOCK_EXTERNAL constant, with no allowed hosts."
1045
  msgstr ""
1046
 
1047
- #: includes/control-panel/includes/class-system-status.php:163
1048
- msgid "HTTP requests have been blocked by the WP_HTTP_BLOCK_EXTERNAL constant, with some hosts whitelisted: %s."
1049
  msgstr ""
1050
 
1051
- #: includes/control-panel/includes/class-system-status.php:362, includes/control-panel/views/install-templates.php:15
1052
- msgid "Read More"
1053
  msgstr ""
1054
 
1055
- #: includes/control-panel/includes/class-system-status.php:365, includes/control-panel/includes/class-system-status.php:370
1056
- msgid "Insufficient memory. You need at least 256MB of memory."
1057
  msgstr ""
1058
 
1059
- #: includes/control-panel/includes/logic-messages.php:37, includes/control-panel/includes/logic-messages.php:45, includes/control-panel/includes/logic-messages.php:49, includes/control-panel/includes/logic-messages.php:53, includes/control-panel/includes/logic-messages.php:57, includes/control-panel/includes/logic-messages.php:61, includes/control-panel/includes/logic-messages.php:160, includes/control-panel/includes/logic-messages.php:164, includes/control-panel/includes/logic-messages.php:168, includes/control-panel/includes/logic-messages.php:172, includes/control-panel/includes/logic-messages.php:176, includes/control-panel/includes/logic-messages.php:180, includes/control-panel/includes/logic-messages.php:184, includes/control-panel/includes/logic-messages.php:188, includes/control-panel/includes/logic-messages.php:192, includes/control-panel/includes/logic-messages.php:196, includes/control-panel/includes/logic-messages.php:200, includes/control-panel/includes/logic-messages.php:208, includes/control-panel/includes/logic-messages.php:212, includes/control-panel/includes/logic-messages.php:216, includes/control-panel/includes/logic-messages.php:220, includes/control-panel/includes/logic-messages.php:224, includes/control-panel/includes/logic-messages.php:228, includes/control-panel/includes/logic-messages.php:232, includes/control-panel/includes/logic-messages.php:236, includes/control-panel/includes/logic-messages.php:240, includes/control-panel/includes/logic-messages.php:244, includes/control-panel/includes/logic-messages.php:248, includes/control-panel/includes/logic-messages.php:252, includes/control-panel/includes/logic-messages.php:256, includes/control-panel/includes/logic-messages.php:260, includes/control-panel/includes/logic-messages.php:264, includes/control-panel/includes/logic-messages.php:268, includes/control-panel/includes/logic-messages.php:272, includes/control-panel/includes/logic-messages.php:276, includes/control-panel/includes/logic-messages.php:280, includes/control-panel/includes/logic-messages.php:284, includes/control-panel/includes/logic-messages.php:288, includes/control-panel/includes/logic-messages.php:292, includes/control-panel/includes/logic-messages.php:296, includes/control-panel/includes/logic-messages.php:300, includes/control-panel/includes/logic-messages.php:304, includes/control-panel/includes/logic-messages.php:308, includes/control-panel/includes/logic-messages.php:312, includes/control-panel/includes/logic-messages.php:316, includes/control-panel/includes/logic-messages.php:320, includes/control-panel/includes/logic-messages.php:324, includes/control-panel/includes/logic-messages.php:328, includes/control-panel/includes/logic-messages.php:332, includes/control-panel/includes/logic-messages.php:336, includes/control-panel/includes/logic-messages.php:340, includes/control-panel/includes/logic-messages.php:344, includes/control-panel/includes/logic-messages.php:348
 
1060
  msgstr ""
1061
 
1062
- #: includes/control-panel/includes/logic-messages.php:68
1063
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 200)"
1064
  msgstr ""
1065
 
1066
- #: includes/control-panel/includes/logic-messages.php:72
1067
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 201)"
1068
  msgstr ""
1069
 
1070
- #: includes/control-panel/includes/logic-messages.php:76
1071
- msgid "Your plugin has been successfully added and activated."
1072
  msgstr ""
1073
 
1074
- #: includes/control-panel/includes/logic-messages.php:80
1075
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 202)"
1076
  msgstr ""
1077
 
1078
- #: includes/control-panel/includes/logic-messages.php:84
1079
- msgid "Congratulations,your operation has been done successfully"
1080
  msgstr ""
1081
 
1082
- #: includes/control-panel/includes/logic-messages.php:88
1083
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 203)"
1084
  msgstr ""
1085
 
1086
- #: includes/control-panel/includes/logic-messages.php:92
1087
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 204)"
1088
  msgstr ""
1089
 
1090
- #: includes/control-panel/includes/logic-messages.php:96
1091
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 205)"
1092
  msgstr ""
1093
 
1094
- #: includes/control-panel/includes/logic-messages.php:100
1095
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 206)"
1096
  msgstr ""
1097
 
1098
- #: includes/control-panel/includes/logic-messages.php:104
1099
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 207)"
1100
  msgstr ""
1101
 
1102
- #: includes/control-panel/includes/logic-messages.php:108
1103
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 208)"
1104
  msgstr ""
1105
 
1106
- #: includes/control-panel/includes/logic-messages.php:112
1107
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 209)"
1108
  msgstr ""
1109
 
1110
- #: includes/control-panel/includes/logic-messages.php:116
1111
- msgid "To remove your plugin, please deactivate it first and then try again."
1112
  msgstr ""
1113
 
1114
- #: includes/control-panel/includes/logic-messages.php:120
1115
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 210)"
1116
  msgstr ""
1117
 
1118
- #: includes/control-panel/includes/logic-messages.php:124
1119
- msgid "Your plugin have been successfully updated."
1120
  msgstr ""
1121
 
1122
- #: includes/control-panel/includes/logic-messages.php:128
1123
- msgid "Your plugin have been successfully removed."
1124
  msgstr ""
1125
 
1126
- #: includes/control-panel/includes/logic-messages.php:132
1127
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 211)"
1128
  msgstr ""
1129
 
1130
- #: includes/control-panel/includes/logic-messages.php:136
1131
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 212)"
1132
  msgstr ""
1133
 
1134
- #: includes/control-panel/includes/logic-messages.php:140
1135
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 213)"
1136
  msgstr ""
1137
 
1138
- #: includes/control-panel/includes/logic-messages.php:144
1139
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 214)"
1140
  msgstr ""
1141
 
1142
- #: includes/control-panel/includes/logic-messages.php:148
1143
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 215)"
1144
  msgstr ""
1145
 
1146
- #: includes/control-panel/includes/logic-messages.php:152
1147
- msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 216)"
1148
  msgstr ""
1149
 
1150
- #: includes/control-panel/views/export-import-content.php:7
1151
- msgid "The Export/Import feature is deprecated. To migrate/backup your website use <a href=\"%s\" target=\"_blank\">3rd-party plugins</a>."
1152
  msgstr ""
1153
 
1154
- #: includes/control-panel/views/export-import-content.php:8, includes/control-panel/views/export-import-content.php:49
1155
- msgid "Export"
1156
  msgstr ""
1157
 
1158
- #: includes/control-panel/views/export-import-content.php:20
1159
- msgid "Site Content"
1160
  msgstr ""
1161
 
1162
- #: includes/control-panel/views/export-import-content.php:27, includes/customizer/settings/sidebar/divider.php:54
1163
- msgid "Widgets"
1164
  msgstr ""
1165
 
1166
- #: includes/control-panel/views/export-import-content.php:41
1167
- msgid "Custom Tables"
1168
  msgstr ""
1169
 
1170
- #: includes/control-panel/views/export-import-content.php:54, includes/control-panel/views/export-import-content.php:72
1171
- msgid "Import"
1172
  msgstr ""
1173
 
1174
- #: includes/control-panel/views/export-import-content.php:62
1175
- msgid "Upload"
1176
  msgstr ""
1177
 
1178
- #: includes/control-panel/views/image-sizes.php:17
1179
- msgid "Custom size for images"
1180
  msgstr ""
1181
 
1182
- #: includes/control-panel/views/image-sizes.php:20
1183
- msgid "Add a New Size"
1184
  msgstr ""
1185
 
1186
- #: includes/control-panel/views/image-sizes.php:33, includes/control-panel/views/system-status.php:314, includes/customizer/settings/comment/popup.php:15, includes/customizer/settings/comment/popup.php:69, includes/customizer/settings/product-list/settings.php:75
1187
- msgid "Name"
1188
  msgstr ""
1189
 
1190
- #: includes/control-panel/views/image-sizes.php:36, includes/customizer/settings/footer/widgets-thumbnail.php:17, includes/customizer/settings/sidebar/widgets-thumbnail.php:17
1191
- msgid "Size"
1192
  msgstr ""
1193
 
1194
- #: includes/control-panel/views/image-sizes.php:39
1195
- msgid "Crop"
1196
  msgstr ""
1197
 
1198
- #: includes/control-panel/views/image-sizes.php:46, includes/customizer/api/includes/control/class-template.php:100
1199
- msgid "Edit"
1200
  msgstr ""
1201
 
1202
- #: includes/control-panel/views/image-sizes.php:47, includes/customizer/api/includes/class-templates.php:74, includes/customizer/api/includes/class-templates.php:131
1203
- msgid "Remove"
1204
  msgstr ""
1205
 
1206
- #: includes/control-panel/views/install-templates.php:13
1207
- msgid "Template installation is only allowed for user with Super Admin role. Please contact your website's administrator."
1208
  msgstr ""
1209
 
1210
- #: includes/control-panel/views/install-templates.php:34
1211
- msgid "Restore from Last Backup"
1212
  msgstr ""
1213
 
1214
- #: includes/control-panel/views/install-templates.php:42
1215
- msgid "Installed Template"
1216
  msgstr ""
1217
 
1218
- #: includes/control-panel/views/install-templates.php:43, includes/control-panel/views/install-templates.php:53
1219
- msgid "Installing a Template"
1220
  msgstr ""
1221
 
1222
- #: includes/control-panel/views/install-templates.php:52
1223
- msgid "Templates"
1224
  msgstr ""
1225
 
1226
- #: includes/control-panel/views/settings.php:20
1227
- msgid "Flush Assets Cache"
1228
  msgstr ""
1229
 
1230
- #: includes/control-panel/views/settings.php:21
1231
- msgid "Flushing..."
1232
  msgstr ""
1233
 
1234
- #: includes/control-panel/views/settings.php:22
1235
- msgid "Clear CSS, Javascript and images cached files. New cached versions will be compiled/created on page load."
1236
  msgstr ""
1237
 
1238
- #: includes/control-panel/views/settings.php:26
1239
- msgid "Development Mode"
1240
  msgstr ""
1241
 
1242
- #: includes/control-panel/views/settings.php:32
1243
- msgid "This option should be enabled while your website is in development."
1244
  msgstr ""
1245
 
1246
- #: includes/control-panel/views/settings.php:35
1247
- msgid "Cache Busting"
1248
  msgstr ""
1249
 
1250
- #: includes/control-panel/views/settings.php:41
1251
- msgid "Enable cache busting technique."
1252
  msgstr ""
1253
 
1254
- #: includes/control-panel/views/settings.php:46
1255
- msgid "Custom Post Types"
1256
  msgstr ""
1257
 
1258
- #: includes/control-panel/views/settings.php:47
1259
- msgid "Enable Jupiter features (customizer, meta options, etc.) for these post types."
1260
  msgstr ""
1261
 
1262
- #: includes/control-panel/views/settings.php:60
1263
- msgid "No custom post type was found."
1264
  msgstr ""
1265
 
1266
- #: includes/control-panel/views/settings.php:69
1267
- msgid "Twitter Consumer Key"
1268
  msgstr ""
1269
 
1270
- #: includes/control-panel/views/settings.php:73
1271
- msgid "Twitter Consumer Secret"
1272
  msgstr ""
1273
 
1274
- #: includes/control-panel/views/settings.php:77
1275
- msgid "Twitter Access Token"
 
1276
  msgstr ""
1277
 
1278
- #: includes/control-panel/views/settings.php:81
1279
- msgid "Twitter Access Token Secret"
1280
  msgstr ""
1281
 
1282
- #: includes/control-panel/views/settings.php:85
1283
- msgid "MailChimp API Key"
1284
  msgstr ""
1285
 
1286
- #: includes/control-panel/views/settings.php:89
1287
- msgid "Mailchimp List ID"
1288
  msgstr ""
1289
 
1290
- #: includes/control-panel/views/settings.php:93
1291
- msgid "Google Maps API Key"
1292
  msgstr ""
1293
 
1294
- #: includes/control-panel/views/settings.php:99
1295
- msgid "Save Settings"
1296
  msgstr ""
1297
 
1298
- #: includes/control-panel/views/settings.php:100
1299
- msgid "Saving..."
1300
  msgstr ""
1301
 
1302
- #: includes/control-panel/views/system-status.php:12
1303
- msgid "Checking Server Requirements"
1304
  msgstr ""
1305
 
1306
- #: includes/control-panel/views/system-status.php:16
1307
- msgid "Get System Report"
1308
  msgstr ""
1309
 
1310
- #: includes/control-panel/views/system-status.php:27
1311
- msgid "WordPress Environment"
1312
  msgstr ""
1313
 
1314
- #: includes/control-panel/views/system-status.php:34
1315
- msgid "Home URL"
1316
  msgstr ""
1317
 
1318
- #: includes/control-panel/views/system-status.php:37
1319
- msgid "The URL of your site's homepage."
1320
  msgstr ""
1321
 
1322
- #: includes/control-panel/views/system-status.php:44
1323
- msgid "Site URL"
1324
  msgstr ""
1325
 
1326
- #: includes/control-panel/views/system-status.php:47
1327
- msgid "The root URL of your site."
1328
  msgstr ""
1329
 
1330
- #: includes/control-panel/views/system-status.php:55
1331
- msgid "WP Content URL"
1332
  msgstr ""
1333
 
1334
- #: includes/control-panel/views/system-status.php:58
1335
- msgid "The URL of WordPress's content directory."
1336
  msgstr ""
1337
 
1338
- #: includes/control-panel/views/system-status.php:66
1339
- msgid "WP Upload Path"
1340
  msgstr ""
1341
 
1342
- #: includes/control-panel/views/system-status.php:69
1343
- msgid "The absolute path to WordPress's upload directory."
1344
  msgstr ""
1345
 
1346
- #: includes/control-panel/views/system-status.php:77
1347
- msgid "WP Upload URL"
1348
  msgstr ""
1349
 
1350
- #: includes/control-panel/views/system-status.php:80
1351
- msgid "The URL of WordPress's upload directory."
1352
  msgstr ""
1353
 
1354
- #: includes/control-panel/views/system-status.php:88
1355
- msgid "WP Version"
1356
  msgstr ""
1357
 
1358
- #: includes/control-panel/views/system-status.php:91
1359
- msgid "The version of WordPress installed on your site."
1360
  msgstr ""
1361
 
1362
- #: includes/control-panel/views/system-status.php:99
1363
- msgid "WP Multisite"
1364
  msgstr ""
1365
 
1366
- #: includes/control-panel/views/system-status.php:102
1367
- msgid "Whether or not you have WordPress Multisite enabled."
1368
  msgstr ""
1369
 
1370
- #: includes/control-panel/views/system-status.php:114
1371
- msgid "Permalink Structure"
1372
  msgstr ""
1373
 
1374
- #: includes/control-panel/views/system-status.php:117
1375
- msgid "The current permalink structure as defined in WordPress Settings->Permalinks."
1376
  msgstr ""
1377
 
1378
- #: includes/control-panel/views/system-status.php:126
1379
- msgid "Front Page Display"
1380
  msgstr ""
1381
 
1382
- #: includes/control-panel/views/system-status.php:129
1383
- msgid "The current Reading mode of WordPress."
1384
  msgstr ""
1385
 
1386
- #: includes/control-panel/views/system-status.php:139
1387
- msgid "Front Page"
1388
  msgstr ""
1389
 
1390
- #: includes/control-panel/views/system-status.php:142
1391
- msgid "The currently selected page which acts as the site's Front Page."
1392
  msgstr ""
1393
 
1394
- #: includes/control-panel/views/system-status.php:150
1395
- msgid "Posts Page"
1396
  msgstr ""
1397
 
1398
- #: includes/control-panel/views/system-status.php:153
1399
- msgid "The currently selected page in where blog posts are displayed."
1400
  msgstr ""
1401
 
1402
- #: includes/control-panel/views/system-status.php:164
1403
- msgid "WP Memory Limit"
1404
  msgstr ""
1405
 
1406
- #: includes/control-panel/views/system-status.php:167
1407
- msgid "The maximum amount of memory (RAM) that your site can use at one time."
1408
  msgstr ""
1409
 
1410
- #: includes/control-panel/views/system-status.php:183
1411
- msgid "Database Table Prefix"
1412
  msgstr ""
1413
 
1414
- #: includes/control-panel/views/system-status.php:186
1415
- msgid "The prefix structure of the current WordPress database."
1416
  msgstr ""
1417
 
1418
- #: includes/control-panel/views/system-status.php:194
1419
- msgid "WP Debug Mode"
1420
  msgstr ""
1421
 
1422
- #: includes/control-panel/views/system-status.php:197
1423
- msgid "Displays whether or not WordPress is in Debug Mode."
1424
  msgstr ""
1425
 
1426
- #: includes/control-panel/views/system-status.php:209
1427
- msgid "Language"
1428
  msgstr ""
1429
 
1430
- #: includes/control-panel/views/system-status.php:212
1431
- msgid "The current language used by WordPress. Default = English"
1432
  msgstr ""
1433
 
1434
- #: includes/control-panel/views/system-status.php:220
1435
- msgid "The Main WP Directory"
1436
  msgstr ""
1437
 
1438
- #: includes/control-panel/views/system-status.php:223
1439
- msgid "Check if main WP directory is writable."
1440
  msgstr ""
1441
 
1442
- #: includes/control-panel/views/system-status.php:228, includes/control-panel/views/system-status.php:245, includes/control-panel/views/system-status.php:262, includes/control-panel/views/system-status.php:279, includes/control-panel/views/system-status.php:296
1443
- msgid "Writable"
1444
  msgstr ""
1445
 
1446
- #: includes/control-panel/views/system-status.php:231, includes/control-panel/views/system-status.php:248, includes/control-panel/views/system-status.php:265, includes/control-panel/views/system-status.php:282, includes/control-panel/views/system-status.php:299
1447
- msgid "Make sure <code>%s</code> directory is writable."
1448
  msgstr ""
1449
 
1450
- #: includes/control-panel/views/system-status.php:237
1451
- msgid "The wp-content Directory"
1452
  msgstr ""
1453
 
1454
- #: includes/control-panel/views/system-status.php:240
1455
- msgid "Check if wp-content directory is writable."
1456
  msgstr ""
1457
 
1458
- #: includes/control-panel/views/system-status.php:254
1459
- msgid "The uploads Directory"
1460
  msgstr ""
1461
 
1462
- #: includes/control-panel/views/system-status.php:257
1463
- msgid "Check if uploads directory is writable."
1464
  msgstr ""
1465
 
1466
- #: includes/control-panel/views/system-status.php:271
1467
- msgid "The plugins Directory"
1468
  msgstr ""
1469
 
1470
- #: includes/control-panel/views/system-status.php:274
1471
- msgid "Check if plugins directory is writable."
1472
  msgstr ""
1473
 
1474
- #: includes/control-panel/views/system-status.php:288
1475
- msgid "The themes Directory"
1476
  msgstr ""
1477
 
1478
- #: includes/control-panel/views/system-status.php:291
1479
- msgid "Check if themes directory is writable."
1480
  msgstr ""
1481
 
1482
- #: includes/control-panel/views/system-status.php:309
1483
- msgid "Theme"
1484
  msgstr ""
1485
 
1486
- #: includes/control-panel/views/system-status.php:316
1487
- msgid "The name of the current active theme."
1488
  msgstr ""
1489
 
1490
- #: includes/control-panel/views/system-status.php:321
1491
- msgid "Version"
1492
  msgstr ""
1493
 
1494
- #: includes/control-panel/views/system-status.php:323
1495
- msgid "The installed version of the current active theme."
1496
  msgstr ""
1497
 
1498
- #: includes/control-panel/views/system-status.php:330
1499
- msgid "Author URL"
1500
  msgstr ""
1501
 
1502
- #: includes/control-panel/views/system-status.php:332
1503
- msgid "The theme developers URL."
1504
  msgstr ""
1505
 
1506
- #: includes/control-panel/views/system-status.php:337
1507
- msgid "Child Theme"
1508
  msgstr ""
1509
 
1510
- #: includes/control-panel/views/system-status.php:339
1511
- msgid "Displays whether or not the current theme is a child theme."
1512
  msgstr ""
1513
 
1514
- #: includes/control-panel/views/system-status.php:351
1515
- msgid "Parent Theme Name"
1516
  msgstr ""
1517
 
1518
- #: includes/control-panel/views/system-status.php:354
1519
- msgid "The name of the parent theme."
1520
  msgstr ""
1521
 
1522
- #: includes/control-panel/views/system-status.php:360
1523
- msgid "Parent Theme Version"
1524
  msgstr ""
1525
 
1526
- #: includes/control-panel/views/system-status.php:363
1527
- msgid "The installed version of the parent theme."
1528
  msgstr ""
1529
 
1530
- #: includes/control-panel/views/system-status.php:369
1531
- msgid "Parent Theme Author URL"
1532
  msgstr ""
1533
 
1534
- #: includes/control-panel/views/system-status.php:372
1535
- msgid "The parent theme developers URL."
1536
  msgstr ""
1537
 
1538
- #: includes/control-panel/views/system-status.php:385
1539
- msgid "Browser"
1540
  msgstr ""
1541
 
1542
- #: includes/control-panel/views/system-status.php:392
1543
- msgid "Browser Info"
1544
  msgstr ""
1545
 
1546
- #: includes/control-panel/views/system-status.php:395
1547
- msgid "Information about web browser current in use."
1548
  msgstr ""
1549
 
1550
- #: includes/control-panel/views/system-status.php:415
1551
- msgid "Server Environment"
1552
  msgstr ""
1553
 
1554
- #: includes/control-panel/views/system-status.php:422
1555
- msgid "Server Info"
1556
  msgstr ""
1557
 
1558
- #: includes/control-panel/views/system-status.php:425
1559
- msgid "Information about the web server that is currently hosting your site."
1560
  msgstr ""
1561
 
1562
- #: includes/control-panel/views/system-status.php:433
1563
- msgid "Localhost Environment"
1564
  msgstr ""
1565
 
1566
- #: includes/control-panel/views/system-status.php:436
1567
- msgid "Is the server running in a localhost environment."
1568
  msgstr ""
1569
 
1570
- #: includes/control-panel/views/system-status.php:448
1571
- msgid "PHP Version"
1572
  msgstr ""
1573
 
1574
- #: includes/control-panel/views/system-status.php:451
1575
- msgid "The version of PHP installed on your hosting server."
1576
  msgstr ""
1577
 
1578
- #: includes/control-panel/views/system-status.php:459
1579
- msgid "ABSPATH"
1580
  msgstr ""
1581
 
1582
- #: includes/control-panel/views/system-status.php:462
1583
- msgid "The ABSPATH variable on the server."
1584
  msgstr ""
1585
 
1586
- #: includes/control-panel/views/system-status.php:473
1587
- msgid "PHP Memory Limit"
1588
  msgstr ""
1589
 
1590
- #: includes/control-panel/views/system-status.php:475, includes/control-panel/views/system-status.php:492
1591
- msgid "The largest filesize that can be contained in one post."
1592
  msgstr ""
1593
 
1594
- #: includes/control-panel/views/system-status.php:490
1595
- msgid "PHP Post Max Size"
1596
  msgstr ""
1597
 
1598
- #: includes/control-panel/views/system-status.php:497
1599
- msgid "PHP Time Limit"
1600
  msgstr ""
1601
 
1602
- #: includes/control-panel/views/system-status.php:499
1603
- msgid "max_execution_time : The amount of time (in seconds) that your site will spend on a single operation before timing out (to avoid server lockups)."
1604
  msgstr ""
1605
 
1606
- #: includes/control-panel/views/system-status.php:505
1607
- msgid "PHP Max Input Vars"
1608
  msgstr ""
1609
 
1610
- #: includes/control-panel/views/system-status.php:507
1611
- msgid "The maximum number of variables your server can use for a single function to avoid overloads."
1612
  msgstr ""
1613
 
1614
- #: includes/control-panel/views/system-status.php:516
1615
- msgid "Suhosin Max Request Vars"
1616
  msgstr ""
1617
 
1618
- #: includes/control-panel/views/system-status.php:518, includes/control-panel/views/system-status.php:525
1619
- msgid "The maximum number of variables your server running Suhosin can use for a single function to avoid overloads."
1620
  msgstr ""
1621
 
1622
- #: includes/control-panel/views/system-status.php:523
1623
- msgid "Suhosin Max Post Vars"
1624
  msgstr ""
1625
 
1626
- #: includes/control-panel/views/system-status.php:533
1627
- msgid "PHP Display Errors"
1628
  msgstr ""
1629
 
1630
- #: includes/control-panel/views/system-status.php:535
1631
- msgid "Determines if PHP will display errors within the browser."
1632
  msgstr ""
1633
 
1634
- #: includes/control-panel/views/system-status.php:549
1635
- msgid "SUHOSIN Installed"
1636
  msgstr ""
1637
 
1638
- #: includes/control-panel/views/system-status.php:551
1639
- msgid "Suhosin is an advanced protection system for PHP installations. It was designed to protect your servers on the one hand against a number of well known problems in PHP applications and on the other hand against potential unknown vulnerabilities within these applications or the PHP core itself. If enabled on your server, Suhosin may need to be configured to increase its data submission limits."
1640
  msgstr ""
1641
 
1642
- #: includes/control-panel/views/system-status.php:563
1643
- msgid "MySQL Version"
1644
  msgstr ""
1645
 
1646
- #: includes/control-panel/views/system-status.php:565
1647
- msgid "The version of MySQL installed on your hosting server."
1648
  msgstr ""
1649
 
1650
- #: includes/control-panel/views/system-status.php:570
1651
- msgid "Max Upload Size"
1652
  msgstr ""
1653
 
1654
- #: includes/control-panel/views/system-status.php:572
1655
- msgid "The largest filesize that can be uploaded to your WordPress installation."
1656
  msgstr ""
1657
 
1658
- #: includes/control-panel/views/system-status.php:578
1659
- msgid "Default Timezone is UTC"
1660
  msgstr ""
1661
 
1662
- #: includes/control-panel/views/system-status.php:581
1663
- msgid "The default timezone for your server."
1664
  msgstr ""
1665
 
1666
- #: includes/control-panel/views/system-status.php:586
1667
- msgid "Default timezone is %s - it should be UTC"
1668
  msgstr ""
1669
 
1670
- #: includes/control-panel/views/system-status.php:595
1671
- msgid "PHP XML"
1672
  msgstr ""
1673
 
1674
- #: includes/control-panel/views/system-status.php:598
1675
- msgid "Theme requires PHP XML Library to be installed."
1676
  msgstr ""
1677
 
1678
- #: includes/control-panel/views/system-status.php:610
1679
- msgid "MBString"
1680
  msgstr ""
1681
 
1682
- #: includes/control-panel/views/system-status.php:613
1683
- msgid "Theme requires MBString PHP Library to be installed."
1684
  msgstr ""
1685
 
1686
- #: includes/control-panel/views/system-status.php:625
1687
- msgid "SimpleXML"
1688
  msgstr ""
1689
 
1690
- #: includes/control-panel/views/system-status.php:628
1691
- msgid "Theme requires SimpleXML PHP Library to be installed."
1692
  msgstr ""
1693
 
1694
- #: includes/control-panel/views/system-status.php:641
1695
- msgid "Fsockopen/cURL"
1696
  msgstr ""
1697
 
1698
- #: includes/control-panel/views/system-status.php:642
1699
- msgid "Used when communicating with remote services with PHP."
1700
  msgstr ""
1701
 
1702
- #: includes/control-panel/views/system-status.php:648
1703
- msgid "Your server does not have fsockopen or cURL enabled - cURL is used to communicate with other servers. Please contact your hosting provider."
1704
  msgstr ""
1705
 
1706
- #: includes/control-panel/views/system-status.php:651
1707
- msgid "SoapClient"
1708
  msgstr ""
1709
 
1710
- #: includes/control-panel/views/system-status.php:652
1711
- msgid "Some webservices like shipping use SOAP to get information from remote servers, for example, live shipping quotes from FedEx require SOAP to be installed."
1712
  msgstr ""
1713
 
1714
- #: includes/control-panel/views/system-status.php:658
1715
- msgid "Your server does not have the <a href=\"%s\">SOAP Client</a> class enabled - some gateway plugins which use SOAP may not work as expected."
1716
  msgstr ""
1717
 
1718
- #: includes/control-panel/views/system-status.php:661
1719
- msgid "DOMDocument"
1720
  msgstr ""
1721
 
1722
- #: includes/control-panel/views/system-status.php:662
1723
- msgid "HTML/Multipart emails use DOMDocument to generate inline CSS in templates."
1724
  msgstr ""
1725
 
1726
- #: includes/control-panel/views/system-status.php:668
1727
- msgid "Your server does not have the <a href=\"%s\">DOMDocument</a> class enabled - HTML/Multipart emails, and also some extensions, will not work without DOMDocument."
1728
  msgstr ""
1729
 
1730
- #: includes/control-panel/views/system-status.php:672
1731
- msgid "GZip"
1732
  msgstr ""
1733
 
1734
- #: includes/control-panel/views/system-status.php:673
1735
- msgid "GZip (gzopen) is used to open the GEOIP database from MaxMind."
1736
  msgstr ""
1737
 
1738
- #: includes/control-panel/views/system-status.php:679
1739
- msgid "Your server does not support the <a href=\"%s\">gzopen</a> function - this is required to use the GeoIP database from MaxMind. The API fallback will be used instead for geolocation."
1740
  msgstr ""
1741
 
1742
- #: includes/control-panel/views/system-status.php:683
1743
- msgid "Zip Archive"
1744
  msgstr ""
1745
 
1746
- #: includes/control-panel/views/system-status.php:684
1747
- msgid "Used to read or write ZIP compressed archives and the files inside them."
1748
  msgstr ""
1749
 
1750
- #: includes/control-panel/views/system-status.php:689
1751
- msgid "ZipArchive library is missing. Install the Zip extension. Contact your hosting provider."
1752
  msgstr ""
1753
 
1754
- #: includes/control-panel/views/system-status.php:694
1755
- msgid "Iconv"
1756
  msgstr ""
1757
 
1758
- #: includes/control-panel/views/system-status.php:695
1759
- msgid "Used in CSS parser to handle the character set conversion."
1760
  msgstr ""
1761
 
1762
- #: includes/control-panel/views/system-status.php:700
1763
- msgid "Iconv library is missing. Install the iconv extension. Contact your hosting provider."
1764
  msgstr ""
1765
 
1766
- #: includes/control-panel/views/system-status.php:725
1767
- msgid "HTTP Requests"
1768
  msgstr ""
1769
 
1770
- #: includes/control-panel/views/system-status.php:728
1771
- msgid "Check if HTTP requests (get, post and ...) are working properly."
1772
  msgstr ""
1773
 
1774
- #: includes/control-panel/views/system-status.php:737
1775
- msgid "Communication with artbees.net"
1776
  msgstr ""
1777
 
1778
- #: includes/control-panel/views/system-status.php:740
1779
- msgid "Check if you have proper access to artbees.net server."
1780
  msgstr ""
1781
 
1782
- #: includes/control-panel/views/system-status.php:755
1783
- msgid "Database"
1784
  msgstr ""
1785
 
1786
- #: includes/control-panel/views/system-status.php:762
1787
- msgid "Database Size"
1788
  msgstr ""
1789
 
1790
- #: includes/control-panel/views/system-status.php:765
1791
- msgid "Information about database."
1792
  msgstr ""
1793
 
1794
- #: includes/control-panel/views/system-status.php:867
1795
- msgid "Theme Mods Size"
1796
  msgstr ""
1797
 
1798
- #: includes/control-panel/views/system-status.php:870
1799
- msgid "Size of customizer options."
1800
  msgstr ""
1801
 
1802
- #: includes/control-panel/views/system-status.php:886
1803
- msgid "Cleanup"
1804
  msgstr ""
1805
 
1806
- #: includes/control-panel/views/system-status.php:897
1807
- msgid "Active Plugins"
1808
  msgstr ""
1809
 
1810
- #: includes/control-panel/views/system-status.php:909
1811
- msgid "Visit plugin homepage"
1812
  msgstr ""
1813
 
1814
- #: includes/control-panel/views/system-status.php:918
1815
- msgctxt "by author"
1816
- msgid "by %s"
1817
  msgstr ""
1818
 
1819
- #: includes/customizer/settings/settings.php:13, includes/dashboard/widgets/class-overview.php:243, includes/customizer/settings/sidebar/settings.php:59, includes/customizer/settings/title-bar/settings.php:125
1820
- msgid "Blog"
1821
  msgstr ""
1822
 
1823
- #: includes/customizer/settings/settings.php:26, includes/customizer/settings/sidebar/settings.php:71, includes/customizer/settings/title-bar/settings.php:137
1824
- msgid "Shop"
1825
  msgstr ""
1826
 
1827
- #: includes/customizer/settings/settings.php:33
1828
- msgid "Pages"
1829
  msgstr ""
1830
 
1831
- #: includes/customizer/settings/settings.php:40
1832
- msgid "Post Types"
1833
  msgstr ""
1834
 
1835
- #: includes/customizer/settings/settings.php:47, includes/customizer/settings/title-bar/settings.php:81
1836
- msgid "Elements"
1837
  msgstr ""
1838
 
1839
- #: includes/dashboard/widgets/class-overview.php:41
1840
- msgid "Jupiter X Overview"
1841
  msgstr ""
1842
 
1843
- #: includes/dashboard/widgets/class-overview.php:124
1844
- msgid "Jupiter X"
1845
  msgstr ""
1846
 
1847
- #: includes/dashboard/widgets/class-overview.php:151
1848
- msgid "Recently Edited"
1849
  msgstr ""
1850
 
1851
- #: includes/dashboard/widgets/class-overview.php:157
1852
- msgctxt "Dashboard Overview Widget Recently Date"
1853
- msgid "M jS"
1854
  msgstr ""
1855
 
1856
- #: includes/dashboard/widgets/class-overview.php:176
1857
- msgid "Flush network cache"
1858
  msgstr ""
1859
 
1860
- #: includes/dashboard/widgets/class-overview.php:177
1861
- msgid "Regenerate Jupiter X and Elementor's cache in all network sites."
1862
  msgstr ""
1863
 
1864
- #: includes/dashboard/widgets/class-overview.php:183
1865
- msgid "Tools"
1866
  msgstr ""
1867
 
1868
- #: includes/dashboard/widgets/class-overview.php:191
1869
- msgid "Run"
1870
  msgstr ""
1871
 
1872
- #: includes/dashboard/widgets/class-overview.php:209
1873
- msgid "News & Updates"
1874
  msgstr ""
1875
 
1876
- #: includes/dashboard/widgets/class-overview.php:222, includes/customizer/api/includes/control/class-template.php:104
1877
- msgid "New"
1878
  msgstr ""
1879
 
1880
- #: includes/dashboard/widgets/class-overview.php:269
1881
- msgid "(opens in a new window)"
1882
  msgstr ""
1883
 
1884
- #: includes/updater/views/html-notice-update-extensions-themes-inline.php:18
1885
- msgid "Plugins"
1886
  msgstr ""
1887
 
1888
- #: includes/updater/views/html-notice-update-extensions-themes-inline.php:19, includes/updater/views/html-notice-update-extensions-themes-inline.php:37
1889
- msgid "Upgrade to version"
1890
  msgstr ""
1891
 
1892
- #: includes/updater/views/html-notice-update-extensions-themes-inline.php:36
1893
- msgid "Themes"
1894
  msgstr ""
1895
 
1896
- #: includes/control-panel/includes/importer/class-wxr-importer.php:160
1897
- msgid "Could not open the file for parsing"
1898
  msgstr ""
1899
 
1900
- #: includes/control-panel/includes/importer/class-wxr-importer.php:196, includes/control-panel/includes/importer/class-wxr-importer.php:308
1901
- msgid "This WXR file (version %s) is newer than the importer (version %s) and may not be supported. Please consider updating."
1902
  msgstr ""
1903
 
1904
- #: includes/control-panel/includes/importer/class-wxr-importer.php:443
1905
- msgid "The file does not exist, please try again."
1906
  msgstr ""
1907
 
1908
- #: includes/control-panel/includes/importer/class-wxr-importer.php:503
1909
- msgid "Invalid author mapping"
1910
  msgstr ""
1911
 
1912
- #: includes/control-panel/includes/importer/class-wxr-importer.php:604
1913
- msgid "Cannot import auto-draft posts"
1914
  msgstr ""
1915
 
1916
- #: includes/control-panel/includes/importer/class-wxr-importer.php:692
1917
- msgid "Failed to import \"%s\": Invalid post type %s"
1918
  msgstr ""
1919
 
1920
- #: includes/control-panel/includes/importer/class-wxr-importer.php:702
1921
- msgid "%s \"%s\" already exists."
1922
  msgstr ""
1923
 
1924
- #: includes/control-panel/includes/importer/class-wxr-importer.php:787
1925
- msgid "Skipping attachment \"%s\", fetching attachments disabled"
1926
  msgstr ""
1927
 
1928
- #: includes/control-panel/includes/importer/class-wxr-importer.php:808
1929
- msgid "Failed to import \"%s\" (%s)"
1930
  msgstr ""
1931
 
1932
- #: includes/control-panel/includes/importer/class-wxr-importer.php:840, includes/control-panel/includes/importer/class-wxr-importer.php:1531
1933
- msgid "Imported \"%s\" (%s)"
1934
  msgstr ""
1935
 
1936
- #: includes/control-panel/includes/importer/class-wxr-importer.php:845
1937
- msgid "Post %d remapped to %d"
1938
  msgstr ""
1939
 
1940
- #: includes/control-panel/includes/importer/class-wxr-importer.php:989
1941
- msgid "Invalid file type"
1942
  msgstr ""
1943
 
1944
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1507
1945
- msgid "Failed to import %s %s"
1946
  msgstr ""
1947
 
1948
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1536
1949
- msgid "Term %d remapped to %d"
1950
  msgstr ""
1951
 
1952
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1589
1953
- msgid "Remote server returned %1$d %2$s for %3$s"
1954
  msgstr ""
1955
 
1956
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1602
1957
- msgid "Remote file is incorrect size"
1958
  msgstr ""
1959
 
1960
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1607
1961
- msgid "Zero size file downloaded"
1962
  msgstr ""
1963
 
1964
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1613
1965
- msgid "Remote file is too large, limit is %s"
1966
  msgstr ""
1967
 
1968
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1635
1969
- msgid "Running post-processing for post %d"
1970
  msgstr ""
1971
 
1972
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1648
1973
- msgid "Could not find the post parent for \"%s\" (post #%d)"
1974
  msgstr ""
1975
 
1976
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1653
1977
- msgid "Post %d was imported with parent %d, but could not be found"
1978
  msgstr ""
1979
 
1980
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1667
1981
- msgid "Could not find the author for \"%s\" (post #%d)"
1982
  msgstr ""
1983
 
1984
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1672
1985
- msgid "Post %d was imported with author \"%s\", but could not be found"
1986
  msgstr ""
1987
 
1988
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1698
1989
- msgid "Post %d was marked for post-processing, but none was required."
1990
  msgstr ""
1991
 
1992
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1709
1993
- msgid "Could not update \"%s\" (post #%d) with mapped data"
1994
  msgstr ""
1995
 
1996
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1754
1997
- msgid "Could not find the menu object for \"%s\" (post #%d)"
1998
  msgstr ""
1999
 
2000
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1759
2001
- msgid "Post %d was imported with object \"%d\" of type \"%s\", but could not be found"
2002
  msgstr ""
2003
 
2004
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1781
2005
- msgid "Could not find the comment parent for comment #%d"
2006
  msgstr ""
2007
 
2008
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1785
2009
- msgid "Comment %d was imported with parent %d, but could not be found"
2010
  msgstr ""
2011
 
2012
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1799
2013
- msgid "Could not find the author for comment #%d"
2014
  msgstr ""
2015
 
2016
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1803
2017
- msgid "Comment %d was imported with author %d, but could not be found"
2018
  msgstr ""
2019
 
2020
- #: includes/control-panel/includes/importer/class-wxr-importer.php:1820
2021
- msgid "Could not update comment #%d with mapped data"
2022
  msgstr ""
2023
 
2024
- #: includes/customizer/api/classes/class-multilingual.php:377
2025
- msgid "Language:"
2026
  msgstr ""
2027
 
2028
- #: includes/customizer/api/classes/class-status.php:47
2029
- msgid "Customizer Settings Name"
2030
  msgstr ""
2031
 
2032
- #: includes/customizer/api/classes/class-status.php:48
2033
- msgid "Control Type"
2034
  msgstr ""
2035
 
2036
- #: includes/customizer/api/includes/class-templates.php:58, includes/customizer/api/includes/section/class-popup.php:168, includes/customizer/api/includes/section/class-popup.php:247
2037
- msgid "Close"
2038
  msgstr ""
2039
 
2040
- #: includes/customizer/api/includes/class-templates.php:71, includes/customizer/api/includes/class-templates.php:85
2041
- msgid "The spectate before us was indeed sublime."
2042
  msgstr ""
2043
 
2044
- #: includes/customizer/api/includes/class-templates.php:87
2045
- msgid "Select a Font Family"
2046
  msgstr ""
2047
 
2048
- #: includes/customizer/api/includes/class-templates.php:103
2049
- msgid "All Fonts"
2050
  msgstr ""
2051
 
2052
- #: includes/customizer/api/includes/class-templates.php:115
2053
- msgid "Cancel"
2054
  msgstr ""
2055
 
2056
- #: includes/customizer/api/includes/class-templates.php:119
2057
- msgid "Submit"
2058
  msgstr ""
2059
 
2060
- #: includes/customizer/api/includes/class-templates.php:139
2061
- msgid "Back"
2062
  msgstr ""
2063
 
2064
- #: includes/customizer/api/includes/class-templates.php:142
2065
- msgid "Activate Jupiter X to unlock this feature"
2066
  msgstr ""
2067
 
2068
- #: includes/customizer/api/includes/class-templates.php:143, includes/customizer/api/includes/control/class-pro-box.php:97
2069
- msgid "Activate Now"
2070
  msgstr ""
2071
 
2072
- #: includes/customizer/api/includes/class-templates.php:146, includes/customizer/settings/pro/popup.php:14, includes/customizer/api/includes/control/class-pro-box.php:101
2073
- msgid "Upgrade to Jupiter X Pro"
2074
  msgstr ""
2075
 
2076
- #: includes/customizer/settings/404/popup.php:13
2077
- msgid "404"
2078
  msgstr ""
2079
 
2080
- #: includes/customizer/settings/404/popup.php:21
2081
- msgid "Setting custom template for 404 page"
2082
  msgstr ""
2083
 
2084
- #: includes/customizer/settings/404/settings.php:17, includes/customizer/settings/maintenance/settings.php:36, includes/customizer/settings/product-page/settings.php:17
2085
- msgid "Template"
2086
  msgstr ""
2087
 
2088
- #: includes/customizer/settings/404/settings.php:20, includes/customizer/settings/maintenance/settings.php:39, includes/customizer/settings/product-list/settings.php:44
2089
- msgid "None"
2090
  msgstr ""
2091
 
2092
- #: includes/customizer/settings/blog-archive/popup.php:13
2093
- msgid "Blog Archive"
2094
  msgstr ""
2095
 
2096
- #: includes/customizer/settings/blog-archive/settings.php:17, includes/customizer/settings/portfolio-archive/settings.php:17, includes/customizer/settings/post-types/popup.php:206
2097
- msgid "My Templates"
2098
  msgstr ""
2099
 
2100
- #: includes/customizer/settings/blog-archive/settings.php:18, includes/customizer/settings/portfolio-archive/settings.php:18, includes/customizer/settings/post-types/popup.php:207
2101
- msgid "Select one"
2102
  msgstr ""
2103
 
2104
- #: includes/customizer/settings/blog-single/avatar.php:18
2105
- msgid "Width"
2106
  msgstr ""
2107
 
2108
- #: includes/customizer/settings/blog-single/featured-image.php:17, includes/customizer/settings/comment/button.php:34, includes/customizer/settings/footer/settings.php:99, includes/customizer/settings/footer/settings.php:222, includes/customizer/settings/header/settings.php:93, includes/customizer/settings/page-single/featured-image.php:18, includes/customizer/settings/portfolio-single/featured-image.php:18, includes/customizer/settings/product-page/settings.php:137, includes/customizer/settings/site-settings/settings.php:21, includes/customizer/settings/title-bar/settings.php:36, includes/customizer/settings/title-bar/settings.php:165
2109
- msgid "Full Width"
2110
  msgstr ""
2111
 
2112
- #: includes/customizer/settings/blog-single/featured-image.php:34, includes/customizer/settings/blog-single/featured-image.php:88, includes/customizer/settings/page-single/featured-image.php:28, includes/customizer/settings/portfolio-single/featured-image.php:28
2113
- msgid "Min Height"
2114
  msgstr ""
2115
 
2116
- #: includes/customizer/settings/blog-single/featured-image.php:61, includes/customizer/settings/blog-single/featured-image.php:118, includes/customizer/settings/page-single/featured-image.php:48, includes/customizer/settings/portfolio-single/featured-image.php:48
2117
- msgid "Max Height"
2118
  msgstr ""
2119
 
2120
- #: includes/customizer/settings/blog-single/featured-image.php:145
2121
- msgid "Overlay Color"
2122
  msgstr ""
2123
 
2124
- #: includes/customizer/settings/blog-single/meta.php:18, includes/customizer/settings/blog-single/post-content.php:18, includes/customizer/settings/blog-single/tags.php:18, includes/customizer/settings/blog-single/title.php:18, includes/customizer/settings/comment/button.php:17, includes/customizer/settings/footer/widgets-container.php:17, includes/customizer/settings/footer/widgets-title.php:17, includes/customizer/settings/header/settings.php:48, includes/customizer/settings/page-single/title.php:17, includes/customizer/settings/portfolio-single/meta.php:18, includes/customizer/settings/portfolio-single/post-content.php:18, includes/customizer/settings/portfolio-single/title.php:17, includes/customizer/settings/post-types/post-content.php:30, includes/customizer/settings/sidebar/widgets-container.php:33, includes/customizer/settings/sidebar/widgets-title.php:17, includes/customizer/settings/title-bar/breadcrumb.php:17, includes/customizer/settings/title-bar/subtitle.php:17, includes/customizer/settings/title-bar/title.php:17
2125
- msgid "Align"
2126
  msgstr ""
2127
 
2128
- #: includes/customizer/settings/blog-single/meta.php:42, includes/customizer/settings/blog-single/popup.php:23, includes/customizer/settings/comment/popup.php:68, includes/customizer/settings/comment/settings.php:32
2129
- msgid "Avatar"
2130
  msgstr ""
2131
 
2132
- #: includes/customizer/settings/blog-single/meta.php:78, includes/customizer/settings/portfolio-single/meta.php:55
2133
- msgid "Meta Divider"
2134
  msgstr ""
2135
 
2136
- #: includes/customizer/settings/blog-single/meta.php:104, includes/customizer/settings/portfolio-single/meta.php:74
2137
- msgid "Divider Color"
2138
  msgstr ""
2139
 
2140
- #: includes/customizer/settings/blog-single/meta.php:132, includes/customizer/settings/portfolio-single/meta.php:95, includes/customizer/settings/typography/popup.php:12
2141
- msgid "Links"
2142
  msgstr ""
2143
 
2144
- #: includes/customizer/settings/blog-single/popup.php:11, includes/customizer/settings/blog-single/popup.php:88, includes/customizer/settings/blog-single/settings.php:125, includes/customizer/settings/page-single/popup.php:12, includes/customizer/settings/page-single/popup.php:61, includes/customizer/settings/page-single/settings.php:69, includes/customizer/settings/portfolio-single/popup.php:13, includes/customizer/settings/portfolio-single/popup.php:66, includes/customizer/settings/portfolio-single/settings.php:74, includes/customizer/settings/post-types/popup.php:157
2145
- msgid "Featured Image"
2146
  msgstr ""
2147
 
2148
- #: includes/customizer/settings/blog-single/popup.php:13, includes/customizer/settings/blog-single/popup.php:90, includes/customizer/settings/portfolio-single/popup.php:12, includes/customizer/settings/portfolio-single/popup.php:65
2149
- msgid "Meta"
2150
  msgstr ""
2151
 
2152
- #: includes/customizer/settings/blog-single/popup.php:14, includes/customizer/settings/blog-single/popup.php:91, includes/customizer/settings/portfolio-single/popup.php:14, includes/customizer/settings/portfolio-single/popup.php:67, includes/customizer/settings/post-types/popup.php:21, includes/customizer/settings/post-types/popup.php:110
2153
- msgid "Post Content"
2154
  msgstr ""
2155
 
2156
- #: includes/customizer/settings/blog-single/popup.php:16, includes/customizer/settings/blog-single/popup.php:94, includes/customizer/settings/blog-single/settings.php:131, includes/customizer/settings/page-single/popup.php:13, includes/customizer/settings/page-single/popup.php:63, includes/customizer/settings/page-single/settings.php:71, includes/customizer/settings/portfolio-single/popup.php:16, includes/customizer/settings/portfolio-single/popup.php:73, includes/customizer/settings/portfolio-single/settings.php:79, includes/customizer/settings/post-types/popup.php:161, includes/customizer/settings/product-page/settings.php:102
2157
- msgid "Social Share"
2158
- msgstr ""
2159
-
2160
- #: includes/customizer/settings/blog-single/popup.php:17, includes/customizer/settings/blog-single/popup.php:98, includes/customizer/settings/blog-single/settings.php:132, includes/customizer/settings/portfolio-single/popup.php:15, includes/customizer/settings/portfolio-single/popup.php:69, includes/customizer/settings/portfolio-single/settings.php:80, includes/customizer/settings/post-types/popup.php:162
2161
- msgid "Navigation"
2162
  msgstr ""
2163
 
2164
- #: includes/customizer/settings/blog-single/popup.php:18, includes/customizer/settings/blog-single/popup.php:102, includes/customizer/settings/blog-single/settings.php:133, includes/customizer/settings/post-types/popup.php:163
2165
- msgid "Author Box"
2166
  msgstr ""
2167
 
2168
- #: includes/customizer/settings/blog-single/popup.php:19, includes/customizer/settings/blog-single/popup.php:106, includes/customizer/settings/blog-single/settings.php:134
2169
- msgid "Recommended Posts"
2170
  msgstr ""
2171
 
2172
- #: includes/customizer/settings/blog-single/popup.php:31
2173
- msgid "Blog Single"
2174
  msgstr ""
2175
 
2176
- #: includes/customizer/settings/blog-single/popup.php:35, includes/customizer/settings/cart-quick-view/popup.php:17, includes/customizer/settings/checkout-cart/popup.php:17, includes/customizer/settings/comment/popup.php:28, includes/customizer/settings/footer/popup.php:30, includes/customizer/settings/header/popup.php:27, includes/customizer/settings/page-single/popup.php:23, includes/customizer/settings/portfolio-single/popup.php:27, includes/customizer/settings/post-types/popup.php:42, includes/customizer/settings/product-archive/popup.php:17, includes/customizer/settings/product-list/popup.php:18, includes/customizer/settings/product-page/popup.php:18, includes/customizer/settings/sidebar/popup.php:26, includes/customizer/settings/site-settings/popup.php:24, includes/customizer/settings/title-bar/popup.php:24
2177
- msgid "Styles"
2178
  msgstr ""
2179
 
2180
- #: includes/customizer/settings/blog-single/popup.php:41, includes/customizer/settings/comment/popup.php:34, includes/customizer/settings/page-single/popup.php:29, includes/customizer/settings/portfolio-single/popup.php:33
2181
- msgid "Display settings for Blog, Shop single pages"
2182
  msgstr ""
2183
 
2184
- #: includes/customizer/settings/blog-single/settings.php:17, includes/customizer/settings/blog-single/settings.php:35, includes/customizer/settings/footer/settings.php:29, includes/customizer/settings/header/settings.php:29, includes/customizer/settings/page-single/settings.php:17, includes/customizer/settings/portfolio-single/settings.php:17, includes/customizer/settings/post-types/popup.php:66, includes/customizer/settings/title-bar/settings.php:17, includes/customizer/settings/title-bar/settings.php:150
2185
- msgid "Type"
2186
  msgstr ""
2187
 
2188
- #: includes/customizer/settings/blog-single/settings.php:21, includes/customizer/settings/blog-single/settings.php:39, includes/customizer/settings/footer/settings.php:34, includes/customizer/settings/footer/subfooter-menu.php:106, includes/customizer/settings/footer/widgets-link.php:37, includes/customizer/settings/footer/widgets-link.php:83, includes/customizer/settings/header/settings.php:33, includes/customizer/settings/page-single/settings.php:21, includes/customizer/settings/portfolio-single/settings.php:21, includes/customizer/settings/post-types/popup.php:70, includes/customizer/settings/sidebar/widgets-link.php:37, includes/customizer/settings/sidebar/widgets-link.php:83, includes/customizer/settings/title-bar/settings.php:22, includes/customizer/settings/title-bar/settings.php:155, includes/customizer/api/includes/control/group/class-typography.php:45, includes/customizer/api/includes/control/group/class-typography.php:67, includes/customizer/api/includes/control/group/class-typography.php:108
2189
- msgid "Default"
2190
  msgstr ""
2191
 
2192
- #: includes/customizer/settings/blog-single/settings.php:24, includes/customizer/settings/blog-single/settings.php:42, includes/customizer/settings/footer/settings.php:37, includes/customizer/settings/header/settings.php:36, includes/customizer/settings/page-single/settings.php:24, includes/customizer/settings/portfolio-single/settings.php:24, includes/customizer/settings/post-types/popup.php:73, includes/customizer/settings/title-bar/settings.php:25, includes/customizer/settings/title-bar/settings.php:158
2193
- msgid "Custom"
2194
  msgstr ""
2195
 
2196
- #: includes/customizer/settings/blog-single/settings.php:96, includes/customizer/settings/checkout-cart/settings.php:17, includes/customizer/settings/footer/settings.php:233, includes/customizer/settings/header/settings.php:110, includes/customizer/settings/page-single/settings.php:49, includes/customizer/settings/portfolio-single/settings.php:49, includes/customizer/settings/post-types/popup.php:138, includes/customizer/settings/product-list/settings.php:53, includes/customizer/settings/product-page/settings.php:73
2197
- msgid "Display Elements"
2198
  msgstr ""
2199
 
2200
- #: includes/customizer/settings/blog-single/settings.php:128, includes/customizer/settings/portfolio-single/settings.php:77, includes/customizer/settings/post-types/popup.php:160
2201
- msgid "Author"
2202
  msgstr ""
2203
 
2204
- #: includes/customizer/settings/blog-single/settings.php:135, includes/customizer/settings/page-single/settings.php:72, includes/customizer/settings/portfolio-single/settings.php:82, includes/customizer/settings/post-types/popup.php:164
2205
- msgid "Comments"
2206
  msgstr ""
2207
 
2208
- #: includes/customizer/settings/blog-single/tags.php:126, includes/customizer/settings/cart-quick-view/styles.php:73, includes/customizer/settings/comment/action-link.php:54, includes/customizer/settings/footer/subfooter-menu.php:76, includes/customizer/settings/footer/widgets-link.php:53, includes/customizer/settings/header/menu.php:95, includes/customizer/settings/header/submenu.php:56, includes/customizer/settings/sidebar/widgets-link.php:53, includes/customizer/settings/typography/links.php:54
2209
- msgid "Hover"
2210
  msgstr ""
2211
 
2212
- #: includes/customizer/settings/cart-quick-view/popup.php:13, includes/customizer/settings/cart-quick-view/settings.php:17
2213
- msgid "Cart Quick View"
2214
  msgstr ""
2215
 
2216
- #: includes/customizer/settings/cart-quick-view/popup.php:21, includes/customizer/settings/checkout-cart/popup.php:23
2217
- msgid "Checkout & Cart Pages in Shop Customizer"
2218
  msgstr ""
2219
 
2220
- #: includes/customizer/settings/cart-quick-view/settings.php:26, includes/customizer/settings/header/settings.php:166, includes/customizer/api/includes/control/group/class-background.php:78, includes/customizer/api/includes/control/group/class-box-shadow.php:80
2221
- msgid "Position"
2222
  msgstr ""
2223
 
2224
- #: includes/customizer/settings/checkout-cart/popup.php:13
2225
- msgid "Checkout & Cart"
2226
  msgstr ""
2227
 
2228
- #: includes/customizer/settings/checkout-cart/settings.php:23
2229
- msgid "Steps"
2230
  msgstr ""
2231
 
2232
- #: includes/customizer/settings/comment/button.php:102
2233
- msgid "hover"
2234
  msgstr ""
2235
 
2236
- #: includes/customizer/settings/comment/field.php:63
2237
- msgid "Focus"
2238
  msgstr ""
2239
 
2240
- #: includes/customizer/settings/comment/popup.php:12, includes/customizer/settings/comment/popup.php:66
2241
- msgid "Field"
2242
  msgstr ""
2243
 
2244
- #: includes/customizer/settings/comment/popup.php:13, includes/customizer/settings/comment/popup.php:67
2245
- msgid "Button"
2246
  msgstr ""
2247
 
2248
- #: includes/customizer/settings/comment/popup.php:14
2249
- msgid "Avater"
2250
  msgstr ""
2251
 
2252
- #: includes/customizer/settings/comment/popup.php:17, includes/customizer/settings/comment/popup.php:71
2253
- msgid "Comment Text"
2254
  msgstr ""
2255
 
2256
- #: includes/customizer/settings/comment/popup.php:18
2257
- msgid "Action Link"
2258
  msgstr ""
2259
 
2260
- #: includes/customizer/settings/comment/popup.php:24
2261
- msgid "Comment"
2262
  msgstr ""
2263
 
2264
- #: includes/customizer/settings/comment/popup.php:72
2265
- msgid "Action Links"
2266
  msgstr ""
2267
 
2268
- #: includes/customizer/settings/comment/settings.php:17
2269
- msgid "Display Contents"
2270
  msgstr ""
2271
 
2272
- #: includes/customizer/settings/comment/settings.php:33
2273
- msgid "Role"
2274
  msgstr ""
2275
 
2276
- #: includes/customizer/settings/footer/popup.php:11, includes/customizer/settings/footer/popup.php:78, includes/customizer/settings/sidebar/popup.php:11
2277
- msgid "Widgets Title"
2278
  msgstr ""
2279
 
2280
- #: includes/customizer/settings/footer/popup.php:12, includes/customizer/settings/footer/popup.php:79, includes/customizer/settings/sidebar/popup.php:12
2281
- msgid "Widgets Text"
2282
  msgstr ""
2283
 
2284
- #: includes/customizer/settings/footer/popup.php:13, includes/customizer/settings/footer/popup.php:80, includes/customizer/settings/sidebar/popup.php:13
2285
- msgid "Widgets Link"
2286
  msgstr ""
2287
 
2288
- #: includes/customizer/settings/footer/popup.php:14, includes/customizer/settings/footer/popup.php:81, includes/customizer/settings/sidebar/popup.php:14
2289
- msgid "Widgets Thumbnail"
2290
  msgstr ""
2291
 
2292
- #: includes/customizer/settings/footer/popup.php:15, includes/customizer/settings/footer/popup.php:82, includes/customizer/settings/sidebar/popup.php:15
2293
- msgid "Widgets Container"
2294
  msgstr ""
2295
 
2296
- #: includes/customizer/settings/footer/popup.php:16, includes/customizer/settings/footer/popup.php:83
2297
- msgid "Widgets Divider"
2298
  msgstr ""
2299
 
2300
- #: includes/customizer/settings/footer/popup.php:17, includes/customizer/settings/footer/popup.php:84
2301
- msgid "Widget Area Container"
2302
  msgstr ""
2303
 
2304
- #: includes/customizer/settings/footer/popup.php:18, includes/customizer/settings/footer/popup.php:109
2305
- msgid "Sub Footer Copyright"
2306
  msgstr ""
2307
 
2308
- #: includes/customizer/settings/footer/popup.php:19, includes/customizer/settings/footer/popup.php:110
2309
- msgid "Sub Footer Menu"
2310
  msgstr ""
2311
 
2312
- #: includes/customizer/settings/footer/popup.php:20, includes/customizer/settings/footer/popup.php:133
2313
- msgid "Sub Footer Container"
2314
  msgstr ""
2315
 
2316
- #: includes/customizer/settings/footer/popup.php:25
2317
- msgid "Footer"
2318
  msgstr ""
2319
 
2320
- #: includes/customizer/settings/footer/popup.php:35
2321
- msgid "Assigning the Footer Globally"
2322
  msgstr ""
2323
 
2324
- #: includes/customizer/settings/footer/popup.php:64, includes/customizer/settings/footer/settings.php:17, includes/customizer/settings/header/popup.php:61, includes/customizer/settings/header/settings.php:17, includes/customizer/settings/logo/settings.php:17, includes/customizer/settings/typography/popup.php:62
2325
- msgid "Learn how to use the following settings properly."
2326
  msgstr ""
2327
 
2328
- #: includes/customizer/settings/footer/settings.php:48, includes/customizer/settings/header/settings.php:137
2329
- msgid "Behavior"
2330
  msgstr ""
2331
 
2332
- #: includes/customizer/settings/footer/settings.php:52, includes/customizer/settings/header/settings.php:142
2333
- msgid "Static"
2334
  msgstr ""
2335
 
2336
- #: includes/customizer/settings/footer/settings.php:53, includes/customizer/settings/header/settings.php:145, includes/customizer/api/includes/control/group/class-background.php:107
2337
- msgid "Fixed"
2338
  msgstr ""
2339
 
2340
- #: includes/customizer/settings/footer/settings.php:69
2341
- msgid "Widget Area"
2342
  msgstr ""
2343
 
2344
- #: includes/customizer/settings/footer/settings.php:110, includes/customizer/settings/sidebar/popup.php:21, includes/customizer/settings/sidebar/settings.php:17, includes/customizer/settings/sidebar/settings.php:84
2345
- msgid "Layout"
2346
  msgstr ""
2347
 
2348
- #: includes/customizer/settings/footer/settings.php:140, includes/customizer/settings/footer/settings.php:248, includes/customizer/settings/header/settings.php:222
2349
- msgid "Enable on Tablet"
2350
  msgstr ""
2351
 
2352
- #: includes/customizer/settings/footer/settings.php:152, includes/customizer/settings/footer/settings.php:260, includes/customizer/settings/header/settings.php:245
2353
- msgid "Enable on Mobile"
2354
  msgstr ""
2355
 
2356
- #: includes/customizer/settings/footer/settings.php:192
2357
- msgid "Sub Footer"
2358
  msgstr ""
2359
 
2360
- #: includes/customizer/settings/footer/settings.php:236
2361
- msgid "Copyright Text"
 
2362
  msgstr ""
2363
 
2364
- #: includes/customizer/settings/footer/settings.php:237, includes/customizer/settings/header/popup.php:12, includes/customizer/settings/header/popup.php:76, includes/customizer/settings/header/settings.php:118
2365
- msgid "Menu"
2366
  msgstr ""
2367
 
2368
- #: includes/customizer/settings/footer/subfooter-container.php:36, includes/customizer/settings/footer/widget-area-container.php:55, includes/customizer/settings/footer/widgets-container.php:50, includes/customizer/settings/sidebar/widgets-container.php:51, includes/customizer/settings/site-settings/container.php:48
2369
- msgid "Border"
2370
  msgstr ""
2371
 
2372
- #: includes/customizer/settings/footer/widget-area-container.php:32
2373
- msgid "Column Gap"
2374
  msgstr ""
2375
 
2376
- #: includes/customizer/settings/footer/widgets-divider.php:41, includes/customizer/settings/header/submenu.php:15, includes/customizer/settings/sidebar/divider.php:84
2377
- msgid "Items"
2378
  msgstr ""
2379
 
2380
- #: includes/customizer/settings/header/logo.php:18, includes/customizer/settings/header/popup.php:11, includes/customizer/settings/header/popup.php:75, includes/customizer/settings/header/settings.php:117, includes/customizer/settings/logo/popup.php:17, includes/customizer/settings/logo/popup.php:23
2381
- msgid "Logo"
2382
  msgstr ""
2383
 
2384
- #: includes/customizer/settings/header/logo.php:21
2385
- msgid "Primary"
2386
  msgstr ""
2387
 
2388
- #: includes/customizer/settings/header/logo.php:22
2389
- msgid "Secondary"
2390
  msgstr ""
2391
 
2392
- #: includes/customizer/settings/header/logo.php:32, includes/customizer/settings/header/sticky-logo.php:18
2393
- msgid "Max Width"
2394
  msgstr ""
2395
 
2396
- #: includes/customizer/settings/header/menu.php:139, includes/customizer/settings/header/submenu.php:100
2397
- msgid "Active"
 
2398
  msgstr ""
2399
 
2400
- #: includes/customizer/settings/header/popup.php:13, includes/customizer/settings/header/popup.php:77
2401
- msgid "Submenu"
 
2402
  msgstr ""
2403
 
2404
- #: includes/customizer/settings/header/popup.php:14, includes/customizer/settings/header/popup.php:78, includes/customizer/settings/header/settings.php:119, includes/customizer/settings/search/popup.php:13, includes/customizer/settings/sidebar/settings.php:70, includes/customizer/settings/title-bar/settings.php:136
2405
- msgid "Search"
2406
  msgstr ""
2407
 
2408
- #: includes/customizer/settings/header/popup.php:15, includes/customizer/settings/header/popup.php:79, includes/customizer/settings/header/submenu.php:173, includes/customizer/settings/site-settings/popup.php:14, includes/customizer/settings/site-settings/popup.php:95, includes/customizer/settings/title-bar/popup.php:14
2409
- msgid "Container"
2410
  msgstr ""
2411
 
2412
- #: includes/customizer/settings/header/popup.php:16, includes/customizer/settings/header/popup.php:98
2413
- msgid "Sticky Container"
2414
  msgstr ""
2415
 
2416
- #: includes/customizer/settings/header/popup.php:17, includes/customizer/settings/header/popup.php:97, includes/customizer/settings/logo/settings.php:45
2417
- msgid "Sticky Logo"
 
2418
  msgstr ""
2419
 
2420
- #: includes/customizer/settings/header/popup.php:22
2421
- msgid "Header"
2422
- msgstr ""
2423
-
2424
- #: includes/customizer/settings/header/popup.php:32
2425
- msgid "Assigning the Header Globally"
2426
- msgstr ""
2427
-
2428
- #: includes/customizer/settings/header/settings.php:77
2429
- msgid "Overlap Content"
2430
- msgstr ""
2431
-
2432
- #: includes/customizer/settings/header/settings.php:120
2433
- msgid "Cart"
2434
- msgstr ""
2435
-
2436
- #: includes/customizer/settings/header/settings.php:148
2437
- msgid "Sticky"
2438
- msgstr ""
2439
-
2440
- #: includes/customizer/settings/header/settings.php:171
2441
- msgid "Top"
2442
- msgstr ""
2443
-
2444
- #: includes/customizer/settings/header/settings.php:174
2445
- msgid "Bottom"
2446
- msgstr ""
2447
-
2448
- #: includes/customizer/settings/header/settings.php:197
2449
- msgid "Offset"
2450
- msgstr ""
2451
-
2452
- #: includes/customizer/settings/logo/popup.php:16
2453
- msgid "Site Logo"
2454
- msgstr ""
2455
-
2456
- #: includes/customizer/settings/logo/popup.php:31
2457
- msgid "Adding Multiple versions of logo to website"
2458
- msgstr ""
2459
-
2460
- #: includes/customizer/settings/logo/settings.php:27
2461
- msgid "Primary Logo"
2462
- msgstr ""
2463
-
2464
- #: includes/customizer/settings/logo/settings.php:36
2465
- msgid "Secondary Logo"
2466
- msgstr ""
2467
-
2468
- #: includes/customizer/settings/logo/settings.php:54
2469
- msgid "Retina Primary Logo"
2470
  msgstr ""
2471
 
2472
- #: includes/customizer/settings/logo/settings.php:63
2473
- msgid "Retina Secondary Logo"
2474
  msgstr ""
2475
 
2476
- #: includes/customizer/settings/logo/settings.php:72
2477
- msgid "Retina Sticky Logo"
2478
  msgstr ""
2479
 
2480
- #: includes/customizer/settings/logo/settings.php:81
2481
- msgid "Mobile Logo"
2482
  msgstr ""
2483
 
2484
- #: includes/customizer/settings/logo/settings.php:91
2485
- msgid "Retina Mobile Logo"
2486
  msgstr ""
2487
 
2488
- #: includes/customizer/settings/maintenance/popup.php:13, includes/customizer/settings/maintenance/settings.php:26
2489
- msgid "Maintenance"
2490
  msgstr ""
2491
 
2492
- #: includes/customizer/settings/maintenance/popup.php:21
2493
- msgid "Enabling Maintenance Mode in Jupiter X"
2494
  msgstr ""
2495
 
2496
- #: includes/customizer/settings/maintenance/settings.php:17
2497
- msgid "Maintenance page will be displayed to guests only."
2498
  msgstr ""
2499
 
2500
- #: includes/customizer/settings/page-single/popup.php:19
2501
- msgid "Page Single"
2502
  msgstr ""
2503
 
2504
- #: includes/customizer/settings/portfolio-archive/popup.php:13
2505
- msgid "Portfolio Archive"
2506
  msgstr ""
2507
 
2508
- #: includes/customizer/settings/portfolio-single/popup.php:17, includes/customizer/settings/portfolio-single/popup.php:77, includes/customizer/settings/portfolio-single/settings.php:81
2509
- msgid "Related Works"
2510
  msgstr ""
2511
 
2512
- #: includes/customizer/settings/portfolio-single/popup.php:23
2513
- msgid "Portfolio Single"
2514
  msgstr ""
2515
 
2516
- #: includes/customizer/settings/post-types/popup.php:38
2517
- msgid "Single"
2518
  msgstr ""
2519
 
2520
- #: includes/customizer/settings/post-types/popup.php:180, includes/customizer/settings/sidebar/settings.php:69, includes/customizer/settings/title-bar/settings.php:135
2521
- msgid "Archive"
2522
  msgstr ""
2523
 
2524
- #: includes/customizer/settings/product-archive/popup.php:13
2525
- msgid "Product Archive"
2526
  msgstr ""
2527
 
2528
- #: includes/customizer/settings/product-archive/popup.php:22
2529
- msgid "Product Archive in Shop Customizer"
2530
  msgstr ""
2531
 
2532
- #: includes/customizer/settings/product-list/popup.php:13
2533
- msgid "Product List"
2534
  msgstr ""
2535
 
2536
- #: includes/customizer/settings/product-list/popup.php:25
2537
- msgid "Product List in Shop Customizer"
2538
  msgstr ""
2539
 
2540
- #: includes/customizer/settings/product-list/settings.php:17, includes/customizer/settings/title-bar/settings.php:53, includes/customizer/settings/title-bar/settings.php:171
2541
- msgid "Title HTML Tag"
 
2542
  msgstr ""
2543
 
2544
- #: includes/customizer/settings/product-list/settings.php:38
2545
- msgid "Pagination"
 
2546
  msgstr ""
2547
 
2548
- #: includes/customizer/settings/product-list/settings.php:42
2549
- msgid "Page Based"
2550
  msgstr ""
2551
 
2552
- #: includes/customizer/settings/product-list/settings.php:73
2553
- msgid "Image"
2554
  msgstr ""
2555
 
2556
- #: includes/customizer/settings/product-list/settings.php:74, includes/customizer/settings/product-page/settings.php:108
2557
- msgid "Rating"
2558
  msgstr ""
2559
 
2560
- #: includes/customizer/settings/product-list/settings.php:77
2561
- msgid "Price"
2562
  msgstr ""
2563
 
2564
- #: includes/customizer/settings/product-list/settings.php:78
2565
- msgid "Add to Cart Button"
2566
  msgstr ""
2567
 
2568
- #: includes/customizer/settings/product-list/settings.php:79, includes/customizer/settings/product-page/settings.php:106
2569
- msgid "Sale Badge"
2570
  msgstr ""
2571
 
2572
- #: includes/customizer/settings/product-list/settings.php:80, includes/customizer/settings/product-page/settings.php:107
2573
- msgid "Out of Stock Badge"
2574
  msgstr ""
2575
 
2576
- #: includes/customizer/settings/product-list/settings.php:96
2577
- msgid "Grid Settings"
2578
  msgstr ""
2579
 
2580
- #: includes/customizer/settings/product-list/settings.php:228
2581
- msgid "Quick View"
2582
  msgstr ""
2583
 
2584
- #: includes/customizer/settings/product-list/settings.php:238
2585
- msgid "Quick View Opener"
2586
  msgstr ""
2587
 
2588
- #: includes/customizer/settings/product-list/settings.php:260
2589
- msgid "Quick View Content"
2590
  msgstr ""
2591
 
2592
- #: includes/customizer/settings/product-list/settings.php:268
2593
- msgid "Description"
2594
  msgstr ""
2595
 
2596
- #: includes/customizer/settings/product-list/settings.php:269
2597
- msgid "Meta Information"
2598
  msgstr ""
2599
 
2600
- #: includes/customizer/settings/product-list/settings.php:270
2601
- msgid "Social Icons"
2602
  msgstr ""
2603
 
2604
- #: includes/customizer/settings/product-list/settings.php:271
2605
- msgid "Reviews"
2606
  msgstr ""
2607
 
2608
- #: includes/customizer/settings/product-page/popup.php:13
2609
- msgid "Product Page"
2610
  msgstr ""
2611
 
2612
- #: includes/customizer/settings/product-page/popup.php:25
2613
- msgid "Product Page in Shop Customizer"
2614
  msgstr ""
2615
 
2616
- #: includes/customizer/settings/product-page/settings.php:99
2617
- msgid "SKU"
2618
  msgstr ""
2619
 
2620
- #: includes/customizer/settings/product-page/settings.php:100
2621
- msgid "Short Description"
2622
  msgstr ""
2623
 
2624
- #: includes/customizer/settings/product-page/settings.php:101
2625
- msgid "Quantity"
2626
  msgstr ""
2627
 
2628
- #: includes/customizer/settings/product-page/settings.php:103
2629
- msgid "Description Tab"
2630
  msgstr ""
2631
 
2632
- #: includes/customizer/settings/product-page/settings.php:104
2633
- msgid "Review Tab"
2634
  msgstr ""
2635
 
2636
- #: includes/customizer/settings/product-page/settings.php:105
2637
- msgid "Additional Info Tab"
2638
  msgstr ""
2639
 
2640
- #: includes/customizer/settings/product-page/settings.php:117
2641
- msgid "Image Lightbox"
2642
  msgstr ""
2643
 
2644
- #: includes/customizer/settings/product-page/settings.php:127
2645
- msgid "Image Zoom"
2646
  msgstr ""
2647
 
2648
- #: includes/customizer/settings/product-page/settings.php:154
2649
- msgid "Related Products"
2650
  msgstr ""
2651
 
2652
- #: includes/customizer/settings/product-page/settings.php:173
2653
- msgid "Upsells Products"
2654
  msgstr ""
2655
 
2656
- #: includes/customizer/settings/product-page/settings.php:183
2657
- msgid "Sticky Product Info"
2658
  msgstr ""
2659
 
2660
- #: includes/customizer/settings/search/popup.php:21
2661
- msgid "Displaying Search Results from specific Post Types"
2662
  msgstr ""
2663
 
2664
- #: includes/customizer/settings/search/settings.php:17
2665
- msgid "Display section"
2666
  msgstr ""
2667
 
2668
- #: includes/customizer/settings/search/settings.php:23, includes/customizer/settings/sidebar/settings.php:60, includes/customizer/settings/title-bar/settings.php:126
2669
- msgid "Page"
 
2670
  msgstr ""
2671
 
2672
- #: includes/customizer/settings/search/settings.php:24
2673
- msgid "Product"
2674
  msgstr ""
2675
 
2676
- #: includes/customizer/settings/search/settings.php:51
2677
- msgid "Posts per page"
2678
  msgstr ""
2679
 
2680
- #: includes/customizer/settings/sidebar/divider.php:18
2681
- msgid "Sidebar"
2682
  msgstr ""
2683
 
2684
- #: includes/customizer/settings/sidebar/popup.php:16
2685
- msgid "Divider"
2686
  msgstr ""
2687
 
2688
- #: includes/customizer/settings/sidebar/popup.php:31
2689
- msgid "Adding a Sidebar globally"
2690
  msgstr ""
2691
 
2692
- #: includes/customizer/settings/sidebar/settings.php:30, includes/customizer/settings/sidebar/settings.php:93
2693
- msgid "Primary Sidebar"
2694
  msgstr ""
2695
 
2696
- #: includes/customizer/settings/sidebar/settings.php:41, includes/customizer/settings/sidebar/settings.php:100
2697
- msgid "Secondary Sidebar"
2698
  msgstr ""
2699
 
2700
- #: includes/customizer/settings/sidebar/settings.php:115, includes/customizer/settings/title-bar/settings.php:211
2701
- msgid "Conditions"
2702
  msgstr ""
2703
 
2704
- #: includes/customizer/settings/site-settings/container.php:17
2705
- msgid "Box Shadow"
2706
  msgstr ""
2707
 
2708
- #: includes/customizer/settings/site-settings/popup.php:11, includes/customizer/settings/site-settings/popup.php:60, includes/customizer/settings/typography/popup.php:11
2709
- msgid "Body"
2710
  msgstr ""
2711
 
2712
- #: includes/customizer/settings/site-settings/popup.php:12, includes/customizer/settings/site-settings/popup.php:61
2713
- msgid "Main"
2714
  msgstr ""
2715
 
2716
- #: includes/customizer/settings/site-settings/popup.php:13, includes/customizer/settings/site-settings/popup.php:72, includes/customizer/settings/site-settings/settings.php:105
2717
- msgid "Body Border"
2718
  msgstr ""
2719
 
2720
- #: includes/customizer/settings/site-settings/popup.php:19
2721
- msgid "Site Settings"
2722
  msgstr ""
2723
 
2724
- #: includes/customizer/settings/site-settings/popup.php:29
2725
- msgid "Setting container width in Jupiter X"
2726
  msgstr ""
2727
 
2728
- #: includes/customizer/settings/site-settings/settings.php:18
2729
- msgid "Site Width"
2730
  msgstr ""
2731
 
2732
- #: includes/customizer/settings/site-settings/settings.php:22
2733
- msgid "Boxed"
2734
  msgstr ""
2735
 
2736
- #: includes/customizer/settings/site-settings/settings.php:32, includes/customizer/settings/site-settings/settings.php:69
2737
- msgid "Container Width"
2738
  msgstr ""
2739
 
2740
- #: includes/customizer/settings/site-settings/settings.php:122
2741
- msgid "Header & Footer On Top of Border"
2742
  msgstr ""
2743
 
2744
- #: includes/customizer/settings/site-settings/settings.php:145
2745
- msgid "Scroll Top Button"
2746
  msgstr ""
2747
 
2748
- #: includes/customizer/settings/title-bar/breadcrumb.php:53
2749
- msgid "Breadcrumb divider"
2750
  msgstr ""
2751
 
2752
- #: includes/customizer/settings/title-bar/breadcrumb.php:72
2753
- msgid "Divider color"
2754
  msgstr ""
2755
 
2756
- #: includes/customizer/settings/title-bar/breadcrumb.php:96
2757
- msgid "Links color"
2758
  msgstr ""
2759
 
2760
- #: includes/customizer/settings/title-bar/popup.php:13, includes/customizer/settings/title-bar/settings.php:88, includes/customizer/settings/title-bar/settings.php:195
2761
- msgid "Breadcrumb"
2762
  msgstr ""
2763
 
2764
- #: includes/customizer/settings/title-bar/popup.php:19
2765
- msgid "Title Bar"
2766
  msgstr ""
2767
 
2768
- #: includes/customizer/settings/title-bar/popup.php:29
2769
- msgid "Including/Excluding pages from displaying the Title Bar"
2770
  msgstr ""
2771
 
2772
- #: includes/customizer/settings/title-bar/settings.php:188
2773
- msgid "Content"
2774
  msgstr ""
2775
 
2776
- #: includes/customizer/settings/typography/popup.php:13
2777
- msgid "Heading 1"
2778
  msgstr ""
2779
 
2780
- #: includes/customizer/settings/typography/popup.php:14
2781
- msgid "Heading 2"
2782
  msgstr ""
2783
 
2784
- #: includes/customizer/settings/typography/popup.php:15
2785
- msgid "Heading 3"
2786
  msgstr ""
2787
 
2788
- #: includes/customizer/settings/typography/popup.php:16
2789
- msgid "Heading 4"
2790
  msgstr ""
2791
 
2792
- #: includes/customizer/settings/typography/popup.php:17
2793
- msgid "Heading 5"
2794
  msgstr ""
2795
 
2796
- #: includes/customizer/settings/typography/popup.php:18
2797
- msgid "Heading 6"
2798
  msgstr ""
2799
 
2800
- #: includes/customizer/settings/typography/popup.php:23
2801
- msgid "Fonts & Typography"
2802
  msgstr ""
2803
 
2804
- #: includes/customizer/settings/typography/popup.php:27
2805
- msgid "Fonts"
2806
  msgstr ""
2807
 
2808
- #: includes/customizer/settings/typography/popup.php:28
2809
- msgid "Typography"
2810
  msgstr ""
2811
 
2812
- #: includes/customizer/settings/typography/popup.php:33
2813
- msgid "Changing typography for Body, Headings and Links"
2814
  msgstr ""
2815
 
2816
- #: includes/customizer/settings/typography/settings.php:17
2817
- msgid "Please click \"Publish\" and then refresh the page to make selected fonts available in all the typography settings."
2818
  msgstr ""
2819
 
2820
- #: includes/customizer/api/includes/control/class-alert.php:83
2821
- msgid "Learn more"
2822
  msgstr ""
2823
 
2824
- #: includes/customizer/api/includes/control/class-box-model.php:109
2825
- msgid "Margin"
2826
  msgstr ""
2827
 
2828
- #: includes/customizer/api/includes/control/class-box-model.php:113
2829
- msgid "Padding"
2830
  msgstr ""
2831
 
2832
- #: includes/customizer/api/includes/control/class-exceptions.php:76, includes/customizer/api/includes/control/class-image.php:45
2833
- msgid "Remove image icon"
2834
  msgstr ""
2835
 
2836
- #: includes/customizer/api/includes/control/class-exceptions.php:76
2837
- msgid "Add New Condition"
2838
  msgstr ""
2839
 
2840
- #: includes/customizer/api/includes/control/class-fonts.php:76
2841
- msgid "Add Font Family"
2842
  msgstr ""
2843
 
2844
- #: includes/customizer/api/includes/control/class-image.php:46
2845
- msgid "Upload image icon"
2846
  msgstr ""
2847
 
2848
- #: includes/customizer/api/includes/control/class-image.php:47
2849
- msgid "Click to Upload Image"
2850
  msgstr ""
2851
 
2852
- #: includes/customizer/api/includes/control/class-pro-box.php:78
2853
- msgid "Activate Jupiter X"
2854
  msgstr ""
2855
 
2856
- #: includes/customizer/api/includes/control/class-pro-box.php:79
2857
- msgid "To unlock this feature you must activate Jupiter X"
2858
  msgstr ""
2859
 
2860
- #: includes/customizer/api/includes/control/class-pro-box.php:81
2861
- msgid "Upgrade to unlock this feature"
2862
  msgstr ""
2863
 
2864
- #: includes/customizer/api/includes/control/class-pro-box.php:82
2865
- msgid "You can unlock more customization options."
2866
  msgstr ""
2867
 
2868
- #: includes/customizer/api/includes/control/class-template.php:97
2869
- msgid "OR"
2870
  msgstr ""
2871
 
2872
- #: includes/customizer/api/includes/section/class-link.php:98, includes/customizer/api/includes/section/class-popup.php:143
2873
- msgid "Press return or enter to open this section"
2874
  msgstr ""
2875
 
2876
- #: includes/customizer/api/includes/control/group/class-background.php:43
2877
- msgid "Background Color Type"
2878
  msgstr ""
2879
 
2880
- #: includes/customizer/api/includes/control/group/class-background.php:71
2881
- msgid "BG Image"
2882
  msgstr ""
2883
 
2884
- #: includes/customizer/api/includes/control/group/class-background.php:85
2885
- msgid "Repeat"
2886
  msgstr ""
2887
 
2888
- #: includes/customizer/api/includes/control/group/class-background.php:123
2889
- msgid "Cover"
2890
  msgstr ""
2891
 
2892
- #: includes/customizer/api/includes/control/group/class-background.php:171, includes/customizer/api/includes/control/group/class-box-shadow.php:84
2893
- msgid "Linear"
2894
  msgstr ""
2895
 
2896
- #: includes/customizer/api/includes/control/group/class-background.php:174
2897
- msgid "Radial"
2898
  msgstr ""
2899
 
2900
- #: includes/customizer/api/includes/control/group/class-background.php:231
2901
- msgid "Social or Self hosted video link"
2902
  msgstr ""
2903
 
2904
- #: includes/customizer/api/includes/control/group/class-background.php:233
2905
- msgid "Video Link"
2906
  msgstr ""
2907
 
2908
- #: includes/customizer/api/includes/control/group/class-background.php:240
2909
- msgid "Video Fallback"
2910
  msgstr ""
2911
 
2912
- #: includes/customizer/api/includes/control/group/class-border.php:48
2913
- msgid "Dashed"
2914
  msgstr ""
2915
 
2916
- #: includes/customizer/api/includes/control/group/class-border.php:49
2917
- msgid "Dotted"
2918
  msgstr ""
2919
 
2920
- #: includes/customizer/api/includes/control/group/class-border.php:50
2921
- msgid "Solid"
2922
  msgstr ""
2923
 
2924
- #: includes/customizer/api/includes/control/group/class-box-shadow.php:62
2925
- msgid "Blur"
2926
  msgstr ""
2927
 
2928
- #: includes/customizer/api/includes/control/group/class-box-shadow.php:71
2929
- msgid "Spread"
2930
  msgstr ""
2931
 
2932
- #: includes/customizer/api/includes/control/group/class-box-shadow.php:87
2933
- msgid "Inset"
2934
  msgstr ""
2935
 
2936
- #: includes/customizer/api/includes/control/group/class-box-shadow.php:94
2937
- msgid "Color"
2938
  msgstr ""
2939
 
2940
- #: includes/customizer/api/includes/control/group/class-typography.php:110
2941
- msgid "Capitalize"
2942
  msgstr ""
2943
 
2944
- #: includes/customizer/api/includes/control/group/class-typography.php:111
2945
- msgid "Lowercase"
2946
  msgstr ""
2947
 
2948
- #: includes/customizer/api/includes/control/group/class-typography.php:112
2949
- msgid "Uppercase"
2950
  msgstr ""
2951
 
2952
- #: includes/customizer/api/includes/control/group/class-typography.php:163
2953
- msgid "Normal"
2954
  msgstr ""
2955
 
2956
- #: includes/customizer/api/includes/control/group/class-typography.php:164
2957
- msgid "Bold"
2958
  msgstr ""
2959
 
2960
- #: includes/customizer/api/includes/control/group/class-typography.php:165
2961
- msgid "Bolder"
2962
  msgstr ""
2963
 
2964
- #: includes/customizer/api/includes/control/group/class-typography.php:166
2965
- msgid "Lighter"
2966
  msgstr ""
2967
 
2968
- #: includes/customizer/api/includes/control/group/class-typography.php:167
2969
- msgid "100"
2970
  msgstr ""
2971
 
2972
- #: includes/customizer/api/includes/control/group/class-typography.php:168
2973
- msgid "200"
2974
  msgstr ""
2975
 
2976
- #: includes/customizer/api/includes/control/group/class-typography.php:169
2977
- msgid "300"
2978
  msgstr ""
2979
 
2980
- #: includes/customizer/api/includes/control/group/class-typography.php:170
2981
- msgid "400"
2982
  msgstr ""
2983
 
2984
- #: includes/customizer/api/includes/control/group/class-typography.php:171
2985
- msgid "500"
2986
  msgstr ""
2987
 
2988
- #: includes/customizer/api/includes/control/group/class-typography.php:172
2989
- msgid "600"
2990
  msgstr ""
2991
 
2992
- #: includes/customizer/api/includes/control/group/class-typography.php:173
2993
- msgid "700"
2994
  msgstr ""
2995
 
2996
- #: includes/customizer/api/includes/control/group/class-typography.php:174
2997
- msgid "800"
2998
  msgstr ""
2999
 
3000
- #: includes/customizer/api/includes/control/group/class-typography.php:175
3001
- msgid "900"
3002
  msgstr ""
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
 
18
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:24
19
+ msgid "Raven"
20
  msgstr ""
21
 
22
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:31, includes/admin/tgmpa/tgmpa-plugin-list.php:41, includes/admin/tgmpa/tgmpa-plugin-list.php:51, includes/admin/tgmpa/tgmpa-plugin-list.php:61, includes/admin/tgmpa/tgmpa-plugin-list.php:71, includes/admin/tgmpa/tgmpa-plugin-list.php:81, includes/admin/tgmpa/tgmpa-plugin-list.php:91, includes/admin/tgmpa/tgmpa-plugin-list.php:101, includes/admin/tgmpa/tgmpa-plugin-list.php:111, includes/admin/tgmpa/tgmpa-plugin-list.php:121, includes/admin/tgmpa/tgmpa-plugin-list.php:131, includes/admin/tgmpa/tgmpa-plugin-list.php:141, includes/admin/tgmpa/tgmpa-plugin-list.php:151, includes/admin/tgmpa/tgmpa-plugin-list.php:161, includes/admin/tgmpa/tgmpa-plugin-list.php:171, includes/admin/tgmpa/tgmpa-plugin-list.php:181, includes/admin/tgmpa/tgmpa-plugin-list.php:190, includes/admin/tgmpa/tgmpa-plugin-list.php:199
23
+ msgid "Optional"
24
  msgstr ""
25
 
26
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:34
27
+ msgid "Jupiter Donut"
28
  msgstr ""
29
 
30
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:44
31
+ msgid "Jet Elements"
32
  msgstr ""
33
 
34
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:54
35
+ msgid "Jet Blog"
36
+ msgstr ""
37
+
38
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:64
39
+ msgid "Jet Menu"
40
+ msgstr ""
41
+
42
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:74
43
+ msgid "Jet Popup"
44
+ msgstr ""
45
+
46
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:84
47
+ msgid "Jet Tabs"
48
+ msgstr ""
49
+
50
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:94
51
+ msgid "Jet WooBuilder"
52
+ msgstr ""
53
+
54
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:104
55
+ msgid "Jet Tricks"
56
+ msgstr ""
57
+
58
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:114
59
+ msgid "Jet Engine"
60
+ msgstr ""
61
+
62
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:124
63
+ msgid "Jet SmartFilters"
64
+ msgstr ""
65
+
66
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:134
67
+ msgid "Advanced Custom Fields PRO"
68
+ msgstr ""
69
+
70
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:144
71
+ msgid "Slider Revolution"
72
+ msgstr ""
73
+
74
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:154
75
+ msgid "Master Slider"
76
+ msgstr ""
77
+
78
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:164
79
+ msgid "Layer Slider"
80
+ msgstr ""
81
+
82
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:174
83
+ msgid "WPBakery Page Builder"
84
+ msgstr ""
85
+
86
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:184
87
+ msgid "Customizer Reset"
88
+ msgstr ""
89
+
90
+ #: includes/admin/tgmpa/tgmpa-plugin-list.php:193
91
+ msgid "Customizer Export/Import"
92
  msgstr ""
93
 
94
  #: includes/compiler/class-compiler.php:944
179
  msgid "Tracking Codes Before %s Tag"
180
  msgstr ""
181
 
182
+ #: includes/control-panel/includes/class-db-manager.php:139
183
+ msgid "Can not create backup db file."
184
  msgstr ""
185
 
186
+ #: includes/control-panel/includes/class-db-manager.php:174
187
+ msgid "Can not create media records backup file."
188
  msgstr ""
189
 
190
+ #: includes/control-panel/includes/class-db-manager.php:213
191
+ msgid "There was an error unzipping the backup file."
 
 
192
  msgstr ""
193
 
194
+ #: includes/control-panel/includes/class-db-manager.php:227
195
+ msgid "Invalid backup file."
196
  msgstr ""
197
 
198
+ #: includes/control-panel/includes/class-db-manager.php:234
199
+ msgid "The backup file is not exists or not readable."
200
  msgstr ""
201
 
202
+ #: includes/control-panel/includes/class-db-manager.php:338
203
+ msgid "Media records backup file is not exists or not readable"
 
204
  msgstr ""
205
 
206
+ #: includes/control-panel/includes/class-db-php-manager.php:52
207
+ msgid "Can't open: "
 
208
  msgstr ""
209
 
210
+ #: includes/control-panel/includes/class-db-php-manager.php:115
211
+ msgid "Please contact your database administrator to fix the error. Error: "
212
  msgstr ""
213
 
214
+ #: includes/control-panel/includes/class-db-php-manager.php:164
215
+ msgid "File not exist: "
216
  msgstr ""
217
 
218
+ #: includes/control-panel/includes/class-db-php-manager.php:169
219
+ msgid "Can't read: "
220
  msgstr ""
221
 
222
+ #: includes/control-panel/includes/class-export-import-content.php:113, includes/control-panel/includes/class-settings.php:51, includes/control-panel/includes/class-system-status.php:128, includes/dashboard/class.php:45
223
+ msgid "Type param is missing."
224
  msgstr ""
225
 
226
+ #: includes/control-panel/includes/class-export-import-content.php:119
227
+ msgid "Step param is missing."
 
228
  msgstr ""
229
 
230
+ #: includes/control-panel/includes/class-export-import-content.php:136
231
+ msgid "Attachment ID param is missing."
 
232
  msgstr ""
233
 
234
+ #. translators: Function request type to initialize.
235
+ #. translators: action type
236
+ #: includes/control-panel/includes/class-export-import-content.php:149, includes/control-panel/includes/class-settings.php:65, includes/control-panel/includes/class-system-status.php:134, includes/dashboard/class.php:54
237
+ msgid "Type param (%s) is not valid."
238
  msgstr ""
239
 
240
+ #: includes/control-panel/includes/class-export-import-content.php:192, includes/control-panel/includes/class-export-import-content.php:773
241
+ msgid "Step param (%s) is not valid."
242
  msgstr ""
243
 
244
+ #: includes/control-panel/includes/class-export-import-content.php:213
245
+ msgid "A problem occurred in cleaning export directory."
246
  msgstr ""
247
 
248
+ #: includes/control-panel/includes/class-export-import-content.php:239
249
+ msgid "A problem occurred in exporting Content."
250
  msgstr ""
251
 
252
+ #: includes/control-panel/includes/class-export-import-content.php:424
253
+ msgid "A problem occurred in exporting widgets."
254
  msgstr ""
255
 
256
+ #: includes/control-panel/includes/class-export-import-content.php:476
257
+ msgid "All settings in Settings are set to default. Uncheck the Settings option or change one setting in Settings then export."
258
  msgstr ""
259
 
260
+ #: includes/control-panel/includes/class-export-import-content.php:480
261
+ msgid "A problem occurred in exporting Settings."
262
  msgstr ""
263
 
264
+ #: includes/control-panel/includes/class-export-import-content.php:819, includes/control-panel/includes/class-export-import-content.php:979
265
+ msgid "A required file (%s) is missing in the selected zip file."
266
  msgstr ""
267
 
268
+ #: includes/control-panel/includes/class-export-import-content.php:840
269
+ msgid "Error in parsing %s."
270
  msgstr ""
271
 
272
+ #: includes/control-panel/includes/class-export-import-content.php:991
273
+ msgid "A problem occurred in importing Widgets."
274
  msgstr ""
275
 
276
+ #: includes/control-panel/includes/class-export-import-content.php:1023
277
+ msgid "%s is missing in the selected zip file."
278
  msgstr ""
279
 
280
+ #: includes/control-panel/includes/class-export-import-content.php:1037
281
+ msgid "Error importing settings! Please check that you uploaded (%s) a Settings export file."
282
  msgstr ""
283
 
284
+ #: includes/control-panel/includes/class-export-import-content.php:1042
285
+ msgid "Error importing settings! template Please check that you uploaded (%s) a Settings export file."
286
  msgstr ""
287
 
288
+ #: includes/control-panel/includes/class-filesystem.php:115
289
+ msgid "Unable to connect to the filesystem. Please confirm your credentials."
290
  msgstr ""
291
 
292
+ #: includes/control-panel/includes/class-filesystem.php:169
293
+ msgid "Invalid method for $wp_filesystem object!"
294
  msgstr ""
295
 
296
+ #: includes/control-panel/includes/class-filesystem.php:235, includes/control-panel/includes/class-helpers.php:95
297
+ msgid "Can't create directory %s"
298
  msgstr ""
299
 
300
+ #: includes/control-panel/includes/class-filesystem.php:255
301
+ msgid "A directory exists has same name %s"
302
  msgstr ""
303
 
304
+ #: includes/control-panel/includes/class-filesystem.php:279
305
+ msgid "File already exists %s"
306
  msgstr ""
307
 
308
+ #: includes/control-panel/includes/class-filesystem.php:284
309
+ msgid "Copy source file not exists: %s"
 
310
  msgstr ""
311
 
312
+ #: includes/control-panel/includes/class-filesystem.php:289
313
+ msgid "Copy source file not valid: %s"
 
314
  msgstr ""
315
 
316
+ #: includes/control-panel/includes/class-filesystem.php:294
317
+ msgid "Copy source file not readable: %s"
318
  msgstr ""
319
 
320
+ #: includes/control-panel/includes/class-filesystem.php:395
321
+ msgid "Zip source file not exists: %s"
322
  msgstr ""
323
 
324
+ #: includes/control-panel/includes/class-filesystem.php:400
325
+ msgid "Zip source file not valid: %s"
326
  msgstr ""
327
 
328
+ #: includes/control-panel/includes/class-filesystem.php:405
329
+ msgid "Zip source file not readable: %s"
330
  msgstr ""
331
 
332
+ #: includes/control-panel/includes/class-filesystem.php:419
333
+ msgid "Failed to create unzip destination directory: %s"
334
  msgstr ""
335
 
336
+ #: includes/control-panel/includes/class-filesystem.php:426
337
+ msgid "Unzip destination is not writable: %s"
338
  msgstr ""
339
 
340
+ #: includes/control-panel/includes/class-filesystem.php:440
341
+ msgid "Failed unzipping file: %s"
342
  msgstr ""
343
 
344
+ #: includes/control-panel/includes/class-helpers.php:39
345
+ msgid "Zip file that you are looking for is not exist"
346
  msgstr ""
347
 
348
+ #: includes/control-panel/includes/class-helpers.php:45
349
+ msgid "Unzip destination path not exist"
350
  msgstr ""
351
 
352
+ #: includes/control-panel/includes/class-helpers.php:51
353
+ msgid "Unzip destination is not writable , Please resolve this issue first."
354
  msgstr ""
355
 
356
+ #: includes/control-panel/includes/class-helpers.php:89
357
+ msgid "%s directory is not writable"
358
  msgstr ""
359
 
360
+ #: includes/control-panel/includes/class-helpers.php:120
361
+ msgid "Destination directory is not ready for upload . {%s}"
362
  msgstr ""
363
 
364
+ #: includes/control-panel/includes/class-helpers.php:151
365
+ msgid "Can't write file to {%s}"
366
  msgstr ""
367
 
368
+ #: includes/control-panel/includes/class-helpers.php:282
369
+ msgid "SSL connection error. Code: template-assets-get"
370
  msgstr ""
371
 
372
+ #: includes/control-panel/includes/class-install-plugins.php:410
373
+ msgid "Action is not valid."
374
  msgstr ""
375
 
376
+ #: includes/control-panel/includes/class-install-plugins.php:435
377
+ msgid "Can't deactivate plugin"
378
  msgstr ""
379
 
380
+ #: includes/control-panel/includes/class-install-plugins.php:441
381
+ msgid "Sorry, you are not allowed to deactivate this plugin."
382
  msgstr ""
383
 
384
+ #: includes/control-panel/includes/class-install-plugins.php:446
385
+ msgid "Deactivated Successfully."
386
  msgstr ""
387
 
388
+ #: includes/control-panel/includes/class-install-template.php:667
389
+ msgid "Installing"
390
  msgstr ""
391
 
392
+ #: includes/control-panel/includes/class-install-template.php:719
393
+ msgid "Data of plugins have imported."
394
  msgstr ""
395
 
396
+ #: includes/control-panel/includes/class-install-template.php:1108
397
+ msgid "Error importing settings! Please check that you uploaded (%s) a settings export file."
398
  msgstr ""
399
 
400
+ #: includes/control-panel/includes/class-install-template.php:1113
401
+ msgid "Error importing settings! template Please check that you uploaded (%s) a settings export file."
402
  msgstr ""
403
 
404
+ #: includes/control-panel/includes/class-settings.php:78
405
+ msgid "Assets flushed successfully."
406
  msgstr ""
407
 
408
+ #: includes/control-panel/includes/class-settings.php:90
409
+ msgid "Fields param is missing."
410
  msgstr ""
411
 
412
+ #: includes/control-panel/includes/class-settings.php:112
413
+ msgid "Settings saved successfully."
414
  msgstr ""
415
 
416
+ #: includes/control-panel/includes/class-system-status.php:55, includes/woocommerce/woocommerce-load-more.php:83
417
+ msgid "Nonce can't be verified"
418
  msgstr ""
419
 
420
+ #: includes/control-panel/includes/class-system-status.php:157
421
+ msgid "HTTP requests have been blocked by the WP_HTTP_BLOCK_EXTERNAL constant, with no allowed hosts."
422
  msgstr ""
423
 
424
+ #: includes/control-panel/includes/class-system-status.php:163
425
+ msgid "HTTP requests have been blocked by the WP_HTTP_BLOCK_EXTERNAL constant, with some hosts whitelisted: %s."
426
  msgstr ""
427
 
428
+ #: includes/control-panel/includes/class-system-status.php:362, includes/control-panel/views/install-templates.php:15
429
+ msgid "Read More"
430
  msgstr ""
431
 
432
+ #: includes/control-panel/includes/class-system-status.php:365, includes/control-panel/includes/class-system-status.php:370
433
+ msgid "Insufficient memory. You need at least 256MB of memory."
434
  msgstr ""
435
 
436
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:160
437
+ msgid "Could not open the file for parsing"
438
  msgstr ""
439
 
440
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:196, includes/control-panel/includes/importer/class-wxr-importer.php:308
441
+ msgid "This WXR file (version %s) is newer than the importer (version %s) and may not be supported. Please consider updating."
442
  msgstr ""
443
 
444
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:443
445
+ msgid "The file does not exist, please try again."
 
446
  msgstr ""
447
 
448
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:503
449
+ msgid "Invalid author mapping"
450
  msgstr ""
451
 
452
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:604
453
+ msgid "Cannot import auto-draft posts"
454
  msgstr ""
455
 
456
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:692
457
+ msgid "Failed to import \"%s\": Invalid post type %s"
458
  msgstr ""
459
 
460
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:702
461
+ msgid "%s \"%s\" already exists."
462
  msgstr ""
463
 
464
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:787
465
+ msgid "Skipping attachment \"%s\", fetching attachments disabled"
466
  msgstr ""
467
 
468
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:808
469
+ msgid "Failed to import \"%s\" (%s)"
470
  msgstr ""
471
 
472
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:840, includes/control-panel/includes/importer/class-wxr-importer.php:1531
473
+ msgid "Imported \"%s\" (%s)"
474
  msgstr ""
475
 
476
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:845
477
+ msgid "Post %d remapped to %d"
478
  msgstr ""
479
 
480
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:989
481
+ msgid "Invalid file type"
482
  msgstr ""
483
 
484
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1507
485
+ msgid "Failed to import %s %s"
486
  msgstr ""
487
 
488
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1536
489
+ msgid "Term %d remapped to %d"
490
  msgstr ""
491
 
492
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1589
493
+ msgid "Remote server returned %1$d %2$s for %3$s"
494
  msgstr ""
495
 
496
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1602
497
+ msgid "Remote file is incorrect size"
498
  msgstr ""
499
 
500
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1607
501
+ msgid "Zero size file downloaded"
502
  msgstr ""
503
 
504
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1613
505
+ msgid "Remote file is too large, limit is %s"
506
  msgstr ""
507
 
508
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1635
509
+ msgid "Running post-processing for post %d"
510
  msgstr ""
511
 
512
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1648
513
+ msgid "Could not find the post parent for \"%s\" (post #%d)"
514
  msgstr ""
515
 
516
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1653
517
+ msgid "Post %d was imported with parent %d, but could not be found"
518
  msgstr ""
519
 
520
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1667
521
+ msgid "Could not find the author for \"%s\" (post #%d)"
522
  msgstr ""
523
 
524
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1672
525
+ msgid "Post %d was imported with author \"%s\", but could not be found"
526
  msgstr ""
527
 
528
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1698
529
+ msgid "Post %d was marked for post-processing, but none was required."
530
  msgstr ""
531
 
532
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1709
533
+ msgid "Could not update \"%s\" (post #%d) with mapped data"
534
  msgstr ""
535
 
536
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1754
537
+ msgid "Could not find the menu object for \"%s\" (post #%d)"
538
  msgstr ""
539
 
540
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1759
541
+ msgid "Post %d was imported with object \"%d\" of type \"%s\", but could not be found"
542
  msgstr ""
543
 
544
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1781
545
+ msgid "Could not find the comment parent for comment #%d"
546
  msgstr ""
547
 
548
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1785
549
+ msgid "Comment %d was imported with parent %d, but could not be found"
550
  msgstr ""
551
 
552
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1799
553
+ msgid "Could not find the author for comment #%d"
554
  msgstr ""
555
 
556
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1803
557
+ msgid "Comment %d was imported with author %d, but could not be found"
558
  msgstr ""
559
 
560
+ #: includes/control-panel/includes/importer/class-wxr-importer.php:1820
561
+ msgid "Could not update comment #%d with mapped data"
562
  msgstr ""
563
 
564
+ #: includes/control-panel/includes/logic-messages.php:37, includes/control-panel/includes/logic-messages.php:45, includes/control-panel/includes/logic-messages.php:49, includes/control-panel/includes/logic-messages.php:53, includes/control-panel/includes/logic-messages.php:57, includes/control-panel/includes/logic-messages.php:61, includes/control-panel/includes/logic-messages.php:160, includes/control-panel/includes/logic-messages.php:164, includes/control-panel/includes/logic-messages.php:168, includes/control-panel/includes/logic-messages.php:172, includes/control-panel/includes/logic-messages.php:176, includes/control-panel/includes/logic-messages.php:180, includes/control-panel/includes/logic-messages.php:184, includes/control-panel/includes/logic-messages.php:188, includes/control-panel/includes/logic-messages.php:192, includes/control-panel/includes/logic-messages.php:196, includes/control-panel/includes/logic-messages.php:200, includes/control-panel/includes/logic-messages.php:208, includes/control-panel/includes/logic-messages.php:212, includes/control-panel/includes/logic-messages.php:216, includes/control-panel/includes/logic-messages.php:220, includes/control-panel/includes/logic-messages.php:224, includes/control-panel/includes/logic-messages.php:228, includes/control-panel/includes/logic-messages.php:232, includes/control-panel/includes/logic-messages.php:236, includes/control-panel/includes/logic-messages.php:240, includes/control-panel/includes/logic-messages.php:244, includes/control-panel/includes/logic-messages.php:248, includes/control-panel/includes/logic-messages.php:252, includes/control-panel/includes/logic-messages.php:256, includes/control-panel/includes/logic-messages.php:260, includes/control-panel/includes/logic-messages.php:264, includes/control-panel/includes/logic-messages.php:268, includes/control-panel/includes/logic-messages.php:272, includes/control-panel/includes/logic-messages.php:276, includes/control-panel/includes/logic-messages.php:280, includes/control-panel/includes/logic-messages.php:284, includes/control-panel/includes/logic-messages.php:288, includes/control-panel/includes/logic-messages.php:292, includes/control-panel/includes/logic-messages.php:296, includes/control-panel/includes/logic-messages.php:300, includes/control-panel/includes/logic-messages.php:304, includes/control-panel/includes/logic-messages.php:308, includes/control-panel/includes/logic-messages.php:312, includes/control-panel/includes/logic-messages.php:316, includes/control-panel/includes/logic-messages.php:320, includes/control-panel/includes/logic-messages.php:324, includes/control-panel/includes/logic-messages.php:328, includes/control-panel/includes/logic-messages.php:332, includes/control-panel/includes/logic-messages.php:336, includes/control-panel/includes/logic-messages.php:340, includes/control-panel/includes/logic-messages.php:344, includes/control-panel/includes/logic-messages.php:348
 
565
  msgstr ""
566
 
567
+ #: includes/control-panel/includes/logic-messages.php:68
568
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 200)"
569
  msgstr ""
570
 
571
+ #: includes/control-panel/includes/logic-messages.php:72
572
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 201)"
573
  msgstr ""
574
 
575
+ #: includes/control-panel/includes/logic-messages.php:76
576
+ msgid "Your plugin has been successfully added and activated."
577
  msgstr ""
578
 
579
+ #: includes/control-panel/includes/logic-messages.php:80
580
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 202)"
581
  msgstr ""
582
 
583
+ #: includes/control-panel/includes/logic-messages.php:84
584
+ msgid "Congratulations,your operation has been done successfully"
585
  msgstr ""
586
 
587
+ #: includes/control-panel/includes/logic-messages.php:88
588
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 203)"
589
  msgstr ""
590
 
591
+ #: includes/control-panel/includes/logic-messages.php:92
592
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 204)"
593
  msgstr ""
594
 
595
+ #: includes/control-panel/includes/logic-messages.php:96
596
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 205)"
597
  msgstr ""
598
 
599
+ #: includes/control-panel/includes/logic-messages.php:100
600
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 206)"
601
  msgstr ""
602
 
603
+ #: includes/control-panel/includes/logic-messages.php:104
604
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 207)"
605
  msgstr ""
606
 
607
+ #: includes/control-panel/includes/logic-messages.php:108
608
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 208)"
609
  msgstr ""
610
 
611
+ #: includes/control-panel/includes/logic-messages.php:112
612
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 209)"
613
  msgstr ""
614
 
615
+ #: includes/control-panel/includes/logic-messages.php:116
616
+ msgid "To remove your plugin, please deactivate it first and then try again."
617
  msgstr ""
618
 
619
+ #: includes/control-panel/includes/logic-messages.php:120
620
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 210)"
621
  msgstr ""
622
 
623
+ #: includes/control-panel/includes/logic-messages.php:124
624
+ msgid "Your plugin have been successfully updated."
625
  msgstr ""
626
 
627
+ #: includes/control-panel/includes/logic-messages.php:128
628
+ msgid "Your plugin have been successfully removed."
629
  msgstr ""
630
 
631
+ #: includes/control-panel/includes/logic-messages.php:132
632
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 211)"
633
  msgstr ""
634
 
635
+ #: includes/control-panel/includes/logic-messages.php:136
636
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 212)"
637
  msgstr ""
638
 
639
+ #: includes/control-panel/includes/logic-messages.php:140
640
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 213)"
641
  msgstr ""
642
 
643
+ #: includes/control-panel/includes/logic-messages.php:144
644
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 214)"
645
  msgstr ""
646
 
647
+ #: includes/control-panel/includes/logic-messages.php:148
648
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 215)"
649
  msgstr ""
650
 
651
+ #: includes/control-panel/includes/logic-messages.php:152
652
+ msgid "Whoops! We seem to be having some problems. Please contact Support and supply the number shown and we'll be happy to figure this out for you. (code 216)"
653
  msgstr ""
654
 
655
+ #: includes/control-panel/views/export-import-content.php:7
656
+ msgid "The Export/Import feature is deprecated. To migrate/backup your website use <a href=\"%s\" target=\"_blank\">3rd-party plugins</a>."
657
  msgstr ""
658
 
659
+ #: includes/control-panel/views/export-import-content.php:8, includes/control-panel/views/export-import-content.php:49
660
+ msgid "Export"
661
  msgstr ""
662
 
663
+ #: includes/control-panel/views/export-import-content.php:20
664
+ msgid "Site Content"
665
  msgstr ""
666
 
667
+ #: includes/control-panel/views/export-import-content.php:27, includes/customizer/settings/sidebar/divider.php:54
668
+ msgid "Widgets"
669
  msgstr ""
670
 
671
+ #: includes/control-panel/views/export-import-content.php:41
672
+ msgid "Custom Tables"
673
  msgstr ""
674
 
675
+ #: includes/control-panel/views/export-import-content.php:54, includes/control-panel/views/export-import-content.php:72
676
+ msgid "Import"
677
  msgstr ""
678
 
679
+ #: includes/control-panel/views/export-import-content.php:62
680
+ msgid "Upload"
681
  msgstr ""
682
 
683
+ #: includes/control-panel/views/image-sizes.php:17
684
+ msgid "Custom size for images"
685
  msgstr ""
686
 
687
+ #: includes/control-panel/views/image-sizes.php:20
688
+ msgid "Add a New Size"
689
  msgstr ""
690
 
691
+ #: includes/control-panel/views/image-sizes.php:33, includes/control-panel/views/system-status.php:314, includes/customizer/settings/comment/popup.php:15, includes/customizer/settings/comment/popup.php:69, includes/customizer/settings/product-list/settings.php:75
692
+ msgid "Name"
693
  msgstr ""
694
 
695
+ #: includes/control-panel/views/image-sizes.php:36, includes/customizer/settings/footer/widgets-thumbnail.php:17, includes/customizer/settings/sidebar/widgets-thumbnail.php:17
696
+ msgid "Size"
697
  msgstr ""
698
 
699
+ #: includes/control-panel/views/image-sizes.php:39
700
+ msgid "Crop"
701
  msgstr ""
702
 
703
+ #: includes/control-panel/views/image-sizes.php:46, includes/customizer/api/includes/control/class-template.php:100
704
+ msgid "Edit"
705
  msgstr ""
706
 
707
+ #: includes/control-panel/views/image-sizes.php:47, includes/customizer/api/includes/class-templates.php:75, includes/customizer/api/includes/class-templates.php:152
708
+ msgid "Remove"
709
  msgstr ""
710
 
711
+ #: includes/control-panel/views/install-templates.php:13
712
+ msgid "Template installation is only allowed for user with Super Admin role. Please contact your website's administrator."
713
  msgstr ""
714
 
715
+ #: includes/control-panel/views/install-templates.php:34
716
+ msgid "Restore from Last Backup"
717
  msgstr ""
718
 
719
+ #: includes/control-panel/views/install-templates.php:42
720
+ msgid "Installed Template"
721
  msgstr ""
722
 
723
+ #: includes/control-panel/views/install-templates.php:43, includes/control-panel/views/install-templates.php:53
724
+ msgid "Installing a Template"
725
  msgstr ""
726
 
727
+ #: includes/control-panel/views/install-templates.php:52
728
+ msgid "Templates"
729
  msgstr ""
730
 
731
+ #: includes/control-panel/views/settings.php:20
732
+ msgid "Flush Assets Cache"
733
  msgstr ""
734
 
735
+ #: includes/control-panel/views/settings.php:21
736
+ msgid "Flushing..."
737
  msgstr ""
738
 
739
+ #: includes/control-panel/views/settings.php:22
740
+ msgid "Clear CSS, Javascript and images cached files. New cached versions will be compiled/created on page load."
741
  msgstr ""
742
 
743
+ #: includes/control-panel/views/settings.php:26
744
+ msgid "Development Mode"
745
  msgstr ""
746
 
747
+ #: includes/control-panel/views/settings.php:32
748
+ msgid "This option should be enabled while your website is in development."
749
  msgstr ""
750
 
751
+ #: includes/control-panel/views/settings.php:35
752
+ msgid "Cache Busting"
753
  msgstr ""
754
 
755
+ #: includes/control-panel/views/settings.php:41
756
+ msgid "Enable cache busting technique."
757
  msgstr ""
758
 
759
+ #: includes/control-panel/views/settings.php:46
760
+ msgid "Custom Post Types"
761
  msgstr ""
762
 
763
+ #: includes/control-panel/views/settings.php:47
764
+ msgid "Enable Jupiter features (customizer, meta options, etc.) for these post types."
765
  msgstr ""
766
 
767
+ #: includes/control-panel/views/settings.php:60
768
+ msgid "No custom post type was found."
769
  msgstr ""
770
 
771
+ #: includes/control-panel/views/settings.php:69
772
+ msgid "Twitter Consumer Key"
773
  msgstr ""
774
 
775
+ #: includes/control-panel/views/settings.php:73
776
+ msgid "Twitter Consumer Secret"
777
  msgstr ""
778
 
779
+ #: includes/control-panel/views/settings.php:77
780
+ msgid "Twitter Access Token"
781
  msgstr ""
782
 
783
+ #: includes/control-panel/views/settings.php:81
784
+ msgid "Twitter Access Token Secret"
785
  msgstr ""
786
 
787
+ #: includes/control-panel/views/settings.php:85
788
+ msgid "MailChimp API Key"
789
  msgstr ""
790
 
791
+ #: includes/control-panel/views/settings.php:89
792
+ msgid "Mailchimp List ID"
793
  msgstr ""
794
 
795
+ #: includes/control-panel/views/settings.php:93
796
+ msgid "Google Maps API Key"
797
  msgstr ""
798
 
799
+ #: includes/control-panel/views/settings.php:99
800
+ msgid "Save Settings"
801
  msgstr ""
802
 
803
+ #: includes/control-panel/views/settings.php:100
804
+ msgid "Saving..."
805
  msgstr ""
806
 
807
+ #: includes/control-panel/views/system-status.php:12
808
+ msgid "Checking Server Requirements"
809
  msgstr ""
810
 
811
+ #: includes/control-panel/views/system-status.php:16
812
+ msgid "Get System Report"
813
  msgstr ""
814
 
815
+ #: includes/control-panel/views/system-status.php:27
816
+ msgid "WordPress Environment"
817
  msgstr ""
818
 
819
+ #: includes/control-panel/views/system-status.php:34
820
+ msgid "Home URL"
821
  msgstr ""
822
 
823
+ #: includes/control-panel/views/system-status.php:37
824
+ msgid "The URL of your site's homepage."
825
  msgstr ""
826
 
827
+ #: includes/control-panel/views/system-status.php:44
828
+ msgid "Site URL"
829
  msgstr ""
830
 
831
+ #: includes/control-panel/views/system-status.php:47
832
+ msgid "The root URL of your site."
833
  msgstr ""
834
 
835
+ #: includes/control-panel/views/system-status.php:55
836
+ msgid "WP Content URL"
837
  msgstr ""
838
 
839
+ #: includes/control-panel/views/system-status.php:58
840
+ msgid "The URL of WordPress's content directory."
841
  msgstr ""
842
 
843
+ #: includes/control-panel/views/system-status.php:66
844
+ msgid "WP Upload Path"
845
  msgstr ""
846
 
847
+ #: includes/control-panel/views/system-status.php:69
848
+ msgid "The absolute path to WordPress's upload directory."
849
  msgstr ""
850
 
851
+ #: includes/control-panel/views/system-status.php:77
852
+ msgid "WP Upload URL"
853
  msgstr ""
854
 
855
+ #: includes/control-panel/views/system-status.php:80
856
+ msgid "The URL of WordPress's upload directory."
857
  msgstr ""
858
 
859
+ #: includes/control-panel/views/system-status.php:88
860
+ msgid "WP Version"
861
  msgstr ""
862
 
863
+ #: includes/control-panel/views/system-status.php:91
864
+ msgid "The version of WordPress installed on your site."
865
  msgstr ""
866
 
867
+ #: includes/control-panel/views/system-status.php:99
868
+ msgid "WP Multisite"
869
  msgstr ""
870
 
871
+ #: includes/control-panel/views/system-status.php:102
872
+ msgid "Whether or not you have WordPress Multisite enabled."
873
  msgstr ""
874
 
875
+ #: includes/control-panel/views/system-status.php:114
876
+ msgid "Permalink Structure"
877
  msgstr ""
878
 
879
+ #: includes/control-panel/views/system-status.php:117
880
+ msgid "The current permalink structure as defined in WordPress Settings->Permalinks."
881
  msgstr ""
882
 
883
+ #: includes/control-panel/views/system-status.php:126
884
+ msgid "Front Page Display"
 
 
 
 
885
  msgstr ""
886
 
887
+ #: includes/control-panel/views/system-status.php:129
888
+ msgid "The current Reading mode of WordPress."
889
  msgstr ""
890
 
891
+ #: includes/control-panel/views/system-status.php:139
892
+ msgid "Front Page"
893
  msgstr ""
894
 
895
+ #: includes/control-panel/views/system-status.php:142
896
+ msgid "The currently selected page which acts as the site's Front Page."
897
  msgstr ""
898
 
899
+ #: includes/control-panel/views/system-status.php:150
900
+ msgid "Posts Page"
901
  msgstr ""
902
 
903
+ #: includes/control-panel/views/system-status.php:153
904
+ msgid "The currently selected page in where blog posts are displayed."
905
  msgstr ""
906
 
907
+ #: includes/control-panel/views/system-status.php:164
908
+ msgid "WP Memory Limit"
909
  msgstr ""
910
 
911
+ #: includes/control-panel/views/system-status.php:167
912
+ msgid "The maximum amount of memory (RAM) that your site can use at one time."
913
  msgstr ""
914
 
915
+ #: includes/control-panel/views/system-status.php:183
916
+ msgid "Database Table Prefix"
917
  msgstr ""
918
 
919
+ #: includes/control-panel/views/system-status.php:186
920
+ msgid "The prefix structure of the current WordPress database."
921
  msgstr ""
922
 
923
+ #: includes/control-panel/views/system-status.php:194
924
+ msgid "WP Debug Mode"
925
  msgstr ""
926
 
927
+ #: includes/control-panel/views/system-status.php:197
928
+ msgid "Displays whether or not WordPress is in Debug Mode."
929
  msgstr ""
930
 
931
+ #: includes/control-panel/views/system-status.php:209
932
+ msgid "Language"
933
  msgstr ""
934
 
935
+ #: includes/control-panel/views/system-status.php:212
936
+ msgid "The current language used by WordPress. Default = English"
937
  msgstr ""
938
 
939
+ #: includes/control-panel/views/system-status.php:220
940
+ msgid "The Main WP Directory"
941
  msgstr ""
942
 
943
+ #: includes/control-panel/views/system-status.php:223
944
+ msgid "Check if main WP directory is writable."
945
  msgstr ""
946
 
947
+ #: includes/control-panel/views/system-status.php:228, includes/control-panel/views/system-status.php:245, includes/control-panel/views/system-status.php:262, includes/control-panel/views/system-status.php:279, includes/control-panel/views/system-status.php:296
948
+ msgid "Writable"
949
  msgstr ""
950
 
951
+ #: includes/control-panel/views/system-status.php:231, includes/control-panel/views/system-status.php:248, includes/control-panel/views/system-status.php:265, includes/control-panel/views/system-status.php:282, includes/control-panel/views/system-status.php:299
952
+ msgid "Make sure <code>%s</code> directory is writable."
953
  msgstr ""
954
 
955
+ #: includes/control-panel/views/system-status.php:237
956
+ msgid "The wp-content Directory"
957
  msgstr ""
958
 
959
+ #: includes/control-panel/views/system-status.php:240
960
+ msgid "Check if wp-content directory is writable."
961
  msgstr ""
962
 
963
+ #: includes/control-panel/views/system-status.php:254
964
+ msgid "The uploads Directory"
965
  msgstr ""
966
 
967
+ #: includes/control-panel/views/system-status.php:257
968
+ msgid "Check if uploads directory is writable."
969
  msgstr ""
970
 
971
+ #: includes/control-panel/views/system-status.php:271
972
+ msgid "The plugins Directory"
973
  msgstr ""
974
 
975
+ #: includes/control-panel/views/system-status.php:274
976
+ msgid "Check if plugins directory is writable."
977
  msgstr ""
978
 
979
+ #: includes/control-panel/views/system-status.php:288
980
+ msgid "The themes Directory"
981
  msgstr ""
982
 
983
+ #: includes/control-panel/views/system-status.php:291
984
+ msgid "Check if themes directory is writable."
985
  msgstr ""
986
 
987
+ #: includes/control-panel/views/system-status.php:309
988
+ msgid "Theme"
989
  msgstr ""
990
 
991
+ #: includes/control-panel/views/system-status.php:316
992
+ msgid "The name of the current active theme."
993
  msgstr ""
994
 
995
+ #: includes/control-panel/views/system-status.php:321
996
+ msgid "Version"
997
  msgstr ""
998
 
999
+ #: includes/control-panel/views/system-status.php:323
1000
+ msgid "The installed version of the current active theme."
1001
  msgstr ""
1002
 
1003
+ #: includes/control-panel/views/system-status.php:330
1004
+ msgid "Author URL"
1005
  msgstr ""
1006
 
1007
+ #: includes/control-panel/views/system-status.php:332
1008
+ msgid "The theme developers URL."
1009
  msgstr ""
1010
 
1011
+ #: includes/control-panel/views/system-status.php:337
1012
+ msgid "Child Theme"
1013
  msgstr ""
1014
 
1015
+ #: includes/control-panel/views/system-status.php:339
1016
+ msgid "Displays whether or not the current theme is a child theme."
1017
  msgstr ""
1018
 
1019
+ #: includes/control-panel/views/system-status.php:351
1020
+ msgid "Parent Theme Name"
1021
  msgstr ""
1022
 
1023
+ #: includes/control-panel/views/system-status.php:354
1024
+ msgid "The name of the parent theme."
1025
  msgstr ""
1026
 
1027
+ #: includes/control-panel/views/system-status.php:360
1028
+ msgid "Parent Theme Version"
1029
  msgstr ""
1030
 
1031
+ #: includes/control-panel/views/system-status.php:363
1032
+ msgid "The installed version of the parent theme."
1033
  msgstr ""
1034
 
1035
+ #: includes/control-panel/views/system-status.php:369
1036
+ msgid "Parent Theme Author URL"
1037
  msgstr ""
1038
 
1039
+ #: includes/control-panel/views/system-status.php:372
1040
+ msgid "The parent theme developers URL."
1041
  msgstr ""
1042
 
1043
+ #: includes/control-panel/views/system-status.php:385
1044
+ msgid "Browser"
1045
  msgstr ""
1046
 
1047
+ #: includes/control-panel/views/system-status.php:392
1048
+ msgid "Browser Info"
1049
  msgstr ""
1050
 
1051
+ #: includes/control-panel/views/system-status.php:395
1052
+ msgid "Information about web browser current in use."
1053
  msgstr ""
1054
 
1055
+ #: includes/control-panel/views/system-status.php:415
1056
+ msgid "Server Environment"
1057
  msgstr ""
1058
 
1059
+ #: includes/control-panel/views/system-status.php:422
1060
+ msgid "Server Info"
1061
  msgstr ""
1062
 
1063
+ #: includes/control-panel/views/system-status.php:425
1064
+ msgid "Information about the web server that is currently hosting your site."
1065
  msgstr ""
1066
 
1067
+ #: includes/control-panel/views/system-status.php:433
1068
+ msgid "Localhost Environment"
1069
  msgstr ""
1070
 
1071
+ #: includes/control-panel/views/system-status.php:436
1072
+ msgid "Is the server running in a localhost environment."
1073
  msgstr ""
1074
 
1075
+ #: includes/control-panel/views/system-status.php:448
1076
+ msgid "PHP Version"
1077
  msgstr ""
1078
 
1079
+ #: includes/control-panel/views/system-status.php:451
1080
+ msgid "The version of PHP installed on your hosting server."
1081
  msgstr ""
1082
 
1083
+ #: includes/control-panel/views/system-status.php:459
1084
+ msgid "ABSPATH"
1085
  msgstr ""
1086
 
1087
+ #: includes/control-panel/views/system-status.php:462
1088
+ msgid "The ABSPATH variable on the server."
1089
  msgstr ""
1090
 
1091
+ #: includes/control-panel/views/system-status.php:473
1092
+ msgid "PHP Memory Limit"
1093
  msgstr ""
1094
 
1095
+ #: includes/control-panel/views/system-status.php:475, includes/control-panel/views/system-status.php:492
1096
+ msgid "The largest filesize that can be contained in one post."
1097
  msgstr ""
1098
 
1099
+ #: includes/control-panel/views/system-status.php:490
1100
+ msgid "PHP Post Max Size"
1101
  msgstr ""
1102
 
1103
+ #: includes/control-panel/views/system-status.php:497
1104
+ msgid "PHP Time Limit"
1105
  msgstr ""
1106
 
1107
+ #: includes/control-panel/views/system-status.php:499
1108
+ msgid "max_execution_time : The amount of time (in seconds) that your site will spend on a single operation before timing out (to avoid server lockups)."
1109
  msgstr ""
1110
 
1111
+ #: includes/control-panel/views/system-status.php:505
1112
+ msgid "PHP Max Input Vars"
1113
  msgstr ""
1114
 
1115
+ #: includes/control-panel/views/system-status.php:507
1116
+ msgid "The maximum number of variables your server can use for a single function to avoid overloads."
1117
  msgstr ""
1118
 
1119
+ #: includes/control-panel/views/system-status.php:516
1120
+ msgid "Suhosin Max Request Vars"
1121
  msgstr ""
1122
 
1123
+ #: includes/control-panel/views/system-status.php:518, includes/control-panel/views/system-status.php:525
1124
+ msgid "The maximum number of variables your server running Suhosin can use for a single function to avoid overloads."
1125
  msgstr ""
1126
 
1127
+ #: includes/control-panel/views/system-status.php:523
1128
+ msgid "Suhosin Max Post Vars"
1129
  msgstr ""
1130
 
1131
+ #: includes/control-panel/views/system-status.php:533
1132
+ msgid "PHP Display Errors"
1133
  msgstr ""
1134
 
1135
+ #: includes/control-panel/views/system-status.php:535
1136
+ msgid "Determines if PHP will display errors within the browser."
1137
  msgstr ""
1138
 
1139
+ #: includes/control-panel/views/system-status.php:549
1140
+ msgid "SUHOSIN Installed"
1141
  msgstr ""
1142
 
1143
+ #: includes/control-panel/views/system-status.php:551
1144
+ msgid "Suhosin is an advanced protection system for PHP installations. It was designed to protect your servers on the one hand against a number of well known problems in PHP applications and on the other hand against potential unknown vulnerabilities within these applications or the PHP core itself. If enabled on your server, Suhosin may need to be configured to increase its data submission limits."
1145
  msgstr ""
1146
 
1147
+ #: includes/control-panel/views/system-status.php:563
1148
+ msgid "MySQL Version"
1149
  msgstr ""
1150
 
1151
+ #: includes/control-panel/views/system-status.php:565
1152
+ msgid "The version of MySQL installed on your hosting server."
1153
  msgstr ""
1154
 
1155
+ #: includes/control-panel/views/system-status.php:570
1156
+ msgid "Max Upload Size"
1157
  msgstr ""
1158
 
1159
+ #: includes/control-panel/views/system-status.php:572
1160
+ msgid "The largest filesize that can be uploaded to your WordPress installation."
1161
  msgstr ""
1162
 
1163
+ #: includes/control-panel/views/system-status.php:578
1164
+ msgid "Default Timezone is UTC"
1165
  msgstr ""
1166
 
1167
+ #: includes/control-panel/views/system-status.php:581
1168
+ msgid "The default timezone for your server."
1169
  msgstr ""
1170
 
1171
+ #: includes/control-panel/views/system-status.php:586
1172
+ msgid "Default timezone is %s - it should be UTC"
1173
  msgstr ""
1174
 
1175
+ #: includes/control-panel/views/system-status.php:595
1176
+ msgid "PHP XML"
1177
  msgstr ""
1178
 
1179
+ #: includes/control-panel/views/system-status.php:598
1180
+ msgid "Theme requires PHP XML Library to be installed."
1181
  msgstr ""
1182
 
1183
+ #: includes/control-panel/views/system-status.php:610
1184
+ msgid "MBString"
1185
  msgstr ""
1186
 
1187
+ #: includes/control-panel/views/system-status.php:613
1188
+ msgid "Theme requires MBString PHP Library to be installed."
1189
  msgstr ""
1190
 
1191
+ #: includes/control-panel/views/system-status.php:625
1192
+ msgid "SimpleXML"
1193
  msgstr ""
1194
 
1195
+ #: includes/control-panel/views/system-status.php:628
1196
+ msgid "Theme requires SimpleXML PHP Library to be installed."
1197
  msgstr ""
1198
 
1199
+ #: includes/control-panel/views/system-status.php:641
1200
+ msgid "Fsockopen/cURL"
1201
  msgstr ""
1202
 
1203
+ #: includes/control-panel/views/system-status.php:642
1204
+ msgid "Used when communicating with remote services with PHP."
1205
  msgstr ""
1206
 
1207
+ #: includes/control-panel/views/system-status.php:648
1208
+ msgid "Your server does not have fsockopen or cURL enabled - cURL is used to communicate with other servers. Please contact your hosting provider."
1209
  msgstr ""
1210
 
1211
+ #: includes/control-panel/views/system-status.php:651
1212
+ msgid "SoapClient"
1213
  msgstr ""
1214
 
1215
+ #: includes/control-panel/views/system-status.php:652
1216
+ msgid "Some webservices like shipping use SOAP to get information from remote servers, for example, live shipping quotes from FedEx require SOAP to be installed."
1217
  msgstr ""
1218
 
1219
+ #: includes/control-panel/views/system-status.php:658
1220
+ msgid "Your server does not have the <a href=\"%s\">SOAP Client</a> class enabled - some gateway plugins which use SOAP may not work as expected."
1221
  msgstr ""
1222
 
1223
+ #: includes/control-panel/views/system-status.php:661
1224
+ msgid "DOMDocument"
1225
  msgstr ""
1226
 
1227
+ #: includes/control-panel/views/system-status.php:662
1228
+ msgid "HTML/Multipart emails use DOMDocument to generate inline CSS in templates."
1229
  msgstr ""
1230
 
1231
+ #: includes/control-panel/views/system-status.php:668
1232
+ msgid "Your server does not have the <a href=\"%s\">DOMDocument</a> class enabled - HTML/Multipart emails, and also some extensions, will not work without DOMDocument."
1233
  msgstr ""
1234
 
1235
+ #: includes/control-panel/views/system-status.php:672
1236
+ msgid "GZip"
1237
  msgstr ""
1238
 
1239
+ #: includes/control-panel/views/system-status.php:673
1240
+ msgid "GZip (gzopen) is used to open the GEOIP database from MaxMind."
1241
  msgstr ""
1242
 
1243
+ #: includes/control-panel/views/system-status.php:679
1244
+ msgid "Your server does not support the <a href=\"%s\">gzopen</a> function - this is required to use the GeoIP database from MaxMind. The API fallback will be used instead for geolocation."
1245
  msgstr ""
1246
 
1247
+ #: includes/control-panel/views/system-status.php:683
1248
+ msgid "Zip Archive"
1249
  msgstr ""
1250
 
1251
+ #: includes/control-panel/views/system-status.php:684
1252
+ msgid "Used to read or write ZIP compressed archives and the files inside them."
1253
  msgstr ""
1254
 
1255
+ #: includes/control-panel/views/system-status.php:689
1256
+ msgid "ZipArchive library is missing. Install the Zip extension. Contact your hosting provider."
1257
  msgstr ""
1258
 
1259
+ #: includes/control-panel/views/system-status.php:694
1260
+ msgid "Iconv"
1261
  msgstr ""
1262
 
1263
+ #: includes/control-panel/views/system-status.php:695
1264
+ msgid "Used in CSS parser to handle the character set conversion."
1265
  msgstr ""
1266
 
1267
+ #: includes/control-panel/views/system-status.php:700
1268
+ msgid "Iconv library is missing. Install the iconv extension. Contact your hosting provider."
1269
  msgstr ""
1270
 
1271
+ #: includes/control-panel/views/system-status.php:725
1272
+ msgid "HTTP Requests"
1273
  msgstr ""
1274
 
1275
+ #: includes/control-panel/views/system-status.php:728
1276
+ msgid "Check if HTTP requests (get, post and ...) are working properly."
1277
  msgstr ""
1278
 
1279
+ #: includes/control-panel/views/system-status.php:737
1280
+ msgid "Communication with artbees.net"
1281
  msgstr ""
1282
 
1283
+ #: includes/control-panel/views/system-status.php:740
1284
+ msgid "Check if you have proper access to artbees.net server."
1285
  msgstr ""
1286
 
1287
+ #: includes/control-panel/views/system-status.php:755
1288
+ msgid "Database"
1289
  msgstr ""
1290
 
1291
+ #: includes/control-panel/views/system-status.php:762
1292
+ msgid "Database Size"
1293
  msgstr ""
1294
 
1295
+ #: includes/control-panel/views/system-status.php:765
1296
+ msgid "Information about database."
1297
  msgstr ""
1298
 
1299
+ #: includes/control-panel/views/system-status.php:867
1300
+ msgid "Theme Mods Size"
1301
  msgstr ""
1302
 
1303
+ #: includes/control-panel/views/system-status.php:870
1304
+ msgid "Size of customizer options."
1305
  msgstr ""
1306
 
1307
+ #: includes/control-panel/views/system-status.php:886
1308
+ msgid "Cleanup"
1309
  msgstr ""
1310
 
1311
+ #: includes/control-panel/views/system-status.php:897
1312
+ msgid "Active Plugins"
1313
  msgstr ""
1314
 
1315
+ #: includes/control-panel/views/system-status.php:909
1316
+ msgid "Visit plugin homepage"
1317
  msgstr ""
1318
 
1319
+ #: includes/control-panel/views/system-status.php:918
1320
+ msgctxt "by author"
1321
+ msgid "by %s"
1322
  msgstr ""
1323
 
1324
+ #: includes/custom-fields/title-bar.php:28, includes/customizer/settings/title-bar/popup.php:12, includes/customizer/settings/title-bar/settings.php:87, includes/customizer/settings/title-bar/settings.php:194
1325
+ msgid "Subtitle"
1326
  msgstr ""
1327
 
1328
+ #: includes/customizer/api/classes/class-multilingual.php:377
1329
+ msgid "Language:"
1330
  msgstr ""
1331
 
1332
+ #: includes/customizer/api/classes/class-status.php:47
1333
+ msgid "Customizer Settings Name"
1334
  msgstr ""
1335
 
1336
+ #: includes/customizer/api/classes/class-status.php:48
1337
+ msgid "Control Type"
1338
  msgstr ""
1339
 
1340
+ #: includes/customizer/api/includes/class-templates.php:58, includes/customizer/api/includes/section/class-popup.php:168, includes/customizer/api/includes/section/class-popup.php:247
1341
+ msgid "Close"
1342
  msgstr ""
1343
 
1344
+ #: includes/customizer/api/includes/class-templates.php:71, includes/customizer/api/includes/class-templates.php:86
1345
+ msgid "The spectate before us was indeed sublime."
1346
  msgstr ""
1347
 
1348
+ #: includes/customizer/api/includes/class-templates.php:88
1349
+ msgid "Select a Font Family"
1350
  msgstr ""
1351
 
1352
+ #: includes/customizer/api/includes/class-templates.php:104
1353
+ msgid "All Fonts"
1354
  msgstr ""
1355
 
1356
+ #: includes/customizer/api/includes/class-templates.php:136
1357
+ msgid "Cancel"
1358
  msgstr ""
1359
 
1360
+ #: includes/customizer/api/includes/class-templates.php:140
1361
+ msgid "Submit"
1362
  msgstr ""
1363
 
1364
+ #: includes/customizer/api/includes/class-templates.php:160
1365
+ msgid "Back"
1366
  msgstr ""
1367
 
1368
+ #: includes/customizer/api/includes/class-templates.php:163
1369
+ msgid "Activate Jupiter X to unlock this feature"
1370
  msgstr ""
1371
 
1372
+ #: includes/customizer/api/includes/class-templates.php:164, includes/customizer/api/includes/control/class-pro-box.php:97
1373
+ msgid "Activate Now"
1374
  msgstr ""
1375
 
1376
+ #: includes/customizer/api/includes/class-templates.php:167, includes/customizer/api/includes/control/class-pro-box.php:101, includes/customizer/settings/pro/popup.php:14
1377
+ msgid "Upgrade to Jupiter X Pro"
1378
  msgstr ""
1379
 
1380
+ #: includes/customizer/api/includes/control/class-alert.php:83
1381
+ msgid "Learn more"
1382
  msgstr ""
1383
 
1384
+ #: includes/customizer/api/includes/control/class-box-model.php:109
1385
+ msgid "Margin"
1386
  msgstr ""
1387
 
1388
+ #: includes/customizer/api/includes/control/class-box-model.php:113
1389
+ msgid "Padding"
1390
  msgstr ""
1391
 
1392
+ #: includes/customizer/api/includes/control/class-child-popup.php:107, includes/dashboard/widgets/class-overview.php:127, jupiterx-core.php:257, jupiterx-core.php:257
1393
+ msgid "Customize"
1394
  msgstr ""
1395
 
1396
+ #: includes/customizer/api/includes/control/class-exceptions.php:76, includes/customizer/api/includes/control/class-image.php:45
1397
+ msgid "Remove image icon"
1398
  msgstr ""
1399
 
1400
+ #: includes/customizer/api/includes/control/class-exceptions.php:76
1401
+ msgid "Add New Condition"
1402
  msgstr ""
1403
 
1404
+ #: includes/customizer/api/includes/control/class-fonts.php:76
1405
+ msgid "Add Font Family"
1406
  msgstr ""
1407
 
1408
+ #: includes/customizer/api/includes/control/class-image.php:46
1409
+ msgid "Upload image icon"
1410
  msgstr ""
1411
 
1412
+ #: includes/customizer/api/includes/control/class-image.php:47
1413
+ msgid "Click to Upload Image"
1414
  msgstr ""
1415
 
1416
+ #: includes/customizer/api/includes/control/class-pro-box.php:78
1417
+ msgid "Activate Jupiter X"
1418
  msgstr ""
1419
 
1420
+ #: includes/customizer/api/includes/control/class-pro-box.php:79
1421
+ msgid "To unlock this feature you must activate Jupiter X"
1422
  msgstr ""
1423
 
1424
+ #: includes/customizer/api/includes/control/class-pro-box.php:81
1425
+ msgid "Upgrade to unlock this feature"
1426
  msgstr ""
1427
 
1428
+ #: includes/customizer/api/includes/control/class-pro-box.php:82
1429
+ msgid "You can unlock more customization options."
1430
  msgstr ""
1431
 
1432
+ #: includes/customizer/api/includes/control/class-template.php:97
1433
+ msgid "OR"
1434
  msgstr ""
1435
 
1436
+ #: includes/customizer/api/includes/control/class-template.php:104, includes/dashboard/widgets/class-overview.php:222
1437
+ msgid "New"
1438
  msgstr ""
1439
 
1440
+ #: includes/customizer/api/includes/control/group/class-background.php:43
1441
+ msgid "Background Color Type"
1442
  msgstr ""
1443
 
1444
+ #: includes/customizer/api/includes/control/group/class-background.php:71
1445
+ msgid "BG Image"
1446
  msgstr ""
1447
 
1448
+ #: includes/customizer/api/includes/control/group/class-background.php:78, includes/customizer/api/includes/control/group/class-box-shadow.php:80, includes/customizer/settings/cart-quick-view/settings.php:26, includes/customizer/settings/header/settings.php:166
1449
+ msgid "Position"
1450
  msgstr ""
1451
 
1452
+ #: includes/customizer/api/includes/control/group/class-background.php:85
1453
+ msgid "Repeat"
1454
  msgstr ""
1455
 
1456
+ #: includes/customizer/api/includes/control/group/class-background.php:107, includes/customizer/settings/footer/settings.php:53, includes/customizer/settings/header/settings.php:145
1457
+ msgid "Fixed"
1458
  msgstr ""
1459
 
1460
+ #: includes/customizer/api/includes/control/group/class-background.php:123
1461
+ msgid "Cover"
1462
  msgstr ""
1463
 
1464
+ #: includes/customizer/api/includes/control/group/class-background.php:171, includes/customizer/api/includes/control/group/class-box-shadow.php:84
1465
+ msgid "Linear"
1466
  msgstr ""
1467
 
1468
+ #: includes/customizer/api/includes/control/group/class-background.php:174
1469
+ msgid "Radial"
1470
  msgstr ""
1471
 
1472
+ #: includes/customizer/api/includes/control/group/class-background.php:231
1473
+ msgid "Social or Self hosted video link"
1474
  msgstr ""
1475
 
1476
+ #: includes/customizer/api/includes/control/group/class-background.php:233
1477
+ msgid "Video Link"
1478
  msgstr ""
1479
 
1480
+ #: includes/customizer/api/includes/control/group/class-background.php:240
1481
+ msgid "Video Fallback"
1482
  msgstr ""
1483
 
1484
+ #: includes/customizer/api/includes/control/group/class-border.php:48
1485
+ msgid "Dashed"
1486
  msgstr ""
1487
 
1488
+ #: includes/customizer/api/includes/control/group/class-border.php:49
1489
+ msgid "Dotted"
1490
  msgstr ""
1491
 
1492
+ #: includes/customizer/api/includes/control/group/class-border.php:50
1493
+ msgid "Solid"
1494
  msgstr ""
1495
 
1496
+ #: includes/customizer/api/includes/control/group/class-box-shadow.php:44, includes/widgets/widget-nav-menu.php:109
1497
+ msgid "Horizontal"
1498
  msgstr ""
1499
 
1500
+ #: includes/customizer/api/includes/control/group/class-box-shadow.php:53, includes/widgets/widget-nav-menu.php:108
1501
+ msgid "Vertical"
1502
  msgstr ""
1503
 
1504
+ #: includes/customizer/api/includes/control/group/class-box-shadow.php:62
1505
+ msgid "Blur"
1506
  msgstr ""
1507
 
1508
+ #: includes/customizer/api/includes/control/group/class-box-shadow.php:71
1509
+ msgid "Spread"
1510
  msgstr ""
1511
 
1512
+ #: includes/customizer/api/includes/control/group/class-box-shadow.php:87
1513
+ msgid "Inset"
1514
  msgstr ""
1515
 
1516
+ #: includes/customizer/api/includes/control/group/class-box-shadow.php:94
1517
+ msgid "Color"
1518
  msgstr ""
1519
 
1520
+ #: includes/customizer/api/includes/control/group/class-typography.php:45, includes/customizer/api/includes/control/group/class-typography.php:67, includes/customizer/api/includes/control/group/class-typography.php:108, includes/customizer/settings/blog-single/settings.php:21, includes/customizer/settings/blog-single/settings.php:39, includes/customizer/settings/footer/settings.php:34, includes/customizer/settings/footer/subfooter-menu.php:106, includes/customizer/settings/footer/widgets-link.php:37, includes/customizer/settings/footer/widgets-link.php:83, includes/customizer/settings/header/settings.php:33, includes/customizer/settings/page-single/settings.php:21, includes/customizer/settings/portfolio-single/settings.php:21, includes/customizer/settings/post-types/popup.php:70, includes/customizer/settings/sidebar/widgets-link.php:37, includes/customizer/settings/sidebar/widgets-link.php:83, includes/customizer/settings/title-bar/settings.php:22, includes/customizer/settings/title-bar/settings.php:155
1521
+ msgid "Default"
1522
  msgstr ""
1523
 
1524
+ #: includes/customizer/api/includes/control/group/class-typography.php:110
1525
+ msgid "Capitalize"
1526
  msgstr ""
1527
 
1528
+ #: includes/customizer/api/includes/control/group/class-typography.php:111
1529
+ msgid "Lowercase"
1530
  msgstr ""
1531
 
1532
+ #: includes/customizer/api/includes/control/group/class-typography.php:112
1533
+ msgid "Uppercase"
1534
  msgstr ""
1535
 
1536
+ #: includes/customizer/api/includes/control/group/class-typography.php:163
1537
+ msgid "Normal"
1538
  msgstr ""
1539
 
1540
+ #: includes/customizer/api/includes/control/group/class-typography.php:164
1541
+ msgid "Bold"
1542
  msgstr ""
1543
 
1544
+ #: includes/customizer/api/includes/control/group/class-typography.php:165
1545
+ msgid "Bolder"
1546
  msgstr ""
1547
 
1548
+ #: includes/customizer/api/includes/control/group/class-typography.php:166
1549
+ msgid "Lighter"
1550
  msgstr ""
1551
 
1552
+ #: includes/customizer/api/includes/control/group/class-typography.php:167
1553
+ msgid "100"
1554
  msgstr ""
1555
 
1556
+ #: includes/customizer/api/includes/control/group/class-typography.php:168
1557
+ msgid "200"
1558
  msgstr ""
1559
 
1560
+ #: includes/customizer/api/includes/control/group/class-typography.php:169
1561
+ msgid "300"
1562
  msgstr ""
1563
 
1564
+ #: includes/customizer/api/includes/control/group/class-typography.php:170
1565
+ msgid "400"
1566
  msgstr ""
1567
 
1568
+ #: includes/customizer/api/includes/control/group/class-typography.php:171
1569
+ msgid "500"
1570
  msgstr ""
1571
 
1572
+ #: includes/customizer/api/includes/control/group/class-typography.php:172
1573
+ msgid "600"
1574
  msgstr ""
1575
 
1576
+ #: includes/customizer/api/includes/control/group/class-typography.php:173
1577
+ msgid "700"
1578
  msgstr ""
1579
 
1580
+ #: includes/customizer/api/includes/control/group/class-typography.php:174
1581
+ msgid "800"
1582
  msgstr ""
1583
 
1584
+ #: includes/customizer/api/includes/control/group/class-typography.php:175
1585
+ msgid "900"
1586
  msgstr ""
1587
 
1588
+ #: includes/customizer/api/includes/section/class-link.php:98, includes/customizer/api/includes/section/class-popup.php:143
1589
+ msgid "Press return or enter to open this section"
1590
  msgstr ""
1591
 
1592
+ #: includes/customizer/settings/404/popup.php:13
1593
+ msgid "404"
1594
  msgstr ""
1595
 
1596
+ #: includes/customizer/settings/404/popup.php:21
1597
+ msgid "Setting custom template for 404 page"
1598
  msgstr ""
1599
 
1600
+ #: includes/customizer/settings/404/settings.php:17, includes/customizer/settings/maintenance/settings.php:36, includes/customizer/settings/product-page/settings.php:17
1601
+ msgid "Template"
1602
  msgstr ""
1603
 
1604
+ #: includes/customizer/settings/404/settings.php:20, includes/customizer/settings/maintenance/settings.php:39, includes/customizer/settings/product-list/settings.php:44
1605
+ msgid "None"
1606
  msgstr ""
1607
 
1608
+ #: includes/customizer/settings/blog-archive/popup.php:13
1609
+ msgid "Blog Archive"
1610
  msgstr ""
1611
 
1612
+ #: includes/customizer/settings/blog-archive/settings.php:17, includes/customizer/settings/portfolio-archive/settings.php:17, includes/customizer/settings/post-types/popup.php:206
1613
+ msgid "My Templates"
1614
  msgstr ""
1615
 
1616
+ #: includes/customizer/settings/blog-archive/settings.php:18, includes/customizer/settings/portfolio-archive/settings.php:18, includes/customizer/settings/post-types/popup.php:207
1617
+ msgid "Select one"
1618
  msgstr ""
1619
 
1620
+ #: includes/customizer/settings/blog-single/avatar.php:18
1621
+ msgid "Width"
1622
  msgstr ""
1623
 
1624
+ #: includes/customizer/settings/blog-single/featured-image.php:17, includes/customizer/settings/comment/button.php:34, includes/customizer/settings/footer/settings.php:99, includes/customizer/settings/footer/settings.php:222, includes/customizer/settings/header/settings.php:93, includes/customizer/settings/page-single/featured-image.php:18, includes/customizer/settings/portfolio-single/featured-image.php:18, includes/customizer/settings/product-page/settings.php:137, includes/customizer/settings/site-settings/settings.php:21, includes/customizer/settings/title-bar/settings.php:36, includes/customizer/settings/title-bar/settings.php:165
1625
+ msgid "Full Width"
1626
  msgstr ""
1627
 
1628
+ #: includes/customizer/settings/blog-single/featured-image.php:34, includes/customizer/settings/blog-single/featured-image.php:88, includes/customizer/settings/page-single/featured-image.php:28, includes/customizer/settings/portfolio-single/featured-image.php:28
1629
+ msgid "Min Height"
1630
  msgstr ""
1631
 
1632
+ #: includes/customizer/settings/blog-single/featured-image.php:61, includes/customizer/settings/blog-single/featured-image.php:118, includes/customizer/settings/page-single/featured-image.php:48, includes/customizer/settings/portfolio-single/featured-image.php:48
1633
+ msgid "Max Height"
1634
  msgstr ""
1635
 
1636
+ #: includes/customizer/settings/blog-single/featured-image.php:145
1637
+ msgid "Overlay Color"
1638
  msgstr ""
1639
 
1640
+ #: includes/customizer/settings/blog-single/meta.php:18, includes/customizer/settings/blog-single/post-content.php:18, includes/customizer/settings/blog-single/tags.php:18, includes/customizer/settings/blog-single/title.php:18, includes/customizer/settings/comment/button.php:17, includes/customizer/settings/footer/widgets-container.php:17, includes/customizer/settings/footer/widgets-title.php:17, includes/customizer/settings/header/settings.php:48, includes/customizer/settings/page-single/title.php:17, includes/customizer/settings/portfolio-single/meta.php:18, includes/customizer/settings/portfolio-single/post-content.php:18, includes/customizer/settings/portfolio-single/title.php:17, includes/customizer/settings/post-types/post-content.php:30, includes/customizer/settings/sidebar/widgets-container.php:33, includes/customizer/settings/sidebar/widgets-title.php:17, includes/customizer/settings/title-bar/breadcrumb.php:17, includes/customizer/settings/title-bar/subtitle.php:17, includes/customizer/settings/title-bar/title.php:17
1641
+ msgid "Align"
1642
  msgstr ""
1643
 
1644
+ #: includes/customizer/settings/blog-single/meta.php:42, includes/customizer/settings/blog-single/popup.php:23, includes/customizer/settings/comment/popup.php:68, includes/customizer/settings/comment/settings.php:32
1645
+ msgid "Avatar"
1646
  msgstr ""
1647
 
1648
+ #: includes/customizer/settings/blog-single/meta.php:78, includes/customizer/settings/portfolio-single/meta.php:55
1649
+ msgid "Meta Divider"
1650
  msgstr ""
1651
 
1652
+ #: includes/customizer/settings/blog-single/meta.php:104, includes/customizer/settings/portfolio-single/meta.php:74
1653
+ msgid "Divider Color"
1654
  msgstr ""
1655
 
1656
+ #: includes/customizer/settings/blog-single/meta.php:132, includes/customizer/settings/portfolio-single/meta.php:95, includes/customizer/settings/typography/popup.php:12
1657
+ msgid "Links"
1658
  msgstr ""
1659
 
1660
+ #: includes/customizer/settings/blog-single/popup.php:11, includes/customizer/settings/blog-single/popup.php:88, includes/customizer/settings/blog-single/settings.php:125, includes/customizer/settings/page-single/popup.php:12, includes/customizer/settings/page-single/popup.php:61, includes/customizer/settings/page-single/settings.php:70, includes/customizer/settings/portfolio-single/popup.php:13, includes/customizer/settings/portfolio-single/popup.php:66, includes/customizer/settings/portfolio-single/settings.php:74, includes/customizer/settings/post-types/popup.php:157
1661
+ msgid "Featured Image"
1662
  msgstr ""
1663
 
1664
+ #: includes/customizer/settings/blog-single/popup.php:12, includes/customizer/settings/blog-single/popup.php:89, includes/customizer/settings/blog-single/settings.php:126, includes/customizer/settings/comment/popup.php:11, includes/customizer/settings/comment/popup.php:65, includes/customizer/settings/page-single/popup.php:11, includes/customizer/settings/page-single/popup.php:60, includes/customizer/settings/page-single/settings.php:71, includes/customizer/settings/portfolio-single/popup.php:11, includes/customizer/settings/portfolio-single/popup.php:64, includes/customizer/settings/portfolio-single/settings.php:75, includes/customizer/settings/post-types/popup.php:158, includes/customizer/settings/title-bar/popup.php:11, includes/customizer/settings/title-bar/settings.php:86, includes/customizer/settings/title-bar/settings.php:193, includes/widgets/widget-posts.php:34, includes/widgets/widget-posts.php:125, includes/widgets/widget-social.php:33
1665
+ msgid "Title"
1666
  msgstr ""
1667
 
1668
+ #: includes/customizer/settings/blog-single/popup.php:13, includes/customizer/settings/blog-single/popup.php:90, includes/customizer/settings/portfolio-single/popup.php:12, includes/customizer/settings/portfolio-single/popup.php:65
1669
+ msgid "Meta"
1670
  msgstr ""
1671
 
1672
+ #: includes/customizer/settings/blog-single/popup.php:14, includes/customizer/settings/blog-single/popup.php:91, includes/customizer/settings/portfolio-single/popup.php:14, includes/customizer/settings/portfolio-single/popup.php:67, includes/customizer/settings/post-types/popup.php:21, includes/customizer/settings/post-types/popup.php:110
1673
+ msgid "Post Content"
1674
  msgstr ""
1675
 
1676
+ #: includes/customizer/settings/blog-single/popup.php:15, includes/customizer/settings/blog-single/popup.php:92, includes/customizer/settings/blog-single/settings.php:130, includes/customizer/settings/product-page/settings.php:98, includes/post-type/class.php:136
1677
+ msgid "Tags"
1678
  msgstr ""
1679
 
1680
+ #: includes/customizer/settings/blog-single/popup.php:16, includes/customizer/settings/blog-single/popup.php:94, includes/customizer/settings/blog-single/settings.php:131, includes/customizer/settings/page-single/popup.php:13, includes/customizer/settings/page-single/popup.php:63, includes/customizer/settings/page-single/settings.php:72, includes/customizer/settings/portfolio-single/popup.php:16, includes/customizer/settings/portfolio-single/popup.php:73, includes/customizer/settings/portfolio-single/settings.php:79, includes/customizer/settings/post-types/popup.php:161, includes/customizer/settings/product-page/settings.php:102
1681
+ msgid "Social Share"
1682
  msgstr ""
1683
 
1684
+ #: includes/customizer/settings/blog-single/popup.php:17, includes/customizer/settings/blog-single/popup.php:98, includes/customizer/settings/blog-single/settings.php:132, includes/customizer/settings/portfolio-single/popup.php:15, includes/customizer/settings/portfolio-single/popup.php:69, includes/customizer/settings/portfolio-single/settings.php:80, includes/customizer/settings/post-types/popup.php:162
1685
+ msgid "Navigation"
1686
  msgstr ""
1687
 
1688
+ #: includes/customizer/settings/blog-single/popup.php:18, includes/customizer/settings/blog-single/popup.php:102, includes/customizer/settings/blog-single/settings.php:133, includes/customizer/settings/post-types/popup.php:163
1689
+ msgid "Author Box"
1690
  msgstr ""
1691
 
1692
+ #: includes/customizer/settings/blog-single/popup.php:19, includes/customizer/settings/blog-single/popup.php:106, includes/customizer/settings/blog-single/settings.php:134
1693
+ msgid "Recommended Posts"
1694
  msgstr ""
1695
 
1696
+ #: includes/customizer/settings/blog-single/popup.php:31
1697
+ msgid "Blog Single"
1698
  msgstr ""
1699
 
1700
+ #: includes/customizer/settings/blog-single/popup.php:35, includes/customizer/settings/cart-quick-view/popup.php:17, includes/customizer/settings/checkout-cart/popup.php:17, includes/customizer/settings/comment/popup.php:28, includes/customizer/settings/footer/popup.php:30, includes/customizer/settings/header/popup.php:27, includes/customizer/settings/page-single/popup.php:23, includes/customizer/settings/portfolio-single/popup.php:27, includes/customizer/settings/post-types/popup.php:42, includes/customizer/settings/product-archive/popup.php:17, includes/customizer/settings/product-list/popup.php:18, includes/customizer/settings/product-page/popup.php:18, includes/customizer/settings/sidebar/popup.php:26, includes/customizer/settings/site-settings/popup.php:24, includes/customizer/settings/title-bar/popup.php:24
1701
+ msgid "Styles"
1702
  msgstr ""
1703
 
1704
+ #: includes/customizer/settings/blog-single/popup.php:41, includes/customizer/settings/comment/popup.php:34, includes/customizer/settings/page-single/popup.php:29, includes/customizer/settings/portfolio-single/popup.php:33
1705
+ msgid "Display settings for Blog, Shop single pages"
1706
  msgstr ""
1707
 
1708
+ #: includes/customizer/settings/blog-single/settings.php:17, includes/customizer/settings/blog-single/settings.php:35, includes/customizer/settings/footer/settings.php:29, includes/customizer/settings/header/settings.php:29, includes/customizer/settings/page-single/settings.php:17, includes/customizer/settings/portfolio-single/settings.php:17, includes/customizer/settings/post-types/popup.php:66, includes/customizer/settings/title-bar/settings.php:17, includes/customizer/settings/title-bar/settings.php:150
1709
+ msgid "Type"
1710
  msgstr ""
1711
 
1712
+ #: includes/customizer/settings/blog-single/settings.php:24, includes/customizer/settings/blog-single/settings.php:42, includes/customizer/settings/footer/settings.php:37, includes/customizer/settings/header/settings.php:36, includes/customizer/settings/page-single/settings.php:24, includes/customizer/settings/portfolio-single/settings.php:24, includes/customizer/settings/post-types/popup.php:73, includes/customizer/settings/title-bar/settings.php:25, includes/customizer/settings/title-bar/settings.php:158
1713
+ msgid "Custom"
1714
  msgstr ""
1715
 
1716
+ #: includes/customizer/settings/blog-single/settings.php:96, includes/customizer/settings/checkout-cart/settings.php:17, includes/customizer/settings/footer/settings.php:233, includes/customizer/settings/header/settings.php:110, includes/customizer/settings/page-single/settings.php:49, includes/customizer/settings/portfolio-single/settings.php:49, includes/customizer/settings/post-types/popup.php:138, includes/customizer/settings/product-list/settings.php:53, includes/customizer/settings/product-page/settings.php:73
1717
+ msgid "Display Elements"
1718
  msgstr ""
1719
 
1720
+ #: includes/customizer/settings/blog-single/settings.php:127, includes/customizer/settings/comment/popup.php:16, includes/customizer/settings/comment/popup.php:70, includes/customizer/settings/comment/settings.php:34, includes/customizer/settings/portfolio-single/settings.php:76, includes/customizer/settings/post-types/popup.php:159, includes/widgets/widget-posts.php:124
1721
+ msgid "Date"
1722
  msgstr ""
1723
 
1724
+ #: includes/customizer/settings/blog-single/settings.php:128, includes/customizer/settings/portfolio-single/settings.php:77, includes/customizer/settings/post-types/popup.php:160
1725
+ msgid "Author"
1726
  msgstr ""
1727
 
1728
+ #: includes/customizer/settings/blog-single/settings.php:129, includes/customizer/settings/portfolio-single/settings.php:78, includes/customizer/settings/product-page/settings.php:97, includes/post-type/class.php:88
1729
+ msgid "Categories"
1730
  msgstr ""
1731
 
1732
+ #: includes/customizer/settings/blog-single/settings.php:135, includes/customizer/settings/page-single/settings.php:73, includes/customizer/settings/portfolio-single/settings.php:82, includes/customizer/settings/post-types/popup.php:164
1733
+ msgid "Comments"
1734
  msgstr ""
1735
 
1736
+ #: includes/customizer/settings/blog-single/tags.php:126, includes/customizer/settings/cart-quick-view/styles.php:73, includes/customizer/settings/comment/action-link.php:53, includes/customizer/settings/footer/subfooter-menu.php:76, includes/customizer/settings/footer/widgets-link.php:53, includes/customizer/settings/header/menu.php:95, includes/customizer/settings/header/submenu.php:56, includes/customizer/settings/sidebar/widgets-link.php:53, includes/customizer/settings/typography/links.php:54
1737
+ msgid "Hover"
1738
  msgstr ""
1739
 
1740
+ #: includes/customizer/settings/cart-quick-view/popup.php:13, includes/customizer/settings/cart-quick-view/settings.php:17
1741
+ msgid "Cart Quick View"
1742
  msgstr ""
1743
 
1744
+ #: includes/customizer/settings/cart-quick-view/popup.php:21, includes/customizer/settings/checkout-cart/popup.php:23
1745
+ msgid "Checkout & Cart Pages in Shop Customizer"
1746
  msgstr ""
1747
 
1748
+ #: includes/customizer/settings/checkout-cart/popup.php:13
1749
+ msgid "Checkout & Cart"
1750
  msgstr ""
1751
 
1752
+ #: includes/customizer/settings/checkout-cart/settings.php:23
1753
+ msgid "Steps"
1754
  msgstr ""
1755
 
1756
+ #: includes/customizer/settings/comment/button.php:102
1757
+ msgid "hover"
1758
  msgstr ""
1759
 
1760
+ #: includes/customizer/settings/comment/field.php:63
1761
+ msgid "Focus"
1762
  msgstr ""
1763
 
1764
+ #: includes/customizer/settings/comment/popup.php:12, includes/customizer/settings/comment/popup.php:66
1765
+ msgid "Field"
1766
  msgstr ""
1767
 
1768
+ #: includes/customizer/settings/comment/popup.php:13, includes/customizer/settings/comment/popup.php:67
1769
+ msgid "Button"
1770
  msgstr ""
1771
 
1772
+ #: includes/customizer/settings/comment/popup.php:14
1773
+ msgid "Avater"
1774
  msgstr ""
1775
 
1776
+ #: includes/customizer/settings/comment/popup.php:17, includes/customizer/settings/comment/popup.php:71
1777
+ msgid "Comment Text"
1778
  msgstr ""
1779
 
1780
+ #: includes/customizer/settings/comment/popup.php:18
1781
+ msgid "Action Link"
1782
  msgstr ""
1783
 
1784
+ #: includes/customizer/settings/comment/popup.php:24
1785
+ msgid "Comment"
1786
  msgstr ""
1787
 
1788
+ #: includes/customizer/settings/comment/popup.php:72
1789
+ msgid "Action Links"
1790
  msgstr ""
1791
 
1792
+ #: includes/customizer/settings/comment/settings.php:17
1793
+ msgid "Display Contents"
1794
  msgstr ""
1795
 
1796
+ #: includes/customizer/settings/comment/settings.php:33
1797
+ msgid "Role"
1798
  msgstr ""
1799
 
1800
+ #: includes/customizer/settings/footer/popup.php:11, includes/customizer/settings/footer/popup.php:78, includes/customizer/settings/sidebar/popup.php:11
1801
+ msgid "Widgets Title"
1802
  msgstr ""
1803
 
1804
+ #: includes/customizer/settings/footer/popup.php:12, includes/customizer/settings/footer/popup.php:79, includes/customizer/settings/sidebar/popup.php:12
1805
+ msgid "Widgets Text"
1806
  msgstr ""
1807
 
1808
+ #: includes/customizer/settings/footer/popup.php:13, includes/customizer/settings/footer/popup.php:80, includes/customizer/settings/sidebar/popup.php:13
1809
+ msgid "Widgets Link"
1810
  msgstr ""
1811
 
1812
+ #: includes/customizer/settings/footer/popup.php:14, includes/customizer/settings/footer/popup.php:81, includes/customizer/settings/sidebar/popup.php:14
1813
+ msgid "Widgets Thumbnail"
1814
  msgstr ""
1815
 
1816
+ #: includes/customizer/settings/footer/popup.php:15, includes/customizer/settings/footer/popup.php:82, includes/customizer/settings/sidebar/popup.php:15
1817
+ msgid "Widgets Container"
1818
  msgstr ""
1819
 
1820
+ #: includes/customizer/settings/footer/popup.php:16, includes/customizer/settings/footer/popup.php:83
1821
+ msgid "Widgets Divider"
1822
  msgstr ""
1823
 
1824
+ #: includes/customizer/settings/footer/popup.php:17, includes/customizer/settings/footer/popup.php:84
1825
+ msgid "Widget Area Container"
1826
  msgstr ""
1827
 
1828
+ #: includes/customizer/settings/footer/popup.php:18, includes/customizer/settings/footer/popup.php:109
1829
+ msgid "Sub Footer Copyright"
1830
  msgstr ""
1831
 
1832
+ #: includes/customizer/settings/footer/popup.php:19, includes/customizer/settings/footer/popup.php:110
1833
+ msgid "Sub Footer Menu"
1834
  msgstr ""
1835
 
1836
+ #: includes/customizer/settings/footer/popup.php:20, includes/customizer/settings/footer/popup.php:133
1837
+ msgid "Sub Footer Container"
1838
  msgstr ""
1839
 
1840
+ #: includes/customizer/settings/footer/popup.php:25
1841
+ msgid "Footer"
1842
  msgstr ""
1843
 
1844
+ #: includes/customizer/settings/footer/popup.php:35
1845
+ msgid "Assigning the Footer Globally"
1846
  msgstr ""
1847
 
1848
+ #: includes/customizer/settings/footer/popup.php:64, includes/customizer/settings/footer/settings.php:17, includes/customizer/settings/header/popup.php:61, includes/customizer/settings/header/settings.php:17, includes/customizer/settings/logo/settings.php:17, includes/customizer/settings/typography/popup.php:62
1849
+ msgid "Learn how to use the following settings properly."
1850
  msgstr ""
1851
 
1852
+ #: includes/customizer/settings/footer/settings.php:48, includes/customizer/settings/header/settings.php:137
1853
+ msgid "Behavior"
1854
  msgstr ""
1855
 
1856
+ #: includes/customizer/settings/footer/settings.php:52, includes/customizer/settings/header/settings.php:142
1857
+ msgid "Static"
1858
  msgstr ""
1859
 
1860
+ #: includes/customizer/settings/footer/settings.php:69
1861
+ msgid "Widget Area"
 
1862
  msgstr ""
1863
 
1864
+ #: includes/customizer/settings/footer/settings.php:110, includes/customizer/settings/sidebar/popup.php:21, includes/customizer/settings/sidebar/settings.php:17, includes/customizer/settings/sidebar/settings.php:84
1865
+ msgid "Layout"
1866
  msgstr ""
1867
 
1868
+ #: includes/customizer/settings/footer/settings.php:140, includes/customizer/settings/footer/settings.php:248, includes/customizer/settings/header/settings.php:222
1869
+ msgid "Enable on Tablet"
1870
  msgstr ""
1871
 
1872
+ #: includes/customizer/settings/footer/settings.php:152, includes/customizer/settings/footer/settings.php:260, includes/customizer/settings/header/settings.php:245
1873
+ msgid "Enable on Mobile"
1874
  msgstr ""
1875
 
1876
+ #: includes/customizer/settings/footer/settings.php:192
1877
+ msgid "Sub Footer"
1878
  msgstr ""
1879
 
1880
+ #: includes/customizer/settings/footer/settings.php:236
1881
+ msgid "Copyright Text"
1882
  msgstr ""
1883
 
1884
+ #: includes/customizer/settings/footer/settings.php:237, includes/customizer/settings/header/popup.php:12, includes/customizer/settings/header/popup.php:76, includes/customizer/settings/header/settings.php:118
1885
+ msgid "Menu"
1886
  msgstr ""
1887
 
1888
+ #: includes/customizer/settings/footer/subfooter-container.php:36, includes/customizer/settings/footer/widget-area-container.php:55, includes/customizer/settings/footer/widgets-container.php:50, includes/customizer/settings/sidebar/widgets-container.php:51, includes/customizer/settings/site-settings/container.php:48
1889
+ msgid "Border"
1890
  msgstr ""
1891
 
1892
+ #: includes/customizer/settings/footer/widget-area-container.php:32
1893
+ msgid "Column Gap"
1894
  msgstr ""
1895
 
1896
+ #: includes/customizer/settings/footer/widgets-divider.php:41, includes/customizer/settings/header/submenu.php:15, includes/customizer/settings/sidebar/divider.php:84
1897
+ msgid "Items"
 
1898
  msgstr ""
1899
 
1900
+ #: includes/customizer/settings/header/logo.php:18, includes/customizer/settings/header/popup.php:11, includes/customizer/settings/header/popup.php:75, includes/customizer/settings/header/settings.php:117, includes/customizer/settings/logo/popup.php:17, includes/customizer/settings/logo/popup.php:23
1901
+ msgid "Logo"
1902
  msgstr ""
1903
 
1904
+ #: includes/customizer/settings/header/logo.php:21
1905
+ msgid "Primary"
1906
  msgstr ""
1907
 
1908
+ #: includes/customizer/settings/header/logo.php:22
1909
+ msgid "Secondary"
1910
  msgstr ""
1911
 
1912
+ #: includes/customizer/settings/header/logo.php:32, includes/customizer/settings/header/sticky-logo.php:18
1913
+ msgid "Max Width"
1914
  msgstr ""
1915
 
1916
+ #: includes/customizer/settings/header/menu.php:139, includes/customizer/settings/header/submenu.php:100
1917
+ msgid "Active"
1918
  msgstr ""
1919
 
1920
+ #: includes/customizer/settings/header/popup.php:13, includes/customizer/settings/header/popup.php:77
1921
+ msgid "Submenu"
1922
  msgstr ""
1923
 
1924
+ #: includes/customizer/settings/header/popup.php:14, includes/customizer/settings/header/popup.php:78, includes/customizer/settings/header/settings.php:119, includes/customizer/settings/search/popup.php:13, includes/customizer/settings/sidebar/settings.php:70, includes/customizer/settings/title-bar/settings.php:136
1925
+ msgid "Search"
1926
  msgstr ""
1927
 
1928
+ #: includes/customizer/settings/header/popup.php:15, includes/customizer/settings/header/popup.php:79, includes/customizer/settings/header/submenu.php:173, includes/customizer/settings/site-settings/popup.php:14, includes/customizer/settings/site-settings/popup.php:95, includes/customizer/settings/title-bar/popup.php:14
1929
+ msgid "Container"
1930
  msgstr ""
1931
 
1932
+ #: includes/customizer/settings/header/popup.php:16, includes/customizer/settings/header/popup.php:98
1933
+ msgid "Sticky Container"
1934
  msgstr ""
1935
 
1936
+ #: includes/customizer/settings/header/popup.php:17, includes/customizer/settings/header/popup.php:97, includes/customizer/settings/logo/settings.php:45
1937
+ msgid "Sticky Logo"
1938
  msgstr ""
1939
 
1940
+ #: includes/customizer/settings/header/popup.php:22
1941
+ msgid "Header"
1942
  msgstr ""
1943
 
1944
+ #: includes/customizer/settings/header/popup.php:32
1945
+ msgid "Assigning the Header Globally"
1946
  msgstr ""
1947
 
1948
+ #: includes/customizer/settings/header/settings.php:77
1949
+ msgid "Overlap Content"
1950
  msgstr ""
1951
 
1952
+ #: includes/customizer/settings/header/settings.php:120
1953
+ msgid "Cart"
1954
  msgstr ""
1955
 
1956
+ #: includes/customizer/settings/header/settings.php:148
1957
+ msgid "Sticky"
1958
  msgstr ""
1959
 
1960
+ #: includes/customizer/settings/header/settings.php:171
1961
+ msgid "Top"
1962
  msgstr ""
1963
 
1964
+ #: includes/customizer/settings/header/settings.php:174
1965
+ msgid "Bottom"
1966
  msgstr ""
1967
 
1968
+ #: includes/customizer/settings/header/settings.php:197
1969
+ msgid "Offset"
1970
  msgstr ""
1971
 
1972
+ #: includes/customizer/settings/logo/popup.php:16
1973
+ msgid "Site Logo"
1974
  msgstr ""
1975
 
1976
+ #: includes/customizer/settings/logo/popup.php:31
1977
+ msgid "Adding Multiple versions of logo to website"
1978
  msgstr ""
1979
 
1980
+ #: includes/customizer/settings/logo/settings.php:27
1981
+ msgid "Primary Logo"
1982
  msgstr ""
1983
 
1984
+ #: includes/customizer/settings/logo/settings.php:36
1985
+ msgid "Secondary Logo"
1986
  msgstr ""
1987
 
1988
+ #: includes/customizer/settings/logo/settings.php:54
1989
+ msgid "Retina Primary Logo"
1990
  msgstr ""
1991
 
1992
+ #: includes/customizer/settings/logo/settings.php:63
1993
+ msgid "Retina Secondary Logo"
1994
  msgstr ""
1995
 
1996
+ #: includes/customizer/settings/logo/settings.php:72
1997
+ msgid "Retina Sticky Logo"
1998
  msgstr ""
1999
 
2000
+ #: includes/customizer/settings/logo/settings.php:81
2001
+ msgid "Mobile Logo"
2002
  msgstr ""
2003
 
2004
+ #: includes/customizer/settings/logo/settings.php:91
2005
+ msgid "Retina Mobile Logo"
2006
  msgstr ""
2007
 
2008
+ #: includes/customizer/settings/maintenance/popup.php:13, includes/customizer/settings/maintenance/settings.php:26
2009
+ msgid "Maintenance"
2010
  msgstr ""
2011
 
2012
+ #: includes/customizer/settings/maintenance/popup.php:21
2013
+ msgid "Enabling Maintenance Mode in Jupiter X"
2014
  msgstr ""
2015
 
2016
+ #: includes/customizer/settings/maintenance/settings.php:17
2017
+ msgid "Maintenance page will be displayed to guests only."
2018
  msgstr ""
2019
 
2020
+ #: includes/customizer/settings/page-single/popup.php:19
2021
+ msgid "Page Single"
2022
  msgstr ""
2023
 
2024
+ #: includes/customizer/settings/portfolio-archive/popup.php:13
2025
+ msgid "Portfolio Archive"
2026
  msgstr ""
2027
 
2028
+ #: includes/customizer/settings/portfolio-single/popup.php:17, includes/customizer/settings/portfolio-single/popup.php:77, includes/customizer/settings/portfolio-single/settings.php:81
2029
+ msgid "Related Works"
2030
  msgstr ""
2031
 
2032
+ #: includes/customizer/settings/portfolio-single/popup.php:23
2033
+ msgid "Portfolio Single"
2034
  msgstr ""
2035
 
2036
+ #: includes/customizer/settings/post-types/popup.php:38
2037
+ msgid "Single"
2038
  msgstr ""
2039
 
2040
+ #: includes/customizer/settings/post-types/popup.php:180, includes/customizer/settings/sidebar/settings.php:69, includes/customizer/settings/title-bar/settings.php:135
2041
+ msgid "Archive"
2042
  msgstr ""
2043
 
2044
+ #: includes/customizer/settings/product-archive/popup.php:13
2045
+ msgid "Product Archive"
2046
  msgstr ""
2047
 
2048
+ #: includes/customizer/settings/product-archive/popup.php:22
2049
+ msgid "Product Archive in Shop Customizer"
2050
  msgstr ""
2051
 
2052
+ #: includes/customizer/settings/product-list/popup.php:13
2053
+ msgid "Product List"
2054
  msgstr ""
2055
 
2056
+ #: includes/customizer/settings/product-list/popup.php:25
2057
+ msgid "Product List in Shop Customizer"
2058
  msgstr ""
2059
 
2060
+ #: includes/customizer/settings/product-list/settings.php:17, includes/customizer/settings/title-bar/settings.php:53, includes/customizer/settings/title-bar/settings.php:171
2061
+ msgid "Title HTML Tag"
2062
  msgstr ""
2063
 
2064
+ #: includes/customizer/settings/product-list/settings.php:38
2065
+ msgid "Pagination"
2066
  msgstr ""
2067
 
2068
+ #: includes/customizer/settings/product-list/settings.php:42
2069
+ msgid "Page Based"
2070
  msgstr ""
2071
 
2072
+ #: includes/customizer/settings/product-list/settings.php:43, includes/woocommerce/woocommerce-load-more.php:37, includes/woocommerce/woocommerce-load-more.php:61
2073
+ msgid "Load More"
2074
  msgstr ""
2075
 
2076
+ #: includes/customizer/settings/product-list/settings.php:73
2077
+ msgid "Image"
2078
  msgstr ""
2079
 
2080
+ #: includes/customizer/settings/product-list/settings.php:74, includes/customizer/settings/product-page/settings.php:108
2081
+ msgid "Rating"
2082
  msgstr ""
2083
 
2084
+ #: includes/customizer/settings/product-list/settings.php:76, includes/templates/class.php:135, includes/widgets/widget-posts.php:58, includes/widgets/widget-posts.php:69
2085
+ msgid "Category"
2086
  msgstr ""
2087
 
2088
+ #: includes/customizer/settings/product-list/settings.php:77
2089
+ msgid "Price"
2090
  msgstr ""
2091
 
2092
+ #: includes/customizer/settings/product-list/settings.php:78
2093
+ msgid "Add to Cart Button"
2094
  msgstr ""
2095
 
2096
+ #: includes/customizer/settings/product-list/settings.php:79, includes/customizer/settings/product-page/settings.php:106
2097
+ msgid "Sale Badge"
2098
  msgstr ""
2099
 
2100
+ #: includes/customizer/settings/product-list/settings.php:80, includes/customizer/settings/product-page/settings.php:107
2101
+ msgid "Out of Stock Badge"
2102
  msgstr ""
2103
 
2104
+ #: includes/customizer/settings/product-list/settings.php:96
2105
+ msgid "Grid Settings"
2106
  msgstr ""
2107
 
2108
+ #: includes/customizer/settings/product-list/settings.php:228
2109
+ msgid "Quick View"
2110
  msgstr ""
2111
 
2112
+ #: includes/customizer/settings/product-list/settings.php:238
2113
+ msgid "Quick View Opener"
2114
  msgstr ""
2115
 
2116
+ #: includes/customizer/settings/product-list/settings.php:260
2117
+ msgid "Quick View Content"
2118
  msgstr ""
2119
 
2120
+ #: includes/customizer/settings/product-list/settings.php:268
2121
+ msgid "Description"
2122
  msgstr ""
2123
 
2124
+ #: includes/customizer/settings/product-list/settings.php:269
2125
+ msgid "Meta Information"
2126
  msgstr ""
2127
 
2128
+ #: includes/customizer/settings/product-list/settings.php:270
2129
+ msgid "Social Icons"
2130
  msgstr ""
2131
 
2132
+ #: includes/customizer/settings/product-list/settings.php:271
2133
+ msgid "Reviews"
2134
  msgstr ""
2135
 
2136
+ #: includes/customizer/settings/product-page/popup.php:13
2137
+ msgid "Product Page"
2138
  msgstr ""
2139
 
2140
+ #: includes/customizer/settings/product-page/popup.php:25
2141
+ msgid "Product Page in Shop Customizer"
2142
  msgstr ""
2143
 
2144
+ #: includes/customizer/settings/product-page/settings.php:99
2145
+ msgid "SKU"
2146
  msgstr ""
2147
 
2148
+ #: includes/customizer/settings/product-page/settings.php:100
2149
+ msgid "Short Description"
2150
  msgstr ""
2151
 
2152
+ #: includes/customizer/settings/product-page/settings.php:101
2153
+ msgid "Quantity"
2154
  msgstr ""
2155
 
2156
+ #: includes/customizer/settings/product-page/settings.php:103
2157
+ msgid "Description Tab"
2158
  msgstr ""
2159
 
2160
+ #: includes/customizer/settings/product-page/settings.php:104
2161
+ msgid "Review Tab"
2162
  msgstr ""
2163
 
2164
+ #: includes/customizer/settings/product-page/settings.php:105
2165
+ msgid "Additional Info Tab"
2166
  msgstr ""
2167
 
2168
+ #: includes/customizer/settings/product-page/settings.php:117
2169
+ msgid "Image Lightbox"
2170
  msgstr ""
2171
 
2172
+ #: includes/customizer/settings/product-page/settings.php:127
2173
+ msgid "Image Zoom"
2174
  msgstr ""
2175
 
2176
+ #: includes/customizer/settings/product-page/settings.php:154
2177
+ msgid "Related Products"
2178
  msgstr ""
2179
 
2180
+ #: includes/customizer/settings/product-page/settings.php:173
2181
+ msgid "Upsells Products"
2182
  msgstr ""
2183
 
2184
+ #: includes/customizer/settings/product-page/settings.php:183
2185
+ msgid "Sticky Product Info"
2186
  msgstr ""
2187
 
2188
+ #: includes/customizer/settings/search/popup.php:21
2189
+ msgid "Displaying Search Results from specific Post Types"
2190
  msgstr ""
2191
 
2192
+ #: includes/customizer/settings/search/settings.php:17
2193
+ msgid "Display section"
2194
  msgstr ""
2195
 
2196
+ #: includes/customizer/settings/search/settings.php:21, includes/widgets/widget-posts.php:40
2197
+ msgid "Post"
2198
  msgstr ""
2199
 
2200
+ #: includes/customizer/settings/search/settings.php:22, includes/customizer/settings/settings.php:19, includes/customizer/settings/sidebar/settings.php:61, includes/customizer/settings/title-bar/settings.php:127, includes/post-type/class.php:39, includes/post-type/class.php:51, includes/widgets/widget-posts.php:41
2201
+ msgid "Portfolio"
 
 
 
 
2202
  msgstr ""
2203
 
2204
+ #: includes/customizer/settings/search/settings.php:23, includes/customizer/settings/sidebar/settings.php:60, includes/customizer/settings/title-bar/settings.php:126
2205
+ msgid "Page"
2206
  msgstr ""
2207
 
2208
+ #: includes/customizer/settings/search/settings.php:24
2209
+ msgid "Product"
2210
  msgstr ""
2211
 
2212
+ #: includes/customizer/settings/search/settings.php:51
2213
+ msgid "Posts per page"
2214
  msgstr ""
2215
 
2216
+ #: includes/customizer/settings/settings.php:13, includes/customizer/settings/sidebar/settings.php:59, includes/customizer/settings/title-bar/settings.php:125, includes/dashboard/widgets/class-overview.php:243
2217
+ msgid "Blog"
2218
  msgstr ""
2219
 
2220
+ #: includes/customizer/settings/settings.php:26, includes/customizer/settings/sidebar/settings.php:71, includes/customizer/settings/title-bar/settings.php:137
2221
+ msgid "Shop"
2222
  msgstr ""
2223
 
2224
+ #: includes/customizer/settings/settings.php:33
2225
+ msgid "Pages"
2226
  msgstr ""
2227
 
2228
+ #: includes/customizer/settings/settings.php:40
2229
+ msgid "Post Types"
2230
  msgstr ""
2231
 
2232
+ #: includes/customizer/settings/settings.php:47, includes/customizer/settings/title-bar/settings.php:81
2233
+ msgid "Elements"
2234
  msgstr ""
2235
 
2236
+ #: includes/customizer/settings/sidebar/divider.php:18
2237
+ msgid "Sidebar"
2238
  msgstr ""
2239
 
2240
+ #: includes/customizer/settings/sidebar/popup.php:16
2241
+ msgid "Divider"
2242
  msgstr ""
2243
 
2244
+ #: includes/customizer/settings/sidebar/popup.php:31
2245
+ msgid "Adding a Sidebar globally"
2246
  msgstr ""
2247
 
2248
+ #: includes/customizer/settings/sidebar/settings.php:30, includes/customizer/settings/sidebar/settings.php:93
2249
+ msgid "Primary Sidebar"
2250
  msgstr ""
2251
 
2252
+ #: includes/customizer/settings/sidebar/settings.php:41, includes/customizer/settings/sidebar/settings.php:100
2253
+ msgid "Secondary Sidebar"
2254
  msgstr ""
2255
 
2256
+ #: includes/customizer/settings/sidebar/settings.php:115, includes/customizer/settings/title-bar/settings.php:211
2257
+ msgid "Conditions"
2258
  msgstr ""
2259
 
2260
+ #: includes/customizer/settings/site-settings/container.php:17
2261
+ msgid "Box Shadow"
2262
  msgstr ""
2263
 
2264
+ #: includes/customizer/settings/site-settings/popup.php:11, includes/customizer/settings/site-settings/popup.php:60, includes/customizer/settings/typography/popup.php:11
2265
+ msgid "Body"
2266
  msgstr ""
2267
 
2268
+ #: includes/customizer/settings/site-settings/popup.php:12, includes/customizer/settings/site-settings/popup.php:61
2269
+ msgid "Main"
2270
  msgstr ""
2271
 
2272
+ #: includes/customizer/settings/site-settings/popup.php:13, includes/customizer/settings/site-settings/popup.php:72, includes/customizer/settings/site-settings/settings.php:105
2273
+ msgid "Body Border"
2274
  msgstr ""
2275
 
2276
+ #: includes/customizer/settings/site-settings/popup.php:19
2277
+ msgid "Site Settings"
2278
  msgstr ""
2279
 
2280
+ #: includes/customizer/settings/site-settings/popup.php:29
2281
+ msgid "Setting container width in Jupiter X"
2282
  msgstr ""
2283
 
2284
+ #: includes/customizer/settings/site-settings/settings.php:18
2285
+ msgid "Site Width"
2286
  msgstr ""
2287
 
2288
+ #: includes/customizer/settings/site-settings/settings.php:22
2289
+ msgid "Boxed"
2290
  msgstr ""
2291
 
2292
+ #: includes/customizer/settings/site-settings/settings.php:32, includes/customizer/settings/site-settings/settings.php:69
2293
+ msgid "Container Width"
2294
  msgstr ""
2295
 
2296
+ #: includes/customizer/settings/site-settings/settings.php:122
2297
+ msgid "Header & Footer On Top of Border"
2298
  msgstr ""
2299
 
2300
+ #: includes/customizer/settings/site-settings/settings.php:145
2301
+ msgid "Scroll Top Button"
2302
  msgstr ""
2303
 
2304
+ #: includes/customizer/settings/title-bar/breadcrumb.php:53
2305
+ msgid "Breadcrumb divider"
2306
  msgstr ""
2307
 
2308
+ #: includes/customizer/settings/title-bar/breadcrumb.php:72
2309
+ msgid "Divider color"
2310
  msgstr ""
2311
 
2312
+ #: includes/customizer/settings/title-bar/breadcrumb.php:96
2313
+ msgid "Links color"
2314
  msgstr ""
2315
 
2316
+ #: includes/customizer/settings/title-bar/popup.php:13, includes/customizer/settings/title-bar/settings.php:88, includes/customizer/settings/title-bar/settings.php:195
2317
+ msgid "Breadcrumb"
2318
  msgstr ""
2319
 
2320
+ #: includes/customizer/settings/title-bar/popup.php:19
2321
+ msgid "Title Bar"
2322
  msgstr ""
2323
 
2324
+ #: includes/customizer/settings/title-bar/popup.php:29
2325
+ msgid "Including/Excluding pages from displaying the Title Bar"
2326
  msgstr ""
2327
 
2328
+ #: includes/customizer/settings/title-bar/settings.php:188
2329
+ msgid "Content"
2330
  msgstr ""
2331
 
2332
+ #: includes/customizer/settings/typography/popup.php:13
2333
+ msgid "Heading 1"
2334
  msgstr ""
2335
 
2336
+ #: includes/customizer/settings/typography/popup.php:14
2337
+ msgid "Heading 2"
2338
  msgstr ""
2339
 
2340
+ #: includes/customizer/settings/typography/popup.php:15
2341
+ msgid "Heading 3"
2342
  msgstr ""
2343
 
2344
+ #: includes/customizer/settings/typography/popup.php:16
2345
+ msgid "Heading 4"
2346
  msgstr ""
2347
 
2348
+ #: includes/customizer/settings/typography/popup.php:17
2349
+ msgid "Heading 5"
2350
  msgstr ""
2351
 
2352
+ #: includes/customizer/settings/typography/popup.php:18
2353
+ msgid "Heading 6"
2354
  msgstr ""
2355
 
2356
+ #: includes/customizer/settings/typography/popup.php:23
2357
+ msgid "Fonts & Typography"
2358
  msgstr ""
2359
 
2360
+ #: includes/customizer/settings/typography/popup.php:27
2361
+ msgid "Fonts"
2362
  msgstr ""
2363
 
2364
+ #: includes/customizer/settings/typography/popup.php:28
2365
+ msgid "Typography"
2366
  msgstr ""
2367
 
2368
+ #: includes/customizer/settings/typography/popup.php:33
2369
+ msgid "Changing typography for Body, Headings and Links"
2370
  msgstr ""
2371
 
2372
+ #: includes/customizer/settings/typography/settings.php:17
2373
+ msgid "Please click \"Publish\" and then refresh the page to make selected fonts available in all the typography settings."
2374
  msgstr ""
2375
 
2376
+ #: includes/dashboard/class.php:68
2377
+ msgid "The get_sites function is not defined."
2378
  msgstr ""
2379
 
2380
+ #: includes/dashboard/class.php:95
2381
+ msgid "Site param is missing."
2382
  msgstr ""
2383
 
2384
+ #: includes/dashboard/widgets/class-overview.php:41
2385
+ msgid "Jupiter X Overview"
2386
  msgstr ""
2387
 
2388
+ #: includes/dashboard/widgets/class-overview.php:124
2389
+ msgid "Jupiter X"
2390
  msgstr ""
2391
 
2392
+ #: includes/dashboard/widgets/class-overview.php:128, jupiterx-core.php:253, jupiterx-core.php:253
2393
+ msgid "Control Panel"
2394
  msgstr ""
2395
 
2396
+ #: includes/dashboard/widgets/class-overview.php:151
2397
+ msgid "Recently Edited"
2398
  msgstr ""
2399
 
2400
+ #: includes/dashboard/widgets/class-overview.php:157
2401
+ msgctxt "Dashboard Overview Widget Recently Date"
2402
+ msgid "M jS"
2403
  msgstr ""
2404
 
2405
+ #: includes/dashboard/widgets/class-overview.php:176
2406
+ msgid "Flush network cache"
2407
  msgstr ""
2408
 
2409
+ #: includes/dashboard/widgets/class-overview.php:177
2410
+ msgid "Regenerate Jupiter X and Elementor's cache in all network sites."
2411
  msgstr ""
2412
 
2413
+ #: includes/dashboard/widgets/class-overview.php:183
2414
+ msgid "Tools"
2415
  msgstr ""
2416
 
2417
+ #: includes/dashboard/widgets/class-overview.php:191
2418
+ msgid "Run"
2419
  msgstr ""
2420
 
2421
+ #: includes/dashboard/widgets/class-overview.php:209
2422
+ msgid "News & Updates"
2423
  msgstr ""
2424
 
2425
+ #: includes/dashboard/widgets/class-overview.php:248, jupiterx-core.php:261, jupiterx-core.php:261
2426
+ msgid "Help"
2427
  msgstr ""
2428
 
2429
+ #: includes/dashboard/widgets/class-overview.php:256, jupiterx-core.php:266, jupiterx-core.php:266
2430
+ msgid "Upgrade"
2431
  msgstr ""
2432
 
2433
+ #: includes/dashboard/widgets/class-overview.php:269
2434
+ msgid "(opens in a new window)"
2435
  msgstr ""
2436
 
2437
+ #: includes/post-type/class.php:36
2438
+ msgctxt "Portfolio General Name"
2439
+ msgid "Portfolios"
2440
  msgstr ""
2441
 
2442
+ #: includes/post-type/class.php:37
2443
+ msgctxt "Portfolio Singular Name"
2444
+ msgid "Portfolio"
2445
  msgstr ""
2446
 
2447
+ #: includes/post-type/class.php:38
2448
+ msgid "Portfolios"
2449
  msgstr ""
2450
 
2451
+ #: includes/post-type/class.php:40
2452
+ msgid "All Portfolios"
2453
  msgstr ""
2454
 
2455
+ #: includes/post-type/class.php:52
2456
+ msgid "Portfolio Description"
2457
  msgstr ""
2458
 
2459
+ #: includes/post-type/class.php:86
2460
+ msgctxt "Category General Name"
2461
+ msgid "Portfolio Categories"
2462
  msgstr ""
2463
 
2464
+ #: includes/post-type/class.php:87
2465
+ msgctxt "Category Singular Name"
2466
+ msgid "Category"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2467
  msgstr ""
2468
 
2469
+ #: includes/post-type/class.php:89
2470
+ msgid "All Categories"
2471
  msgstr ""
2472
 
2473
+ #: includes/post-type/class.php:90
2474
+ msgid "Parent Category"
2475
  msgstr ""
2476
 
2477
+ #: includes/post-type/class.php:91
2478
+ msgid "Parent Category:"
2479
  msgstr ""
2480
 
2481
+ #: includes/post-type/class.php:92
2482
+ msgid "New Category Name"
2483
  msgstr ""
2484
 
2485
+ #: includes/post-type/class.php:93
2486
+ msgid "Add New Category"
2487
  msgstr ""
2488
 
2489
+ #: includes/post-type/class.php:94
2490
+ msgid "Edit Category"
2491
  msgstr ""
2492
 
2493
+ #: includes/post-type/class.php:95
2494
+ msgid "Update Category"
2495
  msgstr ""
2496
 
2497
+ #: includes/post-type/class.php:96
2498
+ msgid "View Category"
2499
  msgstr ""
2500
 
2501
+ #: includes/post-type/class.php:97
2502
+ msgid "Separate categories with commas"
2503
  msgstr ""
2504
 
2505
+ #: includes/post-type/class.php:98
2506
+ msgid "Add or remove categories "
2507
  msgstr ""
2508
 
2509
+ #: includes/post-type/class.php:99, includes/post-type/class.php:147
2510
+ msgid "Choose from the most used"
2511
  msgstr ""
2512
 
2513
+ #: includes/post-type/class.php:100
2514
+ msgid "Popular Categories"
2515
  msgstr ""
2516
 
2517
+ #: includes/post-type/class.php:101
2518
+ msgid "Search Categories"
2519
  msgstr ""
2520
 
2521
+ #: includes/post-type/class.php:102, includes/post-type/class.php:150
2522
+ msgid "Not Found"
2523
  msgstr ""
2524
 
2525
+ #: includes/post-type/class.php:103
2526
+ msgid "No categories "
2527
  msgstr ""
2528
 
2529
+ #: includes/post-type/class.php:104
2530
+ msgid "Categories list"
2531
  msgstr ""
2532
 
2533
+ #: includes/post-type/class.php:105
2534
+ msgid "Categories list navigation"
2535
  msgstr ""
2536
 
2537
+ #: includes/post-type/class.php:134
2538
+ msgctxt "Tag General Name"
2539
+ msgid "Portfolio Tags"
2540
  msgstr ""
2541
 
2542
+ #: includes/post-type/class.php:135
2543
+ msgctxt "Tag Singular Name"
2544
+ msgid "Tag"
2545
  msgstr ""
2546
 
2547
+ #: includes/post-type/class.php:137
2548
+ msgid "All Tags"
2549
  msgstr ""
2550
 
2551
+ #: includes/post-type/class.php:138
2552
+ msgid "Parent Tag"
2553
  msgstr ""
2554
 
2555
+ #: includes/post-type/class.php:139
2556
+ msgid "Parent Tag:"
2557
  msgstr ""
2558
 
2559
+ #: includes/post-type/class.php:140
2560
+ msgid "New Tag Name"
2561
  msgstr ""
2562
 
2563
+ #: includes/post-type/class.php:141
2564
+ msgid "Add New Tag"
2565
  msgstr ""
2566
 
2567
+ #: includes/post-type/class.php:142
2568
+ msgid "Edit Tag"
2569
  msgstr ""
2570
 
2571
+ #: includes/post-type/class.php:143
2572
+ msgid "Update Tag"
2573
  msgstr ""
2574
 
2575
+ #: includes/post-type/class.php:144
2576
+ msgid "View Tag"
2577
  msgstr ""
2578
 
2579
+ #: includes/post-type/class.php:145
2580
+ msgid "Separate tags with commas"
2581
  msgstr ""
2582
 
2583
+ #: includes/post-type/class.php:146
2584
+ msgid "Add or remove tags"
2585
  msgstr ""
2586
 
2587
+ #: includes/post-type/class.php:148
2588
+ msgid "Popular Tags"
2589
  msgstr ""
2590
 
2591
+ #: includes/post-type/class.php:149
2592
+ msgid "Search Tags"
2593
  msgstr ""
2594
 
2595
+ #: includes/post-type/class.php:151
2596
+ msgid "No tags"
2597
  msgstr ""
2598
 
2599
+ #: includes/post-type/class.php:152
2600
+ msgid "Tags list"
2601
  msgstr ""
2602
 
2603
+ #: includes/post-type/class.php:153
2604
+ msgid "Tags list navigation"
2605
  msgstr ""
2606
 
2607
+ #: includes/templates/class.php:90, includes/templates/class.php:125
2608
+ msgid "e.g. Portfolio, Real estate, Minimal, Dark, ..."
2609
  msgstr ""
2610
 
2611
+ #: includes/templates/class.php:102
2612
+ msgid "Filters"
2613
  msgstr ""
2614
 
2615
+ #: includes/templates/class.php:107
2616
+ msgid "Template was found."
2617
  msgstr ""
2618
 
2619
+ #: includes/templates/class.php:113
2620
+ msgid "Filter & Refine"
2621
  msgstr ""
2622
 
2623
+ #: includes/templates/class.php:114
2624
+ msgid "Clear all"
2625
  msgstr ""
2626
 
2627
+ #: includes/templates/class.php:115
2628
+ msgid "Done"
2629
  msgstr ""
2630
 
2631
+ #: includes/templates/class.php:142
2632
+ msgid "Style"
2633
  msgstr ""
2634
 
2635
+ #: includes/templates/class.php:143
2636
+ msgid "Header Type"
2637
  msgstr ""
2638
 
2639
+ #: includes/templates/class.php:144
2640
+ msgid "Menu Type"
2641
  msgstr ""
2642
 
2643
+ #: includes/templates/class.php:145
2644
+ msgid "Components"
2645
  msgstr ""
2646
 
2647
+ #: includes/templates/class.php:146
2648
+ msgid "Content Type"
2649
  msgstr ""
2650
 
2651
+ #: includes/templates/class.php:180
2652
+ msgid "All"
2653
  msgstr ""
2654
 
2655
+ #: includes/templates/class.php:186
2656
+ msgid "Click to expand"
2657
  msgstr ""
2658
 
2659
+ #: includes/templates/class.php:189
2660
+ msgid "Clear"
2661
  msgstr ""
2662
 
2663
+ #: includes/templates/class.php:345, includes/templates/class.php:352
2664
+ msgid "Cheatin&#8217; huh?"
2665
  msgstr ""
2666
 
2667
+ #. translators: 1. Heads up title.
2668
+ #: includes/updater/functions.php:38
2669
+ msgid "%1$s We have found conflicts on updating this plugin. Please resolve following issues before you continue otherwise it may cause unknown issues."
2670
  msgstr ""
2671
 
2672
+ #: includes/updater/functions.php:38
2673
+ msgid "Heads up!"
2674
  msgstr ""
2675
 
2676
+ #: includes/updater/views/html-notice-update-extensions-themes-inline.php:18
2677
+ msgid "Plugins"
2678
  msgstr ""
2679
 
2680
+ #: includes/updater/views/html-notice-update-extensions-themes-inline.php:19, includes/updater/views/html-notice-update-extensions-themes-inline.php:37
2681
+ msgid "Upgrade to version"
2682
  msgstr ""
2683
 
2684
+ #: includes/updater/views/html-notice-update-extensions-themes-inline.php:36
2685
+ msgid "Themes"
2686
  msgstr ""
2687
 
2688
+ #: includes/widget-area/functions.php:28
2689
+ msgid "name field is required"
2690
  msgstr ""
2691
 
2692
+ #: includes/widget-area/functions.php:52
2693
+ msgid "id field is required"
2694
  msgstr ""
2695
 
2696
+ #: includes/widget-area/functions.php:81
2697
+ msgid "Add Custom Sidebar"
2698
  msgstr ""
2699
 
2700
+ #: includes/widgets/class.php:476
2701
+ msgid "Add"
2702
  msgstr ""
2703
 
2704
+ #: includes/widgets/widget-nav-menu.php:116
2705
+ msgid "Orientation:"
2706
  msgstr ""
2707
 
2708
+ #: includes/widgets/widget-nav-menu.php:149
2709
+ msgid "Space between:"
2710
  msgstr ""
2711
 
2712
+ #: includes/widgets/widget-posts.php:28, includes/widgets/widget-posts.php:136
2713
+ msgid "Jupiter X - Posts"
2714
  msgstr ""
2715
 
2716
+ #: includes/widgets/widget-posts.php:29
2717
+ msgid "Custom lists of posts."
2718
  msgstr ""
2719
 
2720
+ #: includes/widgets/widget-posts.php:49
2721
+ msgid "Recent"
2722
  msgstr ""
2723
 
2724
+ #: includes/widgets/widget-posts.php:50
2725
+ msgid "Popular"
2726
  msgstr ""
2727
 
2728
+ #: includes/widgets/widget-posts.php:51
2729
+ msgid "Commented"
2730
  msgstr ""
2731
 
2732
+ #: includes/widgets/widget-posts.php:80
2733
+ msgid "Show portfolio title on hover"
2734
  msgstr ""
2735
 
2736
+ #: includes/widgets/widget-posts.php:89
2737
+ msgid "Show post date"
2738
  msgstr ""
2739
 
2740
+ #: includes/widgets/widget-posts.php:98
2741
+ msgid "Show comment count"
2742
  msgstr ""
2743
 
2744
+ #: includes/widgets/widget-posts.php:107
2745
+ msgid "Show thumbnail"
2746
  msgstr ""
2747
 
2748
+ #: includes/widgets/widget-posts.php:116
2749
+ msgid "Number of posts to show"
2750
  msgstr ""
2751
 
2752
+ #: includes/widgets/widget-posts.php:122
2753
+ msgid "Order by"
2754
  msgstr ""
2755
 
2756
+ #: includes/widgets/widget-posts.php:126
2757
+ msgid "Menu order"
2758
  msgstr ""
2759
 
2760
+ #: includes/widgets/widget-posts.php:127
2761
+ msgid "Random"
2762
  msgstr ""
2763
 
2764
+ #: includes/widgets/widget-posts.php:318
2765
+ msgid " on "
2766
  msgstr ""
2767
 
2768
+ #: includes/widgets/widget-posts.php:438
2769
+ msgid "No Comments"
2770
  msgstr ""
2771
 
2772
+ #: includes/widgets/widget-posts.php:440
2773
+ msgid " Comments"
2774
  msgstr ""
2775
 
2776
+ #: includes/widgets/widget-posts.php:442
2777
+ msgid "1 Comment"
2778
  msgstr ""
2779
 
2780
+ #: includes/widgets/widget-social.php:28, includes/widgets/widget-social.php:158
2781
+ msgid "Jupiter X - Social Networks"
2782
  msgstr ""
2783
 
2784
+ #: includes/widgets/widget-social.php:29
2785
+ msgid "Social network icons."
2786
  msgstr ""
2787
 
2788
+ #: includes/widgets/widget-social.php:37
2789
+ msgid "Choose social networks"
2790
  msgstr ""
2791
 
2792
+ #: includes/widgets/widget-social.php:41
2793
+ msgid "Android"
2794
  msgstr ""
2795
 
2796
+ #: includes/widgets/widget-social.php:42
2797
+ msgid "Apple"
2798
  msgstr ""
2799
 
2800
+ #: includes/widgets/widget-social.php:43
2801
+ msgid "Behance"
2802
  msgstr ""
2803
 
2804
+ #: includes/widgets/widget-social.php:44
2805
+ msgid "Bitbucket"
2806
  msgstr ""
2807
 
2808
+ #: includes/widgets/widget-social.php:45
2809
+ msgid "Delicious"
2810
  msgstr ""
2811
 
2812
+ #: includes/widgets/widget-social.php:46
2813
+ msgid "Digg"
2814
  msgstr ""
2815
 
2816
+ #: includes/widgets/widget-social.php:47
2817
+ msgid "Dribbble"
2818
  msgstr ""
2819
 
2820
+ #: includes/widgets/widget-social.php:48
2821
+ msgid "Facebook"
2822
  msgstr ""
2823
 
2824
+ #: includes/widgets/widget-social.php:49
2825
+ msgid "Flickr"
2826
  msgstr ""
2827
 
2828
+ #: includes/widgets/widget-social.php:50
2829
+ msgid "Foursquare"
2830
  msgstr ""
2831
 
2832
+ #: includes/widgets/widget-social.php:51
2833
+ msgid "Github"
2834
  msgstr ""
2835
 
2836
+ #: includes/widgets/widget-social.php:52
2837
+ msgid "Google Plus"
2838
  msgstr ""
2839
 
2840
+ #: includes/widgets/widget-social.php:53
2841
+ msgid "Instagram"
2842
  msgstr ""
2843
 
2844
+ #: includes/widgets/widget-social.php:54
2845
+ msgid "JSFiddle"
2846
  msgstr ""
2847
 
2848
+ #: includes/widgets/widget-social.php:55
2849
+ msgid "Linkedin"
2850
  msgstr ""
2851
 
2852
+ #: includes/widgets/widget-social.php:56
2853
+ msgid "Medium"
2854
  msgstr ""
2855
 
2856
+ #: includes/widgets/widget-social.php:57
2857
+ msgid "Pinterest"
2858
  msgstr ""
2859
 
2860
+ #: includes/widgets/widget-social.php:58
2861
+ msgid "Product Hunt"
2862
  msgstr ""
2863
 
2864
+ #: includes/widgets/widget-social.php:59
2865
+ msgid "Reddit"
2866
  msgstr ""
2867
 
2868
+ #: includes/widgets/widget-social.php:60
2869
+ msgid "RSS"
2870
  msgstr ""
2871
 
2872
+ #: includes/widgets/widget-social.php:61
2873
+ msgid "Skype"
2874
  msgstr ""
2875
 
2876
+ #: includes/widgets/widget-social.php:62
2877
+ msgid "Snapchat"
2878
  msgstr ""
2879
 
2880
+ #: includes/widgets/widget-social.php:63
2881
+ msgid "Soundcloud"
2882
  msgstr ""
2883
 
2884
+ #: includes/widgets/widget-social.php:64
2885
+ msgid "Spotify"
2886
  msgstr ""
2887
 
2888
+ #: includes/widgets/widget-social.php:65
2889
+ msgid "Stack Overflow"
2890
  msgstr ""
2891
 
2892
+ #: includes/widgets/widget-social.php:66
2893
+ msgid "Steam"
2894
  msgstr ""
2895
 
2896
+ #: includes/widgets/widget-social.php:67
2897
+ msgid "Stumbleupon"
2898
  msgstr ""
2899
 
2900
+ #: includes/widgets/widget-social.php:68
2901
+ msgid "Telegram"
2902
  msgstr ""
2903
 
2904
+ #: includes/widgets/widget-social.php:69
2905
+ msgid "TripAdvisor"
2906
  msgstr ""
2907
 
2908
+ #: includes/widgets/widget-social.php:70
2909
+ msgid "Tumblr"
2910
  msgstr ""
2911
 
2912
+ #: includes/widgets/widget-social.php:71
2913
+ msgid "Twitch"
2914
  msgstr ""
2915
 
2916
+ #: includes/widgets/widget-social.php:72
2917
+ msgid "Twitter"
2918
  msgstr ""
2919
 
2920
+ #: includes/widgets/widget-social.php:73
2921
+ msgid "Vimeo"
2922
  msgstr ""
2923
 
2924
+ #: includes/widgets/widget-social.php:74
2925
+ msgid "VK"
2926
  msgstr ""
2927
 
2928
+ #: includes/widgets/widget-social.php:75
2929
+ msgid "Weibo"
2930
  msgstr ""
2931
 
2932
+ #: includes/widgets/widget-social.php:76
2933
+ msgid "Weixin"
2934
  msgstr ""
2935
 
2936
+ #: includes/widgets/widget-social.php:77
2937
+ msgid "Whatsapp"
2938
  msgstr ""
2939
 
2940
+ #: includes/widgets/widget-social.php:78
2941
+ msgid "WordPress"
2942
  msgstr ""
2943
 
2944
+ #: includes/widgets/widget-social.php:79
2945
+ msgid "Xing"
2946
  msgstr ""
2947
 
2948
+ #: includes/widgets/widget-social.php:80
2949
+ msgid "Yelp"
2950
  msgstr ""
2951
 
2952
+ #: includes/widgets/widget-social.php:81
2953
+ msgid "Youtube"
2954
  msgstr ""
2955
 
2956
+ #: includes/widgets/widget-social.php:82
2957
+ msgid "500px"
2958
  msgstr ""
2959
 
2960
+ #: includes/widgets/widget-social.php:88
2961
+ msgid "Open links in new tab"
2962
  msgstr ""
2963
 
2964
+ #: includes/widgets/widget-social.php:97
2965
+ msgid "Icon size"
2966
  msgstr ""
2967
 
2968
+ #: includes/widgets/widget-social.php:104
2969
+ msgid "Border radius"
2970
  msgstr ""
2971
 
2972
+ #: includes/widgets/widget-social.php:110
2973
+ msgid "Space between icons"
2974
  msgstr ""
2975
 
2976
+ #: includes/widgets/widget-social.php:115
2977
+ msgid "Use custom colors"
2978
  msgstr ""
2979
 
2980
+ #: includes/widgets/widget-social.php:120
2981
+ msgid "Icon color"
2982
  msgstr ""
2983
 
2984
+ #: includes/widgets/widget-social.php:129
2985
+ msgid "Background color"
2986
  msgstr ""
2987
 
2988
+ #: includes/widgets/widget-social.php:138
2989
+ msgid "Icon hover color"
2990
  msgstr ""
2991
 
2992
+ #: includes/widgets/widget-social.php:147
2993
+ msgid "Background hover color"
2994
  msgstr ""
2995
 
2996
+ #: includes/woocommerce/woocommerce-load-more.php:62
2997
+ msgid "Loading"
2998
  msgstr ""
2999
 
3000
+ #: jupiterx-core.php:492
3001
+ msgid "Activate Product"
3002
  msgstr ""
readme.txt CHANGED
@@ -3,6 +3,7 @@ Contributors: artbees
3
  Tags: jupiter, jupiterx
4
  Requires at least: 4.7
5
  Tested up to: 5.3
 
6
  Requires PHP: 5.6
7
  License: GPLv3
8
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
3
  Tags: jupiter, jupiterx
4
  Requires at least: 4.7
5
  Tested up to: 5.3
6
+ Stable tag: 1.12.0
7
  Requires PHP: 5.6
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html