Version Description
Download this release
Release Info
Developer | artbees |
Plugin | Jupiter X Core |
Version | 1.12.0 |
Comparing to | |
See all releases |
Code changes from version 1.11.0 to 1.12.0
- assets/images/warning-badge.svg +0 -0
- includes/compiler/vendors/lessc.php +5 -5
- includes/control-panel/includes/class-db-php-manager.php +250 -250
- includes/control-panel/includes/class-export-import-content.php +1304 -1304
- includes/control-panel/includes/class-install-plugins.php +1 -1
- includes/control-panel/includes/class-install-template.php +1875 -1875
- includes/control-panel/includes/logic-messages.php +1 -1
- includes/customizer/api/classes/class-multilingual.php +1 -1
- includes/customizer/api/includes/class-templates.php +21 -0
- includes/customizer/api/includes/control/class-template.php +110 -110
- includes/customizer/settings/blog-archive/settings.php +1 -1
- includes/customizer/settings/comment/action-link.php +0 -2
- includes/customizer/settings/page-single/settings.php +1 -0
- includes/customizer/vendors/kirki/LICENSE +0 -0
- includes/customizer/vendors/kirki/assets/css/kirki-styles.css +0 -0
- includes/customizer/vendors/kirki/assets/images/1c.png +0 -0
- includes/customizer/vendors/kirki/assets/images/2cl.png +0 -0
- includes/customizer/vendors/kirki/assets/images/2cr.png +0 -0
- includes/customizer/vendors/kirki/assets/images/3cl.png +0 -0
- includes/customizer/vendors/kirki/assets/images/3cm.png +0 -0
- includes/customizer/vendors/kirki/assets/images/3cr.png +0 -0
- includes/customizer/vendors/kirki/assets/images/jquery.fs.stepper-arrows.png +0 -0
- includes/customizer/vendors/kirki/assets/images/kirki-bottom.png +0 -0
- includes/customizer/vendors/kirki/assets/images/kirki-bottom.svg +0 -0
- includes/customizer/vendors/kirki/assets/images/kirki-logo.svg +0 -0
- includes/customizer/vendors/kirki/assets/vendor/fontawesome/fontawesome.json +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/css/select2.css +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/css/select2.min.css +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/css/selectWoo.css +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/css/selectWoo.min.css +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ar.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/az.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/bg.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ca.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/cs.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/da.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/de.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/el.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/en.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/es.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/et.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/eu.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/fa.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/fi.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/fr.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/gl.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/he.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/hi.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/hr.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/hu.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/hy.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/id.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/is.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/it.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ja.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/km.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ko.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/lt.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/lv.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/mk.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ms.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/nb.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/nl.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/pl.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/pt-BR.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/pt.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ro.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/ru.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sk.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sl.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sr-Cyrl.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sr.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/sv.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/th.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/tr.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/uk.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/vi.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/zh-CN.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/i18n/zh-TW.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/select2.full.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/select2.full.min.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/select2.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/select2.min.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/selectWoo.full.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/selectWoo.full.min.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/selectWoo.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/js/selectWoo.min.js +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/kirki.css +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/kirki.css.map +0 -0
- includes/customizer/vendors/kirki/assets/vendor/selectWoo/kirki.scss +0 -0
- includes/customizer/vendors/kirki/assets/vendor/wp-color-picker-alpha/wp-color-picker-alpha.js +0 -0
- includes/customizer/vendors/kirki/class-kirki-autoload.php +0 -0
- includes/customizer/vendors/kirki/controls/class-kirki-controls.php +0 -0
- includes/customizer/vendors/kirki/controls/css/styles.css +0 -0
- includes/customizer/vendors/kirki/controls/js/script.js +0 -0
- includes/customizer/vendors/kirki/controls/js/script.min.js +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-background.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-base.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-checkbox.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-code.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-color-palette.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-color.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-cropped-image.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-custom.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-dashicons.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-date.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-dimension.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-dimensions.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-editor.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-generic.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-image.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-multicheck.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-multicolor.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-number.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-palette.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-radio-buttonset.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-radio-image.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-radio.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-repeater.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-select.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-slider.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-sortable.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-switch.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-toggle.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-typography.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-control-upload.php +0 -0
- includes/customizer/vendors/kirki/controls/php/class-kirki-settings-repeater-setting.php +0 -0
- includes/customizer/vendors/kirki/controls/views/code.php +0 -0
- includes/customizer/vendors/kirki/controls/views/color.php +0 -0
- includes/customizer/vendors/kirki/controls/views/generic.php +0 -0
- includes/customizer/vendors/kirki/controls/views/number.php +0 -0
- includes/customizer/vendors/kirki/controls/views/radio.php +0 -0
- includes/customizer/vendors/kirki/controls/views/select.php +0 -0
- includes/customizer/vendors/kirki/controls/views/textarea.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-config.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-control.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-field.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-helper.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-init.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-l10n.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-modules.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-panel.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-sanitize-values.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-section.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-sections.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-setting-site-option.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-setting-user-meta.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-settings.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-toolkit.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-util.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki-values.php +0 -0
- includes/customizer/vendors/kirki/core/class-kirki.php +0 -0
- includes/customizer/vendors/kirki/core/dynamic-css.php +0 -0
- includes/customizer/vendors/kirki/deprecated/classes.php +0 -0
- includes/customizer/vendors/kirki/deprecated/deprecated.php +0 -0
- includes/customizer/vendors/kirki/deprecated/filters.php +0 -0
- includes/customizer/vendors/kirki/deprecated/functions.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-background.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-checkbox.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-code.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-color-alpha.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-color-palette.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-color.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-custom.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-dashicons.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-date.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-dimension.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-dimensions.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-editor.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-fontawesome.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-generic.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-group-title.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-image.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-kirki-generic.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-link.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-multicheck.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-multicolor.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-number.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-palette.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-preset.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-radio-buttonset.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-radio-image.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-radio.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-repeater.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-select.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-select2-multiple.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-select2.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-slider.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-sortable.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-spacing.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-switch.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-text.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-textarea.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-toggle.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-typography.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-upload.php +0 -0
- includes/customizer/vendors/kirki/field/class-kirki-field-url.php +0 -0
- includes/customizer/vendors/kirki/kirki.php +0 -0
- includes/customizer/vendors/kirki/lib/class-aricolor.php +0 -0
- includes/customizer/vendors/kirki/lib/class-kirki-color.php +0 -0
- includes/customizer/vendors/kirki/modules/css-vars/class-kirki-modules-css-vars.php +0 -0
- includes/customizer/vendors/kirki/modules/css-vars/script.js +0 -0
- includes/customizer/vendors/kirki/modules/css/class-kirki-css-to-file.php +0 -0
- includes/customizer/vendors/kirki/modules/css/class-kirki-modules-css-generator.php +0 -0
- includes/customizer/vendors/kirki/modules/css/class-kirki-modules-css.php +0 -0
- includes/customizer/vendors/kirki/modules/css/class-kirki-output.php +0 -0
- includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-background.php +0 -0
- includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-dimensions.php +0 -0
- includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-image.php +0 -0
- includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-multicolor.php +0 -0
- includes/customizer/vendors/kirki/modules/css/field/class-kirki-output-field-typography.php +0 -0
- includes/customizer/vendors/kirki/modules/css/property/class-kirki-output-property-background-image.php +0 -0
- includes/customizer/vendors/kirki/modules/css/property/class-kirki-output-property-background-position.php +0 -0
- includes/customizer/vendors/kirki/modules/css/property/class-kirki-output-property-font-family.php +0 -0
- includes/customizer/vendors/kirki/modules/css/property/class-kirki-output-property.php +0 -0
- includes/customizer/vendors/kirki/modules/custom-sections/class-kirki-modules-custom-sections.php +0 -0
- includes/customizer/vendors/kirki/modules/custom-sections/panels/class-kirki-panels-nested-panel.php +0 -0
- includes/customizer/vendors/kirki/modules/custom-sections/sections.css +0 -0
- includes/customizer/vendors/kirki/modules/custom-sections/sections.js +0 -0
- includes/customizer/vendors/kirki/modules/custom-sections/sections/class-kirki-sections-default-section.php +0 -0
- includes/customizer/vendors/kirki/modules/custom-sections/sections/class-kirki-sections-expanded-section.php +0 -0
- includes/customizer/vendors/kirki/modules/custom-sections/sections/class-kirki-sections-nested-section.php +0 -0
- includes/customizer/vendors/kirki/modules/customizer-branding/branding.js +0 -0
- includes/customizer/vendors/kirki/modules/customizer-branding/class-kirki-modules-customizer-branding.php +0 -0
- includes/customizer/vendors/kirki/modules/customizer-styling/class-kirki-modules-customizer-styling.php +0 -0
- includes/customizer/vendors/kirki/modules/field-dependencies/class-kirki-modules-field-dependencies.php +0 -0
- includes/customizer/vendors/kirki/modules/field-dependencies/field-dependencies.js +0 -0
- includes/customizer/vendors/kirki/modules/icons/class-kirki-modules-icons.php +0 -0
- includes/customizer/vendors/kirki/modules/icons/icons.js +0 -0
- includes/customizer/vendors/kirki/modules/loading/class-kirki-modules-loading.php +0 -0
- includes/customizer/vendors/kirki/modules/post-meta/class-kirki-modules-post-meta.php +0 -0
- includes/customizer/vendors/kirki/modules/post-meta/customize-controls.js +0 -0
- includes/customizer/vendors/kirki/modules/post-meta/customize-preview.js +0 -0
- includes/customizer/vendors/kirki/modules/postmessage/class-kirki-modules-postmessage.php +0 -0
- includes/customizer/vendors/kirki/modules/postmessage/postmessage.js +0 -0
- includes/customizer/vendors/kirki/modules/preset/class-kirki-modules-preset.php +0 -0
- includes/customizer/vendors/kirki/modules/preset/preset.js +0 -0
- includes/customizer/vendors/kirki/modules/selective-refresh/class-kirki-modules-selective-refresh.php +0 -0
- includes/customizer/vendors/kirki/modules/tooltips/class-kirki-modules-tooltips.php +0 -0
- includes/customizer/vendors/kirki/modules/tooltips/tooltip.css +0 -0
- includes/customizer/vendors/kirki/modules/tooltips/tooltip.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/class-kirki-modules-webfont-loader.php +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/closure.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/cssclassname.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/domhelper.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/eventdispatcher.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/font.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontmodule.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontmoduleloader.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontruler.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontwatcher.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/fontwatchrunner.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/initialize.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/nativefontwatchrunner.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/stylesheetwaiter.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/core/webfont.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules.yml +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/custom.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/fontdeck.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/google/fontapiparser.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/google/fontapiurlbuilder.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/google/googlefontapi.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/monotype.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/src/modules/typekit.js +0 -0
- includes/customizer/vendors/kirki/modules/webfont-loader/vendor-typekit/webfontloader.js +0 -0
- includes/customizer/vendors/kirki/modules/webfonts/class-kirki-fonts-google-local.php +0 -0
- includes/customizer/vendors/kirki/modules/webfonts/class-kirki-fonts-google.php +0 -0
- includes/customizer/vendors/kirki/modules/webfonts/class-kirki-fonts.php +0 -0
- includes/customizer/vendors/kirki/modules/webfonts/class-kirki-modules-webfonts-async.php +0 -0
- includes/customizer/vendors/kirki/modules/webfonts/class-kirki-modules-webfonts-local.php +0 -0
- includes/customizer/vendors/kirki/modules/webfonts/class-kirki-modules-webfonts.php +0 -0
- includes/customizer/vendors/kirki/modules/webfonts/webfont-files.json +0 -0
- includes/customizer/vendors/kirki/modules/webfonts/webfont-names.json +0 -0
- includes/customizer/vendors/kirki/modules/webfonts/webfonts.json +0 -0
- includes/customizer/vendors/kirki/readme.txt +0 -0
- includes/customizer/vendors/kirki/upgrade-notifications.php +0 -0
- includes/parse-css/class.php +0 -0
- includes/parse-css/functions.php +0 -0
- includes/parse-css/vendors/autoload.php +0 -0
- includes/parse-css/vendors/composer/ClassLoader.php +0 -0
- includes/parse-css/vendors/composer/LICENSE +0 -0
- includes/parse-css/vendors/composer/autoload_classmap.php +0 -0
- includes/parse-css/vendors/composer/autoload_namespaces.php +0 -0
- includes/parse-css/vendors/composer/autoload_psr4.php +0 -0
- includes/parse-css/vendors/composer/autoload_real.php +0 -0
- includes/parse-css/vendors/composer/autoload_static.php +0 -0
- includes/parse-css/vendors/composer/installed.json +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/CHANGELOG.md +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/LICENSE +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/README.md +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/phpunit.xml +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/FlipOptions.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/RtlCss.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/AbstractFlipLeftRight.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipBackground.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipBorderRadius.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipCursor.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipDirection.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipLeftProperty.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipLeftValue.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipMarginPaddingBorder.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipRightProperty.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipShadow.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipTransform.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipTransformOrigin.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/FlipTransition.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/Operation/SizeFlipper.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/TransformationException.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/TransformationInterface.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/src/Transformation/Value/TransformableStringValue.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/tests/CSSJanus/CSSJanusTest.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/tests/CSSJanus/cssjanus-1.2.1-adapted.json +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/tests/CSSJanus/cssjanus-1.2.1.json +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/tests/PrestaShop/RtlCss/RtlCssTest.php +0 -0
- includes/parse-css/vendors/prestashop/rtlcss-php/tests/bootstrap.php +0 -0
- includes/updater/views/html-notice-update-extensions-themes-inline.php +0 -0
- includes/widgets/functions.php +0 -0
- includes/widgets/widget-nav-menu.php +0 -0
- includes/widgets/widget-social.php +0 -0
- includes/woocommerce/wc-load-more.js +27 -7
- includes/woocommerce/woocommerce-load-more.php +26 -6
- jupiterx-core.php +1 -1
- languages/jupiterx-core.pot +1482 -1482
- 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]
|
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
|
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
|
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
|
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(
|
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
|
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 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
*
|
1226 |
-
*
|
1227 |
-
* @
|
1228 |
-
*
|
1229 |
-
*
|
1230 |
-
* @param array
|
1231 |
-
* @
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
$element['elType']
|
1238 |
-
|
1239 |
-
$element['widgetType']
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
*
|
1254 |
-
*
|
1255 |
-
* @
|
1256 |
-
* @
|
1257 |
-
|
1258 |
-
|
1259 |
-
|
1260 |
-
|
1261 |
-
|
1262 |
-
|
1263 |
-
|
1264 |
-
|
1265 |
-
|
1266 |
-
|
1267 |
-
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
-
|
1276 |
-
|
1277 |
-
|
1278 |
-
|
1279 |
-
|
1280 |
-
|
1281 |
-
|
1282 |
-
|
1283 |
-
'
|
1284 |
-
'
|
1285 |
-
'
|
1286 |
-
'
|
1287 |
-
'
|
1288 |
-
'
|
1289 |
-
'
|
1290 |
-
'
|
1291 |
-
'
|
1292 |
-
|
1293 |
-
|
1294 |
-
|
1295 |
-
|
1296 |
-
|
1297 |
-
|
1298 |
-
|
1299 |
-
|
1300 |
-
|
1301 |
-
|
1302 |
-
|
1303 |
-
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
$
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
$available_widgets[ $widget['id_base'] ]['
|
1322 |
-
|
1323 |
-
|
1324 |
-
|
1325 |
-
|
1326 |
-
|
1327 |
-
|
1328 |
-
|
1329 |
-
|
1330 |
-
*
|
1331 |
-
*
|
1332 |
-
*
|
1333 |
-
*
|
1334 |
-
* @
|
1335 |
-
|
1336 |
-
|
1337 |
-
|
1338 |
-
|
1339 |
-
|
1340 |
-
$
|
1341 |
-
|
1342 |
-
|
1343 |
-
|
1344 |
-
|
1345 |
-
|
1346 |
-
|
1347 |
-
|
1348 |
-
|
1349 |
-
|
1350 |
-
|
1351 |
-
|
1352 |
-
|
1353 |
-
|
1354 |
-
$
|
1355 |
-
$
|
1356 |
-
$
|
1357 |
-
|
1358 |
-
|
1359 |
-
$
|
1360 |
-
$
|
1361 |
-
$
|
1362 |
-
|
1363 |
-
|
1364 |
-
$results[ $sidebar_id ]['
|
1365 |
-
$results[ $sidebar_id ]['
|
1366 |
-
$results[ $sidebar_id ]['
|
1367 |
-
|
1368 |
-
|
1369 |
-
$
|
1370 |
-
$
|
1371 |
-
|
1372 |
-
|
1373 |
-
$
|
1374 |
-
$
|
1375 |
-
|
1376 |
-
|
1377 |
-
|
1378 |
-
|
1379 |
-
$
|
1380 |
-
$
|
1381 |
-
|
1382 |
-
|
1383 |
-
|
1384 |
-
$
|
1385 |
-
$
|
1386 |
-
|
1387 |
-
|
1388 |
-
|
1389 |
-
|
1390 |
-
|
1391 |
-
|
1392 |
-
$single_widget_instances =
|
1393 |
-
|
1394 |
-
|
1395 |
-
|
1396 |
-
|
1397 |
-
|
1398 |
-
|
1399 |
-
|
1400 |
-
$
|
1401 |
-
|
1402 |
-
|
1403 |
-
|
1404 |
-
|
1405 |
-
|
1406 |
-
$single_widget_instances['_multiwidget']
|
1407 |
-
|
1408 |
-
|
1409 |
-
|
1410 |
-
$
|
1411 |
-
$
|
1412 |
-
|
1413 |
-
|
1414 |
-
|
1415 |
-
$
|
1416 |
-
|
1417 |
-
|
1418 |
-
$
|
1419 |
-
|
1420 |
-
|
1421 |
-
|
1422 |
-
$results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['
|
1423 |
-
$results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['
|
1424 |
-
$results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['
|
1425 |
-
|
1426 |
-
|
1427 |
-
|
1428 |
-
|
1429 |
-
|
1430 |
-
|
1431 |
-
|
1432 |
-
*
|
1433 |
-
*
|
1434 |
-
*
|
1435 |
-
*
|
1436 |
-
*
|
1437 |
-
*
|
1438 |
-
*
|
1439 |
-
|
1440 |
-
|
1441 |
-
|
1442 |
-
|
1443 |
-
|
1444 |
-
|
1445 |
-
|
1446 |
-
|
1447 |
-
|
1448 |
-
|
1449 |
-
|
1450 |
-
|
1451 |
-
|
1452 |
-
|
1453 |
-
|
1454 |
-
$
|
1455 |
-
$
|
1456 |
-
$
|
1457 |
-
|
1458 |
-
|
1459 |
-
|
1460 |
-
|
1461 |
-
|
1462 |
-
|
1463 |
-
|
1464 |
-
'
|
1465 |
-
'
|
1466 |
-
'
|
1467 |
-
'
|
1468 |
-
|
1469 |
-
|
1470 |
-
|
1471 |
-
|
1472 |
-
|
1473 |
-
|
1474 |
-
|
1475 |
-
|
1476 |
-
|
1477 |
-
|
1478 |
-
|
1479 |
-
|
1480 |
-
$
|
1481 |
-
|
1482 |
-
|
1483 |
-
|
1484 |
-
|
1485 |
-
|
1486 |
-
|
1487 |
-
|
1488 |
-
|
1489 |
-
|
1490 |
-
|
1491 |
-
|
1492 |
-
$
|
1493 |
-
|
1494 |
-
|
1495 |
-
|
1496 |
-
|
1497 |
-
|
1498 |
-
|
1499 |
-
|
1500 |
-
|
1501 |
-
|
1502 |
-
|
1503 |
-
|
1504 |
-
|
1505 |
-
|
1506 |
-
|
1507 |
-
|
1508 |
-
|
1509 |
-
|
1510 |
-
|
1511 |
-
|
1512 |
-
|
1513 |
-
|
1514 |
-
|
1515 |
-
|
1516 |
-
|
1517 |
-
|
1518 |
-
|
1519 |
-
|
1520 |
-
|
1521 |
-
|
1522 |
-
|
1523 |
-
|
1524 |
-
|
1525 |
-
$wpdb->
|
1526 |
-
|
1527 |
-
|
1528 |
-
$
|
1529 |
-
|
1530 |
-
|
1531 |
-
|
1532 |
-
|
1533 |
-
|
1534 |
-
|
1535 |
-
|
1536 |
-
|
1537 |
-
|
1538 |
-
|
1539 |
-
|
1540 |
-
|
1541 |
-
|
1542 |
-
|
1543 |
-
|
1544 |
-
|
1545 |
-
|
1546 |
-
|
1547 |
-
|
1548 |
-
|
1549 |
-
|
1550 |
-
|
1551 |
-
|
1552 |
-
|
1553 |
-
|
1554 |
-
|
1555 |
-
|
1556 |
-
|
1557 |
-
|
1558 |
-
|
1559 |
-
|
1560 |
-
|
1561 |
-
|
1562 |
-
|
1563 |
-
|
1564 |
-
|
1565 |
-
|
1566 |
-
|
1567 |
-
|
1568 |
-
|
1569 |
-
|
1570 |
-
|
1571 |
-
|
1572 |
-
|
1573 |
-
|
1574 |
-
|
1575 |
-
|
1576 |
-
|
1577 |
-
|
1578 |
-
|
1579 |
-
|
1580 |
-
|
1581 |
-
|
1582 |
-
|
1583 |
-
|
1584 |
-
|
1585 |
-
|
1586 |
-
|
1587 |
-
|
1588 |
-
|
1589 |
-
|
1590 |
-
|
1591 |
-
|
1592 |
-
'
|
1593 |
-
'pagination-
|
1594 |
-
|
1595 |
-
|
1596 |
-
|
1597 |
-
|
1598 |
-
|
1599 |
-
|
1600 |
-
|
1601 |
-
|
1602 |
-
|
1603 |
-
|
1604 |
-
|
1605 |
-
|
1606 |
-
|
1607 |
-
|
1608 |
-
|
1609 |
-
|
1610 |
-
|
1611 |
-
|
1612 |
-
*
|
1613 |
-
*
|
1614 |
-
*
|
1615 |
-
*
|
1616 |
-
*
|
1617 |
-
|
1618 |
-
|
1619 |
-
|
1620 |
-
|
1621 |
-
|
1622 |
-
|
1623 |
-
$
|
1624 |
-
|
1625 |
-
|
1626 |
-
|
1627 |
-
|
1628 |
-
|
1629 |
-
|
1630 |
-
|
1631 |
-
$
|
1632 |
-
|
1633 |
-
'
|
1634 |
-
|
1635 |
-
|
1636 |
-
|
1637 |
-
|
1638 |
-
|
1639 |
-
|
1640 |
-
|
1641 |
-
|
1642 |
-
*
|
1643 |
-
*
|
1644 |
-
|
1645 |
-
|
1646 |
-
|
1647 |
-
|
1648 |
-
|
1649 |
-
|
1650 |
-
*
|
1651 |
-
|
1652 |
-
|
1653 |
-
|
1654 |
-
|
1655 |
-
|
1656 |
-
$this->
|
1657 |
-
|
1658 |
-
|
1659 |
-
|
1660 |
-
|
1661 |
-
|
1662 |
-
|
1663 |
-
|
1664 |
-
|
1665 |
-
|
1666 |
-
|
1667 |
-
|
1668 |
-
|
1669 |
-
|
1670 |
-
*
|
1671 |
-
*
|
1672 |
-
*
|
1673 |
-
*
|
1674 |
-
*
|
1675 |
-
|
1676 |
-
|
1677 |
-
|
1678 |
-
|
1679 |
-
$
|
1680 |
-
|
1681 |
-
|
1682 |
-
|
1683 |
-
|
1684 |
-
|
1685 |
-
|
1686 |
-
|
1687 |
-
|
1688 |
-
|
1689 |
-
|
1690 |
-
|
1691 |
-
|
1692 |
-
*
|
1693 |
-
*
|
1694 |
-
*
|
1695 |
-
*
|
1696 |
-
* (
|
1697 |
-
*
|
1698 |
-
*
|
1699 |
-
* (
|
1700 |
-
*
|
1701 |
-
*
|
1702 |
-
* @param str $
|
1703 |
-
|
1704 |
-
|
1705 |
-
|
1706 |
-
|
1707 |
-
|
1708 |
-
|
1709 |
-
|
1710 |
-
|
1711 |
-
|
1712 |
-
|
1713 |
-
|
1714 |
-
|
1715 |
-
|
1716 |
-
|
1717 |
-
|
1718 |
-
|
1719 |
-
|
1720 |
-
|
1721 |
-
|
1722 |
-
|
1723 |
-
|
1724 |
-
|
1725 |
-
|
1726 |
-
|
1727 |
-
|
1728 |
-
|
1729 |
-
|
1730 |
-
|
1731 |
-
|
1732 |
-
|
1733 |
-
|
1734 |
-
|
1735 |
-
|
1736 |
-
|
1737 |
-
|
1738 |
-
|
1739 |
-
|
1740 |
-
|
1741 |
-
|
1742 |
-
|
1743 |
-
|
1744 |
-
|
1745 |
-
|
1746 |
-
|
1747 |
-
|
1748 |
-
|
1749 |
-
|
1750 |
-
|
1751 |
-
|
1752 |
-
|
1753 |
-
|
1754 |
-
|
1755 |
-
|
1756 |
-
|
1757 |
-
|
1758 |
-
|
1759 |
-
|
1760 |
-
|
1761 |
-
|
1762 |
-
|
1763 |
-
|
1764 |
-
|
1765 |
-
|
1766 |
-
$wpdb->
|
1767 |
-
|
1768 |
-
|
1769 |
-
|
1770 |
-
|
1771 |
-
|
1772 |
-
|
1773 |
-
|
1774 |
-
|
1775 |
-
|
1776 |
-
|
1777 |
-
*
|
1778 |
-
*
|
1779 |
-
*
|
1780 |
-
*
|
1781 |
-
|
1782 |
-
|
1783 |
-
|
1784 |
-
|
1785 |
-
|
1786 |
-
|
1787 |
-
$
|
1788 |
-
$
|
1789 |
-
$
|
1790 |
-
|
1791 |
-
|
1792 |
-
|
1793 |
-
|
1794 |
-
|
1795 |
-
|
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
|
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(
|
20 |
-
|
21 |
-
|
22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
|
24 |
-
|
25 |
-
|
|
|
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 |
-
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
while ( have_posts() ) :
|
91 |
the_post();
|
|
|
|
|
|
|
92 |
wc_get_template_part( 'content', 'product' );
|
|
|
|
|
|
|
93 |
endwhile;
|
94 |
-
|
95 |
woocommerce_reset_loop();
|
96 |
|
97 |
-
|
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–%2$d of %3$d result', 'Showing %1$d–%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.
|
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 |
-
#:
|
19 |
-
msgid "
|
20 |
msgstr ""
|
21 |
|
22 |
-
#:
|
23 |
-
msgid "
|
24 |
msgstr ""
|
25 |
|
26 |
-
#:
|
27 |
-
msgid "
|
28 |
msgstr ""
|
29 |
|
30 |
-
#:
|
31 |
-
msgid "
|
32 |
msgstr ""
|
33 |
|
34 |
-
#:
|
35 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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/
|
127 |
-
msgid "
|
128 |
msgstr ""
|
129 |
|
130 |
-
#: includes/
|
131 |
-
msgid "
|
132 |
msgstr ""
|
133 |
|
134 |
-
|
135 |
-
|
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/
|
141 |
-
msgid "
|
142 |
msgstr ""
|
143 |
|
144 |
-
#: includes/
|
145 |
-
msgid "
|
146 |
msgstr ""
|
147 |
|
148 |
-
#: includes/
|
149 |
-
|
150 |
-
msgid "Portfolios"
|
151 |
msgstr ""
|
152 |
|
153 |
-
#: includes/
|
154 |
-
|
155 |
-
msgid "Portfolio"
|
156 |
msgstr ""
|
157 |
|
158 |
-
#: includes/
|
159 |
-
msgid "
|
160 |
msgstr ""
|
161 |
|
162 |
-
#: includes/
|
163 |
-
msgid "
|
164 |
msgstr ""
|
165 |
|
166 |
-
#: includes/
|
167 |
-
msgid "
|
168 |
msgstr ""
|
169 |
|
170 |
-
#: includes/
|
171 |
-
msgid "
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: includes/
|
175 |
-
|
176 |
-
msgid "Portfolio Categories"
|
177 |
msgstr ""
|
178 |
|
179 |
-
#: includes/
|
180 |
-
|
181 |
-
msgid "Category"
|
182 |
msgstr ""
|
183 |
|
184 |
-
|
185 |
-
|
|
|
|
|
186 |
msgstr ""
|
187 |
|
188 |
-
#: includes/
|
189 |
-
msgid "
|
190 |
msgstr ""
|
191 |
|
192 |
-
#: includes/
|
193 |
-
msgid "
|
194 |
msgstr ""
|
195 |
|
196 |
-
#: includes/
|
197 |
-
msgid "
|
198 |
msgstr ""
|
199 |
|
200 |
-
#: includes/
|
201 |
-
msgid "
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: includes/
|
205 |
-
msgid "
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: includes/
|
209 |
-
msgid "
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: includes/
|
213 |
-
msgid "
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: includes/
|
217 |
-
msgid "
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: includes/
|
221 |
-
msgid "
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: includes/
|
225 |
-
msgid "
|
226 |
msgstr ""
|
227 |
|
228 |
-
#: includes/
|
229 |
-
msgid "
|
230 |
msgstr ""
|
231 |
|
232 |
-
#: includes/
|
233 |
-
msgid "
|
234 |
msgstr ""
|
235 |
|
236 |
-
#: includes/
|
237 |
-
msgid "
|
238 |
msgstr ""
|
239 |
|
240 |
-
#: includes/
|
241 |
-
msgid "
|
242 |
msgstr ""
|
243 |
|
244 |
-
#: includes/
|
245 |
-
msgid "
|
246 |
msgstr ""
|
247 |
|
248 |
-
#: includes/
|
249 |
-
msgid "
|
250 |
msgstr ""
|
251 |
|
252 |
-
#: includes/
|
253 |
-
msgid "
|
254 |
msgstr ""
|
255 |
|
256 |
-
#: includes/
|
257 |
-
|
258 |
-
msgid "Portfolio Tags"
|
259 |
msgstr ""
|
260 |
|
261 |
-
#: includes/
|
262 |
-
|
263 |
-
msgid "Tag"
|
264 |
msgstr ""
|
265 |
|
266 |
-
#: includes/
|
267 |
-
msgid "
|
268 |
msgstr ""
|
269 |
|
270 |
-
#: includes/
|
271 |
-
msgid "
|
272 |
msgstr ""
|
273 |
|
274 |
-
#: includes/
|
275 |
-
msgid "
|
276 |
msgstr ""
|
277 |
|
278 |
-
#: includes/
|
279 |
-
msgid "
|
280 |
msgstr ""
|
281 |
|
282 |
-
#: includes/
|
283 |
-
msgid "
|
284 |
msgstr ""
|
285 |
|
286 |
-
#: includes/
|
287 |
-
msgid "
|
288 |
msgstr ""
|
289 |
|
290 |
-
#: includes/
|
291 |
-
msgid "
|
292 |
msgstr ""
|
293 |
|
294 |
-
#: includes/
|
295 |
-
msgid "
|
296 |
msgstr ""
|
297 |
|
298 |
-
#: includes/
|
299 |
-
msgid "
|
300 |
msgstr ""
|
301 |
|
302 |
-
#: includes/
|
303 |
-
msgid "
|
304 |
msgstr ""
|
305 |
|
306 |
-
#: includes/
|
307 |
-
msgid "
|
308 |
msgstr ""
|
309 |
|
310 |
-
#: includes/
|
311 |
-
msgid "
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: includes/
|
315 |
-
msgid "
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: includes/
|
319 |
-
msgid "
|
320 |
msgstr ""
|
321 |
|
322 |
-
#: includes/
|
323 |
-
msgid "
|
324 |
msgstr ""
|
325 |
|
326 |
-
#: includes/
|
327 |
-
msgid "
|
328 |
msgstr ""
|
329 |
|
330 |
-
#: includes/
|
331 |
-
msgid "
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: includes/
|
335 |
-
msgid "
|
336 |
msgstr ""
|
337 |
|
338 |
-
#: includes/
|
339 |
-
msgid "
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: includes/
|
343 |
-
msgid "
|
344 |
msgstr ""
|
345 |
|
346 |
-
#: includes/
|
347 |
-
msgid "
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: includes/
|
351 |
-
msgid "
|
352 |
msgstr ""
|
353 |
|
354 |
-
#: includes/
|
355 |
-
msgid "
|
356 |
msgstr ""
|
357 |
|
358 |
-
#: includes/
|
359 |
-
msgid "
|
360 |
msgstr ""
|
361 |
|
362 |
-
#: includes/
|
363 |
-
msgid "
|
364 |
msgstr ""
|
365 |
|
366 |
-
#: includes/
|
367 |
-
msgid "
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: includes/
|
371 |
-
msgid "
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: includes/
|
375 |
-
msgid "
|
376 |
msgstr ""
|
377 |
|
378 |
-
#: includes/
|
379 |
-
msgid "
|
380 |
msgstr ""
|
381 |
|
382 |
-
#: includes/
|
383 |
-
msgid "
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: includes/
|
387 |
-
msgid "
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: includes/
|
391 |
-
msgid "
|
392 |
msgstr ""
|
393 |
|
394 |
-
|
395 |
-
|
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/
|
400 |
-
msgid "
|
401 |
msgstr ""
|
402 |
|
403 |
-
#: includes/
|
404 |
-
msgid "
|
405 |
msgstr ""
|
406 |
|
407 |
-
#: includes/
|
408 |
-
msgid "
|
409 |
msgstr ""
|
410 |
|
411 |
-
#: includes/
|
412 |
-
msgid "
|
413 |
msgstr ""
|
414 |
|
415 |
-
#: includes/
|
416 |
-
msgid "
|
417 |
msgstr ""
|
418 |
|
419 |
-
#: includes/
|
420 |
-
msgid "
|
421 |
msgstr ""
|
422 |
|
423 |
-
#: includes/
|
424 |
-
msgid "
|
425 |
msgstr ""
|
426 |
|
427 |
-
#: includes/
|
428 |
-
msgid "
|
429 |
msgstr ""
|
430 |
|
431 |
-
#: includes/
|
432 |
-
msgid "
|
433 |
msgstr ""
|
434 |
|
435 |
-
#: includes/
|
436 |
-
msgid "
|
437 |
msgstr ""
|
438 |
|
439 |
-
#: includes/
|
440 |
-
msgid "
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: includes/
|
444 |
-
msgid "
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: includes/
|
448 |
-
msgid "
|
449 |
msgstr ""
|
450 |
|
451 |
-
#: includes/
|
452 |
-
msgid "
|
453 |
msgstr ""
|
454 |
|
455 |
-
#: includes/
|
456 |
-
msgid "
|
457 |
msgstr ""
|
458 |
|
459 |
-
#: includes/
|
460 |
-
msgid "
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: includes/
|
464 |
-
msgid "
|
465 |
msgstr ""
|
466 |
|
467 |
-
#: includes/
|
468 |
-
msgid "
|
469 |
msgstr ""
|
470 |
|
471 |
-
#: includes/
|
472 |
-
msgid "
|
473 |
msgstr ""
|
474 |
|
475 |
-
#: includes/
|
476 |
-
msgid "
|
477 |
msgstr ""
|
478 |
|
479 |
-
#: includes/
|
480 |
-
msgid "
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: includes/
|
484 |
-
msgid "
|
485 |
msgstr ""
|
486 |
|
487 |
-
#: includes/
|
488 |
-
msgid "
|
489 |
msgstr ""
|
490 |
|
491 |
-
#: includes/
|
492 |
-
msgid "
|
493 |
msgstr ""
|
494 |
|
495 |
-
#: includes/
|
496 |
-
msgid "
|
497 |
msgstr ""
|
498 |
|
499 |
-
#: includes/
|
500 |
-
msgid "
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: includes/
|
504 |
-
msgid "
|
505 |
msgstr ""
|
506 |
|
507 |
-
#: includes/
|
508 |
-
msgid "
|
509 |
msgstr ""
|
510 |
|
511 |
-
#: includes/
|
512 |
-
msgid "
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: includes/
|
516 |
-
msgid "Jupiter X - Social Networks"
|
517 |
msgstr ""
|
518 |
|
519 |
-
#: includes/
|
520 |
-
msgid "
|
521 |
msgstr ""
|
522 |
|
523 |
-
#: includes/
|
524 |
-
msgid "
|
525 |
msgstr ""
|
526 |
|
527 |
-
#: includes/
|
528 |
-
msgid "
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: includes/
|
532 |
-
msgid "
|
533 |
msgstr ""
|
534 |
|
535 |
-
#: includes/
|
536 |
-
msgid "
|
537 |
msgstr ""
|
538 |
|
539 |
-
#: includes/
|
540 |
-
msgid "
|
541 |
msgstr ""
|
542 |
|
543 |
-
#: includes/
|
544 |
-
msgid "
|
545 |
msgstr ""
|
546 |
|
547 |
-
#: includes/
|
548 |
-
msgid "
|
549 |
msgstr ""
|
550 |
|
551 |
-
#: includes/
|
552 |
-
msgid "
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: includes/
|
556 |
-
msgid "
|
557 |
msgstr ""
|
558 |
|
559 |
-
#: includes/
|
560 |
-
msgid "
|
561 |
msgstr ""
|
562 |
|
563 |
-
#: includes/
|
564 |
-
msgid "
|
565 |
msgstr ""
|
566 |
|
567 |
-
#: includes/
|
568 |
-
msgid "
|
569 |
msgstr ""
|
570 |
|
571 |
-
#: includes/
|
572 |
-
msgid "
|
573 |
msgstr ""
|
574 |
|
575 |
-
#: includes/
|
576 |
-
msgid "
|
577 |
msgstr ""
|
578 |
|
579 |
-
#: includes/
|
580 |
-
msgid "
|
581 |
msgstr ""
|
582 |
|
583 |
-
#: includes/
|
584 |
-
msgid "
|
585 |
msgstr ""
|
586 |
|
587 |
-
#: includes/
|
588 |
-
msgid "
|
589 |
msgstr ""
|
590 |
|
591 |
-
#: includes/
|
592 |
-
msgid "
|
593 |
msgstr ""
|
594 |
|
595 |
-
#: includes/
|
596 |
-
msgid "
|
597 |
msgstr ""
|
598 |
|
599 |
-
#: includes/
|
600 |
-
msgid "
|
601 |
msgstr ""
|
602 |
|
603 |
-
#: includes/
|
604 |
-
msgid "
|
605 |
msgstr ""
|
606 |
|
607 |
-
#: includes/
|
608 |
-
msgid "
|
609 |
msgstr ""
|
610 |
|
611 |
-
#: includes/
|
612 |
-
msgid "
|
613 |
msgstr ""
|
614 |
|
615 |
-
#: includes/
|
616 |
-
msgid "
|
617 |
msgstr ""
|
618 |
|
619 |
-
#: includes/
|
620 |
-
msgid "
|
621 |
msgstr ""
|
622 |
|
623 |
-
#: includes/
|
624 |
-
msgid "
|
625 |
msgstr ""
|
626 |
|
627 |
-
#: includes/
|
628 |
-
msgid "
|
629 |
msgstr ""
|
630 |
|
631 |
-
#: includes/
|
632 |
-
msgid "
|
633 |
msgstr ""
|
634 |
|
635 |
-
#: includes/
|
636 |
-
msgid "
|
637 |
msgstr ""
|
638 |
|
639 |
-
#: includes/
|
640 |
-
msgid "
|
641 |
msgstr ""
|
642 |
|
643 |
-
#: includes/
|
644 |
-
msgid "
|
645 |
msgstr ""
|
646 |
|
647 |
-
#: includes/widgets/
|
648 |
-
msgid "
|
649 |
msgstr ""
|
650 |
|
651 |
-
#: includes/
|
652 |
-
msgid "
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: includes/
|
656 |
-
msgid "
|
657 |
msgstr ""
|
658 |
|
659 |
-
#: includes/
|
660 |
-
msgid "
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: includes/
|
664 |
-
msgid "
|
665 |
msgstr ""
|
666 |
|
667 |
-
#: includes/
|
668 |
-
msgid "
|
669 |
msgstr ""
|
670 |
|
671 |
-
#: includes/
|
672 |
-
msgid "
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: includes/
|
676 |
-
msgid "
|
677 |
msgstr ""
|
678 |
|
679 |
-
#: includes/
|
680 |
-
msgid "
|
681 |
msgstr ""
|
682 |
|
683 |
-
#: includes/
|
684 |
-
msgid "
|
685 |
msgstr ""
|
686 |
|
687 |
-
#: includes/
|
688 |
-
msgid "
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: includes/
|
692 |
-
msgid "
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: includes/
|
696 |
-
msgid "
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: includes/
|
700 |
-
msgid "
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: includes/
|
704 |
-
msgid "
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: includes/
|
708 |
-
msgid "
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: includes/
|
712 |
-
msgid "
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: includes/
|
716 |
-
msgid "
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: includes/
|
720 |
-
msgid "
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: includes/
|
724 |
-
msgid "
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: includes/
|
728 |
-
msgid "
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: includes/
|
732 |
-
msgid "
|
733 |
msgstr ""
|
734 |
|
735 |
-
#: includes/
|
736 |
-
msgid "
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: includes/
|
740 |
-
msgid "
|
741 |
msgstr ""
|
742 |
|
743 |
-
#: includes/
|
744 |
-
msgid "
|
745 |
msgstr ""
|
746 |
|
747 |
-
#: includes/
|
748 |
-
msgid "
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: includes/
|
752 |
-
msgid "
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: includes/
|
756 |
-
msgid "
|
757 |
msgstr ""
|
758 |
|
759 |
-
#: includes/
|
760 |
-
msgid "
|
761 |
msgstr ""
|
762 |
|
763 |
-
#: includes/
|
764 |
-
msgid "
|
765 |
msgstr ""
|
766 |
|
767 |
-
#: includes/
|
768 |
-
msgid "
|
769 |
msgstr ""
|
770 |
|
771 |
-
#: includes/
|
772 |
-
msgid "
|
773 |
msgstr ""
|
774 |
|
775 |
-
#: includes/
|
776 |
-
msgid "
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: includes/
|
780 |
-
msgid "
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: includes/
|
784 |
-
msgid "
|
785 |
msgstr ""
|
786 |
|
787 |
-
#: includes/
|
788 |
-
msgid "
|
789 |
msgstr ""
|
790 |
|
791 |
-
#: includes/
|
792 |
-
msgid "
|
793 |
msgstr ""
|
794 |
|
795 |
-
#: includes/
|
796 |
-
msgid "
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: includes/
|
800 |
-
msgid "
|
801 |
msgstr ""
|
802 |
|
803 |
-
#: includes/
|
804 |
-
msgid "
|
805 |
msgstr ""
|
806 |
|
807 |
-
#: includes/
|
808 |
-
msgid "
|
809 |
msgstr ""
|
810 |
|
811 |
-
#: includes/
|
812 |
-
msgid "
|
813 |
msgstr ""
|
814 |
|
815 |
-
#: includes/
|
816 |
-
msgid "
|
817 |
msgstr ""
|
818 |
|
819 |
-
#: includes/control-panel/
|
820 |
-
msgid "
|
821 |
msgstr ""
|
822 |
|
823 |
-
#: includes/control-panel/
|
824 |
-
msgid "
|
825 |
msgstr ""
|
826 |
|
827 |
-
#: includes/control-panel/
|
828 |
-
msgid "
|
829 |
msgstr ""
|
830 |
|
831 |
-
#: includes/control-panel/
|
832 |
-
msgid "
|
833 |
msgstr ""
|
834 |
|
835 |
-
#: includes/control-panel/
|
836 |
-
msgid "
|
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/
|
844 |
-
msgid "
|
845 |
msgstr ""
|
846 |
|
847 |
-
#: includes/control-panel/
|
848 |
-
msgid "
|
849 |
msgstr ""
|
850 |
|
851 |
-
#: includes/control-panel/
|
852 |
-
msgid "
|
853 |
msgstr ""
|
854 |
|
855 |
-
#: includes/control-panel/
|
856 |
-
msgid "
|
857 |
msgstr ""
|
858 |
|
859 |
-
#: includes/control-panel/
|
860 |
-
msgid "
|
861 |
msgstr ""
|
862 |
|
863 |
-
#: includes/control-panel/
|
864 |
-
msgid "
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: includes/control-panel/
|
868 |
-
msgid "
|
869 |
msgstr ""
|
870 |
|
871 |
-
#: includes/control-panel/
|
872 |
-
msgid "
|
873 |
msgstr ""
|
874 |
|
875 |
-
#: includes/control-panel/
|
876 |
-
msgid "
|
877 |
msgstr ""
|
878 |
|
879 |
-
#: includes/control-panel/
|
880 |
-
msgid "
|
881 |
msgstr ""
|
882 |
|
883 |
-
#: includes/control-panel/
|
884 |
-
msgid "
|
885 |
msgstr ""
|
886 |
|
887 |
-
#: includes/control-panel/
|
888 |
-
msgid "
|
889 |
msgstr ""
|
890 |
|
891 |
-
#: includes/control-panel/
|
892 |
-
msgid "
|
893 |
msgstr ""
|
894 |
|
895 |
-
#: includes/control-panel/
|
896 |
-
msgid "
|
897 |
msgstr ""
|
898 |
|
899 |
-
#: includes/control-panel/
|
900 |
-
msgid "
|
901 |
msgstr ""
|
902 |
|
903 |
-
#: includes/control-panel/includes/
|
904 |
-
msgid "
|
905 |
msgstr ""
|
906 |
|
907 |
-
#: includes/control-panel/includes/
|
908 |
-
msgid "
|
909 |
msgstr ""
|
910 |
|
911 |
-
#: includes/control-panel/
|
912 |
-
msgid "
|
913 |
msgstr ""
|
914 |
|
915 |
-
#: includes/control-panel/
|
916 |
-
msgid "
|
917 |
msgstr ""
|
918 |
|
919 |
-
#: includes/control-panel/
|
920 |
-
msgid "
|
921 |
msgstr ""
|
922 |
|
923 |
-
#: includes/control-panel/
|
924 |
-
msgid "
|
925 |
msgstr ""
|
926 |
|
927 |
-
#: includes/control-panel/
|
928 |
-
msgid "
|
929 |
msgstr ""
|
930 |
|
931 |
-
#: includes/control-panel/
|
932 |
-
msgid "
|
933 |
msgstr ""
|
934 |
|
935 |
-
#: includes/control-panel/
|
936 |
-
msgid "
|
937 |
msgstr ""
|
938 |
|
939 |
-
#: includes/control-panel/
|
940 |
-
msgid "
|
941 |
msgstr ""
|
942 |
|
943 |
-
#: includes/control-panel/
|
944 |
-
msgid "
|
945 |
msgstr ""
|
946 |
|
947 |
-
#: includes/control-panel/
|
948 |
-
msgid "
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: includes/control-panel/
|
952 |
-
msgid "
|
953 |
msgstr ""
|
954 |
|
955 |
-
#: includes/control-panel/
|
956 |
-
msgid "
|
957 |
msgstr ""
|
958 |
|
959 |
-
#: includes/control-panel/
|
960 |
-
msgid "
|
961 |
msgstr ""
|
962 |
|
963 |
-
#: includes/control-panel/
|
964 |
-
msgid "
|
965 |
msgstr ""
|
966 |
|
967 |
-
#: includes/control-panel/
|
968 |
-
msgid "
|
969 |
msgstr ""
|
970 |
|
971 |
-
#: includes/control-panel/
|
972 |
-
msgid "
|
973 |
msgstr ""
|
974 |
|
975 |
-
#: includes/control-panel/
|
976 |
-
msgid "
|
977 |
msgstr ""
|
978 |
|
979 |
-
#: includes/control-panel/
|
980 |
-
msgid "
|
981 |
msgstr ""
|
982 |
|
983 |
-
#: includes/control-panel/
|
984 |
-
msgid "
|
985 |
msgstr ""
|
986 |
|
987 |
-
#: includes/control-panel/
|
988 |
-
msgid "
|
989 |
msgstr ""
|
990 |
|
991 |
-
#: includes/control-panel/
|
992 |
-
msgid "
|
993 |
msgstr ""
|
994 |
|
995 |
-
#: includes/control-panel/
|
996 |
-
msgid "
|
997 |
msgstr ""
|
998 |
|
999 |
-
#: includes/control-panel/
|
1000 |
-
msgid "
|
1001 |
msgstr ""
|
1002 |
|
1003 |
-
#: includes/control-panel/
|
1004 |
-
msgid "
|
1005 |
msgstr ""
|
1006 |
|
1007 |
-
#: includes/control-panel/
|
1008 |
-
msgid "
|
1009 |
msgstr ""
|
1010 |
|
1011 |
-
#: includes/control-panel/
|
1012 |
-
msgid "
|
1013 |
msgstr ""
|
1014 |
|
1015 |
-
#: includes/control-panel/
|
1016 |
-
msgid "
|
1017 |
msgstr ""
|
1018 |
|
1019 |
-
#: includes/control-panel/
|
1020 |
-
msgid "
|
1021 |
msgstr ""
|
1022 |
|
1023 |
-
#: includes/control-panel/
|
1024 |
-
msgid "
|
1025 |
msgstr ""
|
1026 |
|
1027 |
-
#: includes/control-panel/
|
1028 |
-
msgid "
|
1029 |
msgstr ""
|
1030 |
|
1031 |
-
#: includes/control-panel/
|
1032 |
-
msgid "
|
1033 |
msgstr ""
|
1034 |
|
1035 |
-
#: includes/control-panel/
|
1036 |
-
msgid "
|
1037 |
msgstr ""
|
1038 |
|
1039 |
-
#: includes/control-panel/
|
1040 |
-
msgid "
|
1041 |
msgstr ""
|
1042 |
|
1043 |
-
#: includes/control-panel/
|
1044 |
-
msgid "
|
1045 |
msgstr ""
|
1046 |
|
1047 |
-
#: includes/control-panel/
|
1048 |
-
msgid "
|
1049 |
msgstr ""
|
1050 |
|
1051 |
-
#: includes/control-panel/
|
1052 |
-
msgid "
|
1053 |
msgstr ""
|
1054 |
|
1055 |
-
#: includes/control-panel/
|
1056 |
-
msgid "
|
1057 |
msgstr ""
|
1058 |
|
1059 |
-
#: includes/control-panel/
|
|
|
1060 |
msgstr ""
|
1061 |
|
1062 |
-
#: includes/control-panel/
|
1063 |
-
msgid "
|
1064 |
msgstr ""
|
1065 |
|
1066 |
-
#: includes/control-panel/
|
1067 |
-
msgid "
|
1068 |
msgstr ""
|
1069 |
|
1070 |
-
#: includes/control-panel/
|
1071 |
-
msgid "
|
1072 |
msgstr ""
|
1073 |
|
1074 |
-
#: includes/control-panel/
|
1075 |
-
msgid "
|
1076 |
msgstr ""
|
1077 |
|
1078 |
-
#: includes/control-panel/includes/
|
1079 |
-
msgid "
|
1080 |
msgstr ""
|
1081 |
|
1082 |
-
#: includes/control-panel/
|
1083 |
-
msgid "
|
1084 |
msgstr ""
|
1085 |
|
1086 |
-
#: includes/control-panel/
|
1087 |
-
msgid "
|
1088 |
msgstr ""
|
1089 |
|
1090 |
-
#: includes/control-panel/
|
1091 |
-
msgid "
|
1092 |
msgstr ""
|
1093 |
|
1094 |
-
#: includes/control-panel/
|
1095 |
-
msgid "
|
1096 |
msgstr ""
|
1097 |
|
1098 |
-
#: includes/control-panel/
|
1099 |
-
msgid "
|
1100 |
msgstr ""
|
1101 |
|
1102 |
-
#: includes/control-panel/
|
1103 |
-
msgid "
|
1104 |
msgstr ""
|
1105 |
|
1106 |
-
#: includes/control-panel/
|
1107 |
-
msgid "
|
1108 |
msgstr ""
|
1109 |
|
1110 |
-
#: includes/control-panel/
|
1111 |
-
msgid "
|
1112 |
msgstr ""
|
1113 |
|
1114 |
-
#: includes/control-panel/
|
1115 |
-
msgid "
|
1116 |
msgstr ""
|
1117 |
|
1118 |
-
#: includes/control-panel/
|
1119 |
-
msgid "
|
1120 |
msgstr ""
|
1121 |
|
1122 |
-
#: includes/control-panel/
|
1123 |
-
msgid "
|
1124 |
msgstr ""
|
1125 |
|
1126 |
-
#: includes/control-panel/
|
1127 |
-
msgid "
|
1128 |
msgstr ""
|
1129 |
|
1130 |
-
#: includes/control-panel/
|
1131 |
-
msgid "
|
1132 |
msgstr ""
|
1133 |
|
1134 |
-
#: includes/control-panel/
|
1135 |
-
msgid "
|
1136 |
msgstr ""
|
1137 |
|
1138 |
-
#: includes/control-panel/
|
1139 |
-
msgid "
|
1140 |
msgstr ""
|
1141 |
|
1142 |
-
#: includes/control-panel/
|
1143 |
-
msgid "
|
1144 |
msgstr ""
|
1145 |
|
1146 |
-
#: includes/control-panel/
|
1147 |
-
msgid "
|
1148 |
msgstr ""
|
1149 |
|
1150 |
-
#: includes/control-panel/views/
|
1151 |
-
msgid "
|
1152 |
msgstr ""
|
1153 |
|
1154 |
-
#: includes/control-panel/views/
|
1155 |
-
msgid "
|
1156 |
msgstr ""
|
1157 |
|
1158 |
-
#: includes/control-panel/views/
|
1159 |
-
msgid "
|
1160 |
msgstr ""
|
1161 |
|
1162 |
-
#: includes/control-panel/views/
|
1163 |
-
msgid "
|
1164 |
msgstr ""
|
1165 |
|
1166 |
-
#: includes/control-panel/views/
|
1167 |
-
msgid "
|
1168 |
msgstr ""
|
1169 |
|
1170 |
-
#: includes/control-panel/views/
|
1171 |
-
msgid "
|
1172 |
msgstr ""
|
1173 |
|
1174 |
-
#: includes/control-panel/views/
|
1175 |
-
msgid "
|
1176 |
msgstr ""
|
1177 |
|
1178 |
-
#: includes/control-panel/views/
|
1179 |
-
msgid "
|
1180 |
msgstr ""
|
1181 |
|
1182 |
-
#: includes/control-panel/views/
|
1183 |
-
msgid "
|
1184 |
msgstr ""
|
1185 |
|
1186 |
-
#: includes/control-panel/views/
|
1187 |
-
msgid "
|
1188 |
msgstr ""
|
1189 |
|
1190 |
-
#: includes/control-panel/views/
|
1191 |
-
msgid "
|
1192 |
msgstr ""
|
1193 |
|
1194 |
-
#: includes/control-panel/views/
|
1195 |
-
msgid "
|
1196 |
msgstr ""
|
1197 |
|
1198 |
-
#: includes/control-panel/views/
|
1199 |
-
msgid "
|
1200 |
msgstr ""
|
1201 |
|
1202 |
-
#: includes/control-panel/views/
|
1203 |
-
msgid "
|
1204 |
msgstr ""
|
1205 |
|
1206 |
-
#: includes/control-panel/views/
|
1207 |
-
msgid "
|
1208 |
msgstr ""
|
1209 |
|
1210 |
-
#: includes/control-panel/views/
|
1211 |
-
msgid "
|
1212 |
msgstr ""
|
1213 |
|
1214 |
-
#: includes/control-panel/views/
|
1215 |
-
msgid "
|
1216 |
msgstr ""
|
1217 |
|
1218 |
-
#: includes/control-panel/views/
|
1219 |
-
msgid "
|
1220 |
msgstr ""
|
1221 |
|
1222 |
-
#: includes/control-panel/views/
|
1223 |
-
msgid "
|
1224 |
msgstr ""
|
1225 |
|
1226 |
-
#: includes/control-panel/views/
|
1227 |
-
msgid "
|
1228 |
msgstr ""
|
1229 |
|
1230 |
-
#: includes/control-panel/views/
|
1231 |
-
msgid "
|
1232 |
msgstr ""
|
1233 |
|
1234 |
-
#: includes/control-panel/views/
|
1235 |
-
msgid "
|
1236 |
msgstr ""
|
1237 |
|
1238 |
-
#: includes/control-panel/views/
|
1239 |
-
msgid "
|
1240 |
msgstr ""
|
1241 |
|
1242 |
-
#: includes/control-panel/views/
|
1243 |
-
msgid "
|
1244 |
msgstr ""
|
1245 |
|
1246 |
-
#: includes/control-panel/views/
|
1247 |
-
msgid "
|
1248 |
msgstr ""
|
1249 |
|
1250 |
-
#: includes/control-panel/views/
|
1251 |
-
msgid "
|
1252 |
msgstr ""
|
1253 |
|
1254 |
-
#: includes/control-panel/views/
|
1255 |
-
msgid "
|
1256 |
msgstr ""
|
1257 |
|
1258 |
-
#: includes/control-panel/views/
|
1259 |
-
msgid "
|
1260 |
msgstr ""
|
1261 |
|
1262 |
-
#: includes/control-panel/views/
|
1263 |
-
msgid "
|
1264 |
msgstr ""
|
1265 |
|
1266 |
-
#: includes/control-panel/views/
|
1267 |
-
msgid "
|
1268 |
msgstr ""
|
1269 |
|
1270 |
-
#: includes/control-panel/views/
|
1271 |
-
msgid "
|
1272 |
msgstr ""
|
1273 |
|
1274 |
-
#: includes/control-panel/views/
|
1275 |
-
|
|
|
1276 |
msgstr ""
|
1277 |
|
1278 |
-
#: includes/
|
1279 |
-
msgid "
|
1280 |
msgstr ""
|
1281 |
|
1282 |
-
#: includes/
|
1283 |
-
msgid "
|
1284 |
msgstr ""
|
1285 |
|
1286 |
-
#: includes/
|
1287 |
-
msgid "
|
1288 |
msgstr ""
|
1289 |
|
1290 |
-
#: includes/
|
1291 |
-
msgid "
|
1292 |
msgstr ""
|
1293 |
|
1294 |
-
#: includes/
|
1295 |
-
msgid "
|
1296 |
msgstr ""
|
1297 |
|
1298 |
-
#: includes/
|
1299 |
-
msgid "
|
1300 |
msgstr ""
|
1301 |
|
1302 |
-
#: includes/
|
1303 |
-
msgid "
|
1304 |
msgstr ""
|
1305 |
|
1306 |
-
#: includes/
|
1307 |
-
msgid "
|
1308 |
msgstr ""
|
1309 |
|
1310 |
-
#: includes/
|
1311 |
-
msgid "
|
1312 |
msgstr ""
|
1313 |
|
1314 |
-
#: includes/
|
1315 |
-
msgid "
|
1316 |
msgstr ""
|
1317 |
|
1318 |
-
#: includes/
|
1319 |
-
msgid "
|
1320 |
msgstr ""
|
1321 |
|
1322 |
-
#: includes/
|
1323 |
-
msgid "
|
1324 |
msgstr ""
|
1325 |
|
1326 |
-
#: includes/
|
1327 |
-
msgid "
|
1328 |
msgstr ""
|
1329 |
|
1330 |
-
#: includes/
|
1331 |
-
msgid "
|
1332 |
msgstr ""
|
1333 |
|
1334 |
-
#: includes/control
|
1335 |
-
msgid "
|
1336 |
msgstr ""
|
1337 |
|
1338 |
-
#: includes/control
|
1339 |
-
msgid "
|
1340 |
msgstr ""
|
1341 |
|
1342 |
-
#: includes/control
|
1343 |
-
msgid "
|
1344 |
msgstr ""
|
1345 |
|
1346 |
-
#: includes/control-
|
1347 |
-
msgid "
|
1348 |
msgstr ""
|
1349 |
|
1350 |
-
#: includes/control-
|
1351 |
-
msgid "
|
1352 |
msgstr ""
|
1353 |
|
1354 |
-
#: includes/control
|
1355 |
-
msgid "
|
1356 |
msgstr ""
|
1357 |
|
1358 |
-
#: includes/control
|
1359 |
-
msgid "
|
1360 |
msgstr ""
|
1361 |
|
1362 |
-
#: includes/control
|
1363 |
-
msgid "
|
1364 |
msgstr ""
|
1365 |
|
1366 |
-
#: includes/control
|
1367 |
-
msgid "
|
1368 |
msgstr ""
|
1369 |
|
1370 |
-
#: includes/control
|
1371 |
-
msgid "
|
1372 |
msgstr ""
|
1373 |
|
1374 |
-
#: includes/control
|
1375 |
-
msgid "
|
1376 |
msgstr ""
|
1377 |
|
1378 |
-
#: includes/control
|
1379 |
-
msgid "
|
1380 |
msgstr ""
|
1381 |
|
1382 |
-
#: includes/control
|
1383 |
-
msgid "
|
1384 |
msgstr ""
|
1385 |
|
1386 |
-
#: includes/control
|
1387 |
-
msgid "
|
1388 |
msgstr ""
|
1389 |
|
1390 |
-
#: includes/control-
|
1391 |
-
msgid "
|
1392 |
msgstr ""
|
1393 |
|
1394 |
-
#: includes/control
|
1395 |
-
msgid "
|
1396 |
msgstr ""
|
1397 |
|
1398 |
-
#: includes/control
|
1399 |
-
msgid "
|
1400 |
msgstr ""
|
1401 |
|
1402 |
-
#: includes/control-
|
1403 |
-
msgid "
|
1404 |
msgstr ""
|
1405 |
|
1406 |
-
#: includes/control
|
1407 |
-
msgid "
|
1408 |
msgstr ""
|
1409 |
|
1410 |
-
#: includes/control
|
1411 |
-
msgid "
|
1412 |
msgstr ""
|
1413 |
|
1414 |
-
#: includes/control
|
1415 |
-
msgid "
|
1416 |
msgstr ""
|
1417 |
|
1418 |
-
#: includes/control-
|
1419 |
-
msgid "
|
1420 |
msgstr ""
|
1421 |
|
1422 |
-
#: includes/control
|
1423 |
-
msgid "
|
1424 |
msgstr ""
|
1425 |
|
1426 |
-
#: includes/control
|
1427 |
-
msgid "
|
1428 |
msgstr ""
|
1429 |
|
1430 |
-
#: includes/control
|
1431 |
-
msgid "
|
1432 |
msgstr ""
|
1433 |
|
1434 |
-
#: includes/control
|
1435 |
-
msgid "
|
1436 |
msgstr ""
|
1437 |
|
1438 |
-
#: includes/control
|
1439 |
-
msgid "
|
1440 |
msgstr ""
|
1441 |
|
1442 |
-
#: includes/
|
1443 |
-
msgid "
|
1444 |
msgstr ""
|
1445 |
|
1446 |
-
#: includes/
|
1447 |
-
msgid "
|
1448 |
msgstr ""
|
1449 |
|
1450 |
-
#: includes/control-
|
1451 |
-
msgid "
|
1452 |
msgstr ""
|
1453 |
|
1454 |
-
#: includes/control-
|
1455 |
-
msgid "
|
1456 |
msgstr ""
|
1457 |
|
1458 |
-
#: includes/control
|
1459 |
-
msgid "
|
1460 |
msgstr ""
|
1461 |
|
1462 |
-
#: includes/control
|
1463 |
-
msgid "
|
1464 |
msgstr ""
|
1465 |
|
1466 |
-
#: includes/control
|
1467 |
-
msgid "
|
1468 |
msgstr ""
|
1469 |
|
1470 |
-
#: includes/control
|
1471 |
-
msgid "
|
1472 |
msgstr ""
|
1473 |
|
1474 |
-
#: includes/control-
|
1475 |
-
msgid "
|
1476 |
msgstr ""
|
1477 |
|
1478 |
-
#: includes/control
|
1479 |
-
msgid "
|
1480 |
msgstr ""
|
1481 |
|
1482 |
-
#: includes/control
|
1483 |
-
msgid "
|
1484 |
msgstr ""
|
1485 |
|
1486 |
-
#: includes/control
|
1487 |
-
msgid "
|
1488 |
msgstr ""
|
1489 |
|
1490 |
-
#: includes/control
|
1491 |
-
msgid "
|
1492 |
msgstr ""
|
1493 |
|
1494 |
-
#: includes/control
|
1495 |
-
msgid "
|
1496 |
msgstr ""
|
1497 |
|
1498 |
-
#: includes/control
|
1499 |
-
msgid "
|
1500 |
msgstr ""
|
1501 |
|
1502 |
-
#: includes/control
|
1503 |
-
msgid "
|
1504 |
msgstr ""
|
1505 |
|
1506 |
-
#: includes/control
|
1507 |
-
msgid "
|
1508 |
msgstr ""
|
1509 |
|
1510 |
-
#: includes/control
|
1511 |
-
msgid "
|
1512 |
msgstr ""
|
1513 |
|
1514 |
-
#: includes/control
|
1515 |
-
msgid "
|
1516 |
msgstr ""
|
1517 |
|
1518 |
-
#: includes/control
|
1519 |
-
msgid "
|
1520 |
msgstr ""
|
1521 |
|
1522 |
-
#: includes/control
|
1523 |
-
msgid "
|
1524 |
msgstr ""
|
1525 |
|
1526 |
-
#: includes/control
|
1527 |
-
msgid "
|
1528 |
msgstr ""
|
1529 |
|
1530 |
-
#: includes/control
|
1531 |
-
msgid "
|
1532 |
msgstr ""
|
1533 |
|
1534 |
-
#: includes/control
|
1535 |
-
msgid "
|
1536 |
msgstr ""
|
1537 |
|
1538 |
-
#: includes/control
|
1539 |
-
msgid "
|
1540 |
msgstr ""
|
1541 |
|
1542 |
-
#: includes/
|
1543 |
-
msgid "
|
1544 |
msgstr ""
|
1545 |
|
1546 |
-
#: includes/
|
1547 |
-
msgid "
|
1548 |
msgstr ""
|
1549 |
|
1550 |
-
#: includes/
|
1551 |
-
msgid "
|
1552 |
msgstr ""
|
1553 |
|
1554 |
-
#: includes/
|
1555 |
-
msgid "
|
1556 |
msgstr ""
|
1557 |
|
1558 |
-
#: includes/
|
1559 |
-
msgid "
|
1560 |
msgstr ""
|
1561 |
|
1562 |
-
#: includes/
|
1563 |
-
msgid "
|
1564 |
msgstr ""
|
1565 |
|
1566 |
-
#: includes/
|
1567 |
-
msgid "
|
1568 |
msgstr ""
|
1569 |
|
1570 |
-
#: includes/
|
1571 |
-
msgid "
|
1572 |
msgstr ""
|
1573 |
|
1574 |
-
#: includes/
|
1575 |
-
msgid "
|
1576 |
msgstr ""
|
1577 |
|
1578 |
-
#: includes/
|
1579 |
-
msgid "
|
1580 |
msgstr ""
|
1581 |
|
1582 |
-
#: includes/
|
1583 |
-
msgid "
|
1584 |
msgstr ""
|
1585 |
|
1586 |
-
#: includes/
|
1587 |
-
msgid "
|
1588 |
msgstr ""
|
1589 |
|
1590 |
-
#: includes/
|
1591 |
-
msgid "
|
1592 |
msgstr ""
|
1593 |
|
1594 |
-
#: includes/
|
1595 |
-
msgid "
|
1596 |
msgstr ""
|
1597 |
|
1598 |
-
#: includes/
|
1599 |
-
msgid "
|
1600 |
msgstr ""
|
1601 |
|
1602 |
-
#: includes/
|
1603 |
-
msgid "
|
1604 |
msgstr ""
|
1605 |
|
1606 |
-
#: includes/
|
1607 |
-
msgid "
|
1608 |
msgstr ""
|
1609 |
|
1610 |
-
#: includes/
|
1611 |
-
msgid "
|
1612 |
msgstr ""
|
1613 |
|
1614 |
-
#: includes/
|
1615 |
-
msgid "
|
1616 |
msgstr ""
|
1617 |
|
1618 |
-
#: includes/
|
1619 |
-
msgid "
|
1620 |
msgstr ""
|
1621 |
|
1622 |
-
#: includes/
|
1623 |
-
msgid "
|
1624 |
msgstr ""
|
1625 |
|
1626 |
-
#: includes/
|
1627 |
-
msgid "
|
1628 |
msgstr ""
|
1629 |
|
1630 |
-
#: includes/
|
1631 |
-
msgid "
|
1632 |
msgstr ""
|
1633 |
|
1634 |
-
#: includes/
|
1635 |
-
msgid "
|
1636 |
msgstr ""
|
1637 |
|
1638 |
-
#: includes/
|
1639 |
-
msgid "
|
1640 |
msgstr ""
|
1641 |
|
1642 |
-
#: includes/
|
1643 |
-
msgid "
|
1644 |
msgstr ""
|
1645 |
|
1646 |
-
#: includes/
|
1647 |
-
msgid "
|
1648 |
msgstr ""
|
1649 |
|
1650 |
-
#: includes/
|
1651 |
-
msgid "
|
1652 |
msgstr ""
|
1653 |
|
1654 |
-
#: includes/
|
1655 |
-
msgid "
|
1656 |
msgstr ""
|
1657 |
|
1658 |
-
#: includes/
|
1659 |
-
msgid "
|
1660 |
msgstr ""
|
1661 |
|
1662 |
-
#: includes/
|
1663 |
-
msgid "
|
1664 |
msgstr ""
|
1665 |
|
1666 |
-
#: includes/
|
1667 |
-
msgid "
|
1668 |
msgstr ""
|
1669 |
|
1670 |
-
#: includes/
|
1671 |
-
msgid "
|
1672 |
msgstr ""
|
1673 |
|
1674 |
-
#: includes/
|
1675 |
-
msgid "
|
1676 |
msgstr ""
|
1677 |
|
1678 |
-
#: includes/
|
1679 |
-
msgid "
|
1680 |
msgstr ""
|
1681 |
|
1682 |
-
#: includes/
|
1683 |
-
msgid "
|
1684 |
msgstr ""
|
1685 |
|
1686 |
-
#: includes/
|
1687 |
-
msgid "
|
1688 |
msgstr ""
|
1689 |
|
1690 |
-
#: includes/
|
1691 |
-
msgid "
|
1692 |
msgstr ""
|
1693 |
|
1694 |
-
#: includes/
|
1695 |
-
msgid "
|
1696 |
msgstr ""
|
1697 |
|
1698 |
-
#: includes/
|
1699 |
-
msgid "
|
1700 |
msgstr ""
|
1701 |
|
1702 |
-
#: includes/
|
1703 |
-
msgid "
|
1704 |
msgstr ""
|
1705 |
|
1706 |
-
#: includes/
|
1707 |
-
msgid "
|
1708 |
msgstr ""
|
1709 |
|
1710 |
-
#: includes/
|
1711 |
-
msgid "
|
1712 |
msgstr ""
|
1713 |
|
1714 |
-
#: includes/
|
1715 |
-
msgid "
|
1716 |
msgstr ""
|
1717 |
|
1718 |
-
#: includes/
|
1719 |
-
msgid "
|
1720 |
msgstr ""
|
1721 |
|
1722 |
-
#: includes/
|
1723 |
-
msgid "
|
1724 |
msgstr ""
|
1725 |
|
1726 |
-
#: includes/
|
1727 |
-
msgid "
|
1728 |
msgstr ""
|
1729 |
|
1730 |
-
#: includes/
|
1731 |
-
msgid "
|
1732 |
msgstr ""
|
1733 |
|
1734 |
-
#: includes/
|
1735 |
-
msgid "
|
1736 |
msgstr ""
|
1737 |
|
1738 |
-
#: includes/
|
1739 |
-
msgid "
|
1740 |
msgstr ""
|
1741 |
|
1742 |
-
#: includes/
|
1743 |
-
msgid "
|
1744 |
msgstr ""
|
1745 |
|
1746 |
-
#: includes/
|
1747 |
-
msgid "
|
1748 |
msgstr ""
|
1749 |
|
1750 |
-
#: includes/
|
1751 |
-
msgid "
|
1752 |
msgstr ""
|
1753 |
|
1754 |
-
#: includes/
|
1755 |
-
msgid "
|
1756 |
msgstr ""
|
1757 |
|
1758 |
-
#: includes/
|
1759 |
-
msgid "
|
1760 |
msgstr ""
|
1761 |
|
1762 |
-
#: includes/
|
1763 |
-
msgid "
|
1764 |
msgstr ""
|
1765 |
|
1766 |
-
#: includes/
|
1767 |
-
msgid "
|
1768 |
msgstr ""
|
1769 |
|
1770 |
-
#: includes/
|
1771 |
-
msgid "
|
1772 |
msgstr ""
|
1773 |
|
1774 |
-
#: includes/
|
1775 |
-
msgid "
|
1776 |
msgstr ""
|
1777 |
|
1778 |
-
#: includes/
|
1779 |
-
msgid "
|
1780 |
msgstr ""
|
1781 |
|
1782 |
-
#: includes/
|
1783 |
-
msgid "
|
1784 |
msgstr ""
|
1785 |
|
1786 |
-
#: includes/
|
1787 |
-
msgid "
|
1788 |
msgstr ""
|
1789 |
|
1790 |
-
#: includes/
|
1791 |
-
msgid "
|
1792 |
msgstr ""
|
1793 |
|
1794 |
-
#: includes/
|
1795 |
-
msgid "
|
1796 |
msgstr ""
|
1797 |
|
1798 |
-
#: includes/
|
1799 |
-
msgid "
|
1800 |
msgstr ""
|
1801 |
|
1802 |
-
#: includes/
|
1803 |
-
msgid "
|
1804 |
msgstr ""
|
1805 |
|
1806 |
-
#: includes/
|
1807 |
-
msgid "
|
1808 |
msgstr ""
|
1809 |
|
1810 |
-
#: includes/
|
1811 |
-
msgid "
|
1812 |
msgstr ""
|
1813 |
|
1814 |
-
#: includes/
|
1815 |
-
|
1816 |
-
msgid "by %s"
|
1817 |
msgstr ""
|
1818 |
|
1819 |
-
#: includes/customizer/settings/settings.php:
|
1820 |
-
msgid "
|
1821 |
msgstr ""
|
1822 |
|
1823 |
-
#: includes/customizer/settings/settings.php:
|
1824 |
-
msgid "
|
1825 |
msgstr ""
|
1826 |
|
1827 |
-
#: includes/customizer/settings/settings.php:
|
1828 |
-
msgid "
|
1829 |
msgstr ""
|
1830 |
|
1831 |
-
#: includes/customizer/settings/settings.php:
|
1832 |
-
msgid "
|
1833 |
msgstr ""
|
1834 |
|
1835 |
-
#: includes/customizer/settings/
|
1836 |
-
msgid "
|
1837 |
msgstr ""
|
1838 |
|
1839 |
-
#: includes/
|
1840 |
-
msgid "
|
1841 |
msgstr ""
|
1842 |
|
1843 |
-
#: includes/
|
1844 |
-
msgid "
|
1845 |
msgstr ""
|
1846 |
|
1847 |
-
#: includes/
|
1848 |
-
msgid "
|
1849 |
msgstr ""
|
1850 |
|
1851 |
-
#: includes/
|
1852 |
-
|
1853 |
-
msgid "M jS"
|
1854 |
msgstr ""
|
1855 |
|
1856 |
-
#: includes/
|
1857 |
-
msgid "
|
1858 |
msgstr ""
|
1859 |
|
1860 |
-
#: includes/
|
1861 |
-
msgid "
|
1862 |
msgstr ""
|
1863 |
|
1864 |
-
#: includes/
|
1865 |
-
msgid "
|
1866 |
msgstr ""
|
1867 |
|
1868 |
-
#: includes/
|
1869 |
-
msgid "
|
1870 |
msgstr ""
|
1871 |
|
1872 |
-
#: includes/
|
1873 |
-
msgid "
|
1874 |
msgstr ""
|
1875 |
|
1876 |
-
#: includes/
|
1877 |
-
msgid "
|
1878 |
msgstr ""
|
1879 |
|
1880 |
-
#: includes/
|
1881 |
-
msgid "
|
1882 |
msgstr ""
|
1883 |
|
1884 |
-
#: includes/
|
1885 |
-
msgid "
|
1886 |
msgstr ""
|
1887 |
|
1888 |
-
#: includes/
|
1889 |
-
msgid "
|
1890 |
msgstr ""
|
1891 |
|
1892 |
-
#: includes/
|
1893 |
-
msgid "
|
1894 |
msgstr ""
|
1895 |
|
1896 |
-
#: includes/
|
1897 |
-
msgid "
|
1898 |
msgstr ""
|
1899 |
|
1900 |
-
#: includes/
|
1901 |
-
msgid "
|
1902 |
msgstr ""
|
1903 |
|
1904 |
-
#: includes/
|
1905 |
-
msgid "
|
1906 |
msgstr ""
|
1907 |
|
1908 |
-
#: includes/
|
1909 |
-
msgid "
|
1910 |
msgstr ""
|
1911 |
|
1912 |
-
#: includes/
|
1913 |
-
msgid "
|
1914 |
msgstr ""
|
1915 |
|
1916 |
-
#: includes/
|
1917 |
-
msgid "
|
1918 |
msgstr ""
|
1919 |
|
1920 |
-
#: includes/
|
1921 |
-
msgid "
|
1922 |
msgstr ""
|
1923 |
|
1924 |
-
#: includes/
|
1925 |
-
msgid "
|
1926 |
msgstr ""
|
1927 |
|
1928 |
-
#: includes/
|
1929 |
-
msgid "
|
1930 |
msgstr ""
|
1931 |
|
1932 |
-
#: includes/
|
1933 |
-
msgid "
|
1934 |
msgstr ""
|
1935 |
|
1936 |
-
#: includes/
|
1937 |
-
msgid "
|
1938 |
msgstr ""
|
1939 |
|
1940 |
-
#: includes/
|
1941 |
-
msgid "
|
1942 |
msgstr ""
|
1943 |
|
1944 |
-
#: includes/
|
1945 |
-
msgid "
|
1946 |
msgstr ""
|
1947 |
|
1948 |
-
#: includes/
|
1949 |
-
msgid "
|
1950 |
msgstr ""
|
1951 |
|
1952 |
-
#: includes/
|
1953 |
-
msgid "
|
1954 |
msgstr ""
|
1955 |
|
1956 |
-
#: includes/
|
1957 |
-
msgid "
|
1958 |
msgstr ""
|
1959 |
|
1960 |
-
#: includes/
|
1961 |
-
msgid "
|
1962 |
msgstr ""
|
1963 |
|
1964 |
-
#: includes/
|
1965 |
-
msgid "
|
1966 |
msgstr ""
|
1967 |
|
1968 |
-
#: includes/
|
1969 |
-
msgid "
|
1970 |
msgstr ""
|
1971 |
|
1972 |
-
#: includes/
|
1973 |
-
msgid "
|
1974 |
msgstr ""
|
1975 |
|
1976 |
-
#: includes/
|
1977 |
-
msgid "
|
1978 |
msgstr ""
|
1979 |
|
1980 |
-
#: includes/
|
1981 |
-
msgid "
|
1982 |
msgstr ""
|
1983 |
|
1984 |
-
#: includes/
|
1985 |
-
msgid "
|
1986 |
msgstr ""
|
1987 |
|
1988 |
-
#: includes/
|
1989 |
-
msgid "
|
1990 |
msgstr ""
|
1991 |
|
1992 |
-
#: includes/
|
1993 |
-
msgid "
|
1994 |
msgstr ""
|
1995 |
|
1996 |
-
#: includes/
|
1997 |
-
msgid "
|
1998 |
msgstr ""
|
1999 |
|
2000 |
-
#: includes/
|
2001 |
-
msgid "
|
2002 |
msgstr ""
|
2003 |
|
2004 |
-
#: includes/
|
2005 |
-
msgid "
|
2006 |
msgstr ""
|
2007 |
|
2008 |
-
#: includes/
|
2009 |
-
msgid "
|
2010 |
msgstr ""
|
2011 |
|
2012 |
-
#: includes/
|
2013 |
-
msgid "
|
2014 |
msgstr ""
|
2015 |
|
2016 |
-
#: includes/
|
2017 |
-
msgid "
|
2018 |
msgstr ""
|
2019 |
|
2020 |
-
#: includes/
|
2021 |
-
msgid "
|
2022 |
msgstr ""
|
2023 |
|
2024 |
-
#: includes/customizer/
|
2025 |
-
msgid "
|
2026 |
msgstr ""
|
2027 |
|
2028 |
-
#: includes/customizer/
|
2029 |
-
msgid "
|
2030 |
msgstr ""
|
2031 |
|
2032 |
-
#: includes/customizer/
|
2033 |
-
msgid "
|
2034 |
msgstr ""
|
2035 |
|
2036 |
-
#: includes/customizer/
|
2037 |
-
msgid "
|
2038 |
msgstr ""
|
2039 |
|
2040 |
-
#: includes/customizer/
|
2041 |
-
msgid "
|
2042 |
msgstr ""
|
2043 |
|
2044 |
-
#: includes/customizer/
|
2045 |
-
msgid "
|
2046 |
msgstr ""
|
2047 |
|
2048 |
-
#: includes/customizer/
|
2049 |
-
msgid "
|
2050 |
msgstr ""
|
2051 |
|
2052 |
-
#: includes/customizer/
|
2053 |
-
msgid "
|
2054 |
msgstr ""
|
2055 |
|
2056 |
-
#: includes/customizer/
|
2057 |
-
msgid "
|
2058 |
msgstr ""
|
2059 |
|
2060 |
-
#: includes/customizer/
|
2061 |
-
msgid "
|
2062 |
msgstr ""
|
2063 |
|
2064 |
-
#: includes/customizer/
|
2065 |
-
msgid "
|
2066 |
msgstr ""
|
2067 |
|
2068 |
-
#: includes/customizer/
|
2069 |
-
msgid "
|
2070 |
msgstr ""
|
2071 |
|
2072 |
-
#: includes/customizer/
|
2073 |
-
msgid "
|
2074 |
msgstr ""
|
2075 |
|
2076 |
-
#: includes/customizer/settings/
|
2077 |
-
msgid "
|
2078 |
msgstr ""
|
2079 |
|
2080 |
-
#: includes/customizer/settings/
|
2081 |
-
msgid "
|
2082 |
msgstr ""
|
2083 |
|
2084 |
-
#: includes/customizer/settings/
|
2085 |
-
msgid "
|
2086 |
msgstr ""
|
2087 |
|
2088 |
-
#: includes/customizer/settings/
|
2089 |
-
msgid "
|
2090 |
msgstr ""
|
2091 |
|
2092 |
-
#: includes/customizer/settings/
|
2093 |
-
msgid "
|
2094 |
msgstr ""
|
2095 |
|
2096 |
-
#: includes/customizer/settings/
|
2097 |
-
msgid "
|
2098 |
msgstr ""
|
2099 |
|
2100 |
-
#: includes/customizer/settings/
|
2101 |
-
msgid "
|
2102 |
msgstr ""
|
2103 |
|
2104 |
-
#: includes/customizer/settings/
|
2105 |
-
msgid "
|
2106 |
msgstr ""
|
2107 |
|
2108 |
-
#: includes/customizer/settings/
|
2109 |
-
msgid "
|
2110 |
msgstr ""
|
2111 |
|
2112 |
-
#: includes/customizer/settings/
|
2113 |
-
msgid "
|
2114 |
msgstr ""
|
2115 |
|
2116 |
-
#: includes/customizer/settings/
|
2117 |
-
msgid "
|
2118 |
msgstr ""
|
2119 |
|
2120 |
-
#: includes/customizer/settings/
|
2121 |
-
msgid "
|
2122 |
msgstr ""
|
2123 |
|
2124 |
-
#: includes/customizer/settings/
|
2125 |
-
msgid "
|
2126 |
msgstr ""
|
2127 |
|
2128 |
-
#: includes/customizer/settings/
|
2129 |
-
msgid "
|
2130 |
msgstr ""
|
2131 |
|
2132 |
-
#: includes/customizer/settings/
|
2133 |
-
msgid "
|
2134 |
msgstr ""
|
2135 |
|
2136 |
-
#: includes/customizer/settings/
|
2137 |
-
msgid "
|
2138 |
msgstr ""
|
2139 |
|
2140 |
-
#: includes/customizer/settings/
|
2141 |
-
msgid "
|
2142 |
msgstr ""
|
2143 |
|
2144 |
-
#: includes/customizer/settings/
|
2145 |
-
msgid "
|
2146 |
msgstr ""
|
2147 |
|
2148 |
-
#: includes/customizer/settings/
|
2149 |
-
msgid "
|
2150 |
msgstr ""
|
2151 |
|
2152 |
-
#: includes/customizer/settings/
|
2153 |
-
msgid "Post
|
2154 |
msgstr ""
|
2155 |
|
2156 |
-
#: includes/customizer/settings/
|
2157 |
-
msgid "
|
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/
|
2165 |
-
msgid "
|
2166 |
msgstr ""
|
2167 |
|
2168 |
-
#: includes/customizer/settings/
|
2169 |
-
msgid "
|
2170 |
msgstr ""
|
2171 |
|
2172 |
-
#: includes/customizer/settings/
|
2173 |
-
msgid "
|
2174 |
msgstr ""
|
2175 |
|
2176 |
-
#: includes/customizer/settings/
|
2177 |
-
msgid "
|
2178 |
msgstr ""
|
2179 |
|
2180 |
-
#: includes/customizer/settings/
|
2181 |
-
msgid "
|
2182 |
msgstr ""
|
2183 |
|
2184 |
-
#: includes/customizer/settings/
|
2185 |
-
msgid "
|
2186 |
msgstr ""
|
2187 |
|
2188 |
-
#: includes/customizer/settings/
|
2189 |
-
msgid "
|
2190 |
msgstr ""
|
2191 |
|
2192 |
-
#: includes/customizer/settings/
|
2193 |
-
msgid "
|
2194 |
msgstr ""
|
2195 |
|
2196 |
-
#: includes/customizer/settings/
|
2197 |
-
msgid "
|
2198 |
msgstr ""
|
2199 |
|
2200 |
-
#: includes/customizer/settings/
|
2201 |
-
msgid "
|
2202 |
msgstr ""
|
2203 |
|
2204 |
-
#: includes/customizer/settings/
|
2205 |
-
msgid "
|
2206 |
msgstr ""
|
2207 |
|
2208 |
-
#: includes/customizer/settings/
|
2209 |
-
msgid "
|
2210 |
msgstr ""
|
2211 |
|
2212 |
-
#: includes/customizer/settings/
|
2213 |
-
msgid "
|
2214 |
msgstr ""
|
2215 |
|
2216 |
-
#: includes/customizer/settings/
|
2217 |
-
msgid "
|
2218 |
msgstr ""
|
2219 |
|
2220 |
-
#: includes/customizer/settings/
|
2221 |
-
msgid "
|
2222 |
msgstr ""
|
2223 |
|
2224 |
-
#: includes/customizer/settings/
|
2225 |
-
msgid "
|
2226 |
msgstr ""
|
2227 |
|
2228 |
-
#: includes/customizer/settings/
|
2229 |
-
msgid "
|
2230 |
msgstr ""
|
2231 |
|
2232 |
-
#: includes/customizer/settings/
|
2233 |
-
msgid "
|
2234 |
msgstr ""
|
2235 |
|
2236 |
-
#: includes/customizer/settings/
|
2237 |
-
msgid "
|
2238 |
msgstr ""
|
2239 |
|
2240 |
-
#: includes/customizer/settings/
|
2241 |
-
msgid "
|
2242 |
msgstr ""
|
2243 |
|
2244 |
-
#: includes/customizer/settings/
|
2245 |
-
msgid "
|
2246 |
msgstr ""
|
2247 |
|
2248 |
-
#: includes/customizer/settings/
|
2249 |
-
msgid "
|
2250 |
msgstr ""
|
2251 |
|
2252 |
-
#: includes/customizer/settings/
|
2253 |
-
msgid "
|
2254 |
msgstr ""
|
2255 |
|
2256 |
-
#: includes/customizer/settings/
|
2257 |
-
msgid "
|
2258 |
msgstr ""
|
2259 |
|
2260 |
-
#: includes/customizer/settings/
|
2261 |
-
msgid "
|
2262 |
msgstr ""
|
2263 |
|
2264 |
-
#: includes/customizer/settings/
|
2265 |
-
msgid "
|
2266 |
msgstr ""
|
2267 |
|
2268 |
-
#: includes/customizer/settings/
|
2269 |
-
msgid "
|
2270 |
msgstr ""
|
2271 |
|
2272 |
-
#: includes/customizer/settings/
|
2273 |
-
msgid "
|
2274 |
msgstr ""
|
2275 |
|
2276 |
-
#: includes/customizer/settings/
|
2277 |
-
msgid "
|
2278 |
msgstr ""
|
2279 |
|
2280 |
-
#: includes/customizer/settings/
|
2281 |
-
msgid "
|
2282 |
msgstr ""
|
2283 |
|
2284 |
-
#: includes/customizer/settings/
|
2285 |
-
msgid "
|
2286 |
msgstr ""
|
2287 |
|
2288 |
-
#: includes/customizer/settings/
|
2289 |
-
msgid "
|
2290 |
msgstr ""
|
2291 |
|
2292 |
-
#: includes/customizer/settings/
|
2293 |
-
msgid "
|
2294 |
msgstr ""
|
2295 |
|
2296 |
-
#: includes/customizer/settings/
|
2297 |
-
msgid "
|
2298 |
msgstr ""
|
2299 |
|
2300 |
-
#: includes/customizer/settings/
|
2301 |
-
msgid "
|
2302 |
msgstr ""
|
2303 |
|
2304 |
-
#: includes/customizer/settings/
|
2305 |
-
msgid "
|
2306 |
msgstr ""
|
2307 |
|
2308 |
-
#: includes/customizer/settings/
|
2309 |
-
msgid "
|
2310 |
msgstr ""
|
2311 |
|
2312 |
-
#: includes/customizer/settings/
|
2313 |
-
msgid "
|
2314 |
msgstr ""
|
2315 |
|
2316 |
-
#: includes/customizer/settings/
|
2317 |
-
msgid "
|
2318 |
msgstr ""
|
2319 |
|
2320 |
-
#: includes/customizer/settings/
|
2321 |
-
msgid "
|
2322 |
msgstr ""
|
2323 |
|
2324 |
-
#: includes/customizer/settings/
|
2325 |
-
msgid "
|
2326 |
msgstr ""
|
2327 |
|
2328 |
-
#: includes/customizer/settings/
|
2329 |
-
msgid "
|
2330 |
msgstr ""
|
2331 |
|
2332 |
-
#: includes/customizer/settings/
|
2333 |
-
msgid "
|
2334 |
msgstr ""
|
2335 |
|
2336 |
-
#: includes/
|
2337 |
-
msgid "
|
2338 |
msgstr ""
|
2339 |
|
2340 |
-
#: includes/
|
2341 |
-
msgid "
|
2342 |
msgstr ""
|
2343 |
|
2344 |
-
#: includes/
|
2345 |
-
msgid "
|
2346 |
msgstr ""
|
2347 |
|
2348 |
-
#: includes/
|
2349 |
-
msgid "
|
2350 |
msgstr ""
|
2351 |
|
2352 |
-
#: includes/
|
2353 |
-
msgid "
|
2354 |
msgstr ""
|
2355 |
|
2356 |
-
#: includes/
|
2357 |
-
msgid "
|
2358 |
msgstr ""
|
2359 |
|
2360 |
-
#: includes/
|
2361 |
-
|
|
|
2362 |
msgstr ""
|
2363 |
|
2364 |
-
#: includes/
|
2365 |
-
msgid "
|
2366 |
msgstr ""
|
2367 |
|
2368 |
-
#: includes/
|
2369 |
-
msgid "
|
2370 |
msgstr ""
|
2371 |
|
2372 |
-
#: includes/
|
2373 |
-
msgid "
|
2374 |
msgstr ""
|
2375 |
|
2376 |
-
#: includes/
|
2377 |
-
msgid "
|
2378 |
msgstr ""
|
2379 |
|
2380 |
-
#: includes/
|
2381 |
-
msgid "
|
2382 |
msgstr ""
|
2383 |
|
2384 |
-
#: includes/
|
2385 |
-
msgid "
|
2386 |
msgstr ""
|
2387 |
|
2388 |
-
#: includes/
|
2389 |
-
msgid "
|
2390 |
msgstr ""
|
2391 |
|
2392 |
-
#: includes/
|
2393 |
-
msgid "
|
2394 |
msgstr ""
|
2395 |
|
2396 |
-
#: includes/
|
2397 |
-
|
|
|
2398 |
msgstr ""
|
2399 |
|
2400 |
-
#: includes/
|
2401 |
-
|
|
|
2402 |
msgstr ""
|
2403 |
|
2404 |
-
#: includes/
|
2405 |
-
msgid "
|
2406 |
msgstr ""
|
2407 |
|
2408 |
-
#: includes/
|
2409 |
-
msgid "
|
2410 |
msgstr ""
|
2411 |
|
2412 |
-
#: includes/
|
2413 |
-
msgid "
|
2414 |
msgstr ""
|
2415 |
|
2416 |
-
#: includes/
|
2417 |
-
|
|
|
2418 |
msgstr ""
|
2419 |
|
2420 |
-
#: includes/
|
2421 |
-
|
2422 |
-
|
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/
|
2473 |
-
msgid "
|
2474 |
msgstr ""
|
2475 |
|
2476 |
-
#: includes/
|
2477 |
-
msgid "
|
2478 |
msgstr ""
|
2479 |
|
2480 |
-
#: includes/
|
2481 |
-
msgid "
|
2482 |
msgstr ""
|
2483 |
|
2484 |
-
#: includes/
|
2485 |
-
msgid "
|
2486 |
msgstr ""
|
2487 |
|
2488 |
-
#: includes/
|
2489 |
-
msgid "
|
2490 |
msgstr ""
|
2491 |
|
2492 |
-
#: includes/
|
2493 |
-
msgid "
|
2494 |
msgstr ""
|
2495 |
|
2496 |
-
#: includes/
|
2497 |
-
msgid "
|
2498 |
msgstr ""
|
2499 |
|
2500 |
-
#: includes/
|
2501 |
-
msgid "
|
2502 |
msgstr ""
|
2503 |
|
2504 |
-
#: includes/
|
2505 |
-
msgid "
|
2506 |
msgstr ""
|
2507 |
|
2508 |
-
#: includes/
|
2509 |
-
msgid "
|
2510 |
msgstr ""
|
2511 |
|
2512 |
-
#: includes/
|
2513 |
-
msgid "
|
2514 |
msgstr ""
|
2515 |
|
2516 |
-
#: includes/
|
2517 |
-
msgid "
|
2518 |
msgstr ""
|
2519 |
|
2520 |
-
#: includes/
|
2521 |
-
msgid "
|
2522 |
msgstr ""
|
2523 |
|
2524 |
-
#: includes/
|
2525 |
-
msgid "
|
2526 |
msgstr ""
|
2527 |
|
2528 |
-
#: includes/
|
2529 |
-
msgid "
|
2530 |
msgstr ""
|
2531 |
|
2532 |
-
#: includes/
|
2533 |
-
msgid "
|
2534 |
msgstr ""
|
2535 |
|
2536 |
-
#: includes/
|
2537 |
-
msgid "
|
2538 |
msgstr ""
|
2539 |
|
2540 |
-
#: includes/
|
2541 |
-
|
|
|
2542 |
msgstr ""
|
2543 |
|
2544 |
-
#: includes/
|
2545 |
-
|
|
|
2546 |
msgstr ""
|
2547 |
|
2548 |
-
#: includes/
|
2549 |
-
msgid "
|
2550 |
msgstr ""
|
2551 |
|
2552 |
-
#: includes/
|
2553 |
-
msgid "
|
2554 |
msgstr ""
|
2555 |
|
2556 |
-
#: includes/
|
2557 |
-
msgid "
|
2558 |
msgstr ""
|
2559 |
|
2560 |
-
#: includes/
|
2561 |
-
msgid "
|
2562 |
msgstr ""
|
2563 |
|
2564 |
-
#: includes/
|
2565 |
-
msgid "Add
|
2566 |
msgstr ""
|
2567 |
|
2568 |
-
#: includes/
|
2569 |
-
msgid "
|
2570 |
msgstr ""
|
2571 |
|
2572 |
-
#: includes/
|
2573 |
-
msgid "
|
2574 |
msgstr ""
|
2575 |
|
2576 |
-
#: includes/
|
2577 |
-
msgid "
|
2578 |
msgstr ""
|
2579 |
|
2580 |
-
#: includes/
|
2581 |
-
msgid "
|
2582 |
msgstr ""
|
2583 |
|
2584 |
-
#: includes/
|
2585 |
-
msgid "
|
2586 |
msgstr ""
|
2587 |
|
2588 |
-
#: includes/
|
2589 |
-
msgid "
|
2590 |
msgstr ""
|
2591 |
|
2592 |
-
#: includes/
|
2593 |
-
msgid "
|
2594 |
msgstr ""
|
2595 |
|
2596 |
-
#: includes/
|
2597 |
-
msgid "
|
2598 |
msgstr ""
|
2599 |
|
2600 |
-
#: includes/
|
2601 |
-
msgid "
|
2602 |
msgstr ""
|
2603 |
|
2604 |
-
#: includes/
|
2605 |
-
msgid "
|
2606 |
msgstr ""
|
2607 |
|
2608 |
-
#: includes/
|
2609 |
-
msgid "
|
2610 |
msgstr ""
|
2611 |
|
2612 |
-
#: includes/
|
2613 |
-
msgid "
|
2614 |
msgstr ""
|
2615 |
|
2616 |
-
#: includes/
|
2617 |
-
msgid "
|
2618 |
msgstr ""
|
2619 |
|
2620 |
-
#: includes/
|
2621 |
-
msgid "
|
2622 |
msgstr ""
|
2623 |
|
2624 |
-
#: includes/
|
2625 |
-
msgid "
|
2626 |
msgstr ""
|
2627 |
|
2628 |
-
#: includes/
|
2629 |
-
msgid "
|
2630 |
msgstr ""
|
2631 |
|
2632 |
-
#: includes/
|
2633 |
-
msgid "
|
2634 |
msgstr ""
|
2635 |
|
2636 |
-
#: includes/
|
2637 |
-
msgid "
|
2638 |
msgstr ""
|
2639 |
|
2640 |
-
#: includes/
|
2641 |
-
msgid "
|
2642 |
msgstr ""
|
2643 |
|
2644 |
-
#: includes/
|
2645 |
-
msgid "
|
2646 |
msgstr ""
|
2647 |
|
2648 |
-
#: includes/
|
2649 |
-
msgid "
|
2650 |
msgstr ""
|
2651 |
|
2652 |
-
#: includes/
|
2653 |
-
msgid "
|
2654 |
msgstr ""
|
2655 |
|
2656 |
-
#: includes/
|
2657 |
-
msgid "
|
2658 |
msgstr ""
|
2659 |
|
2660 |
-
#: includes/
|
2661 |
-
msgid "
|
2662 |
msgstr ""
|
2663 |
|
2664 |
-
#: includes/
|
2665 |
-
msgid "
|
2666 |
msgstr ""
|
2667 |
|
2668 |
-
|
2669 |
-
|
|
|
2670 |
msgstr ""
|
2671 |
|
2672 |
-
#: includes/
|
2673 |
-
msgid "
|
2674 |
msgstr ""
|
2675 |
|
2676 |
-
#: includes/
|
2677 |
-
msgid "
|
2678 |
msgstr ""
|
2679 |
|
2680 |
-
#: includes/
|
2681 |
-
msgid "
|
2682 |
msgstr ""
|
2683 |
|
2684 |
-
#: includes/
|
2685 |
-
msgid "
|
2686 |
msgstr ""
|
2687 |
|
2688 |
-
#: includes/
|
2689 |
-
msgid "
|
2690 |
msgstr ""
|
2691 |
|
2692 |
-
#: includes/
|
2693 |
-
msgid "
|
2694 |
msgstr ""
|
2695 |
|
2696 |
-
#: includes/
|
2697 |
-
msgid "
|
2698 |
msgstr ""
|
2699 |
|
2700 |
-
#: includes/
|
2701 |
-
msgid "
|
2702 |
msgstr ""
|
2703 |
|
2704 |
-
#: includes/
|
2705 |
-
msgid "
|
2706 |
msgstr ""
|
2707 |
|
2708 |
-
#: includes/
|
2709 |
-
msgid "
|
2710 |
msgstr ""
|
2711 |
|
2712 |
-
#: includes/
|
2713 |
-
msgid "
|
2714 |
msgstr ""
|
2715 |
|
2716 |
-
#: includes/
|
2717 |
-
msgid "
|
2718 |
msgstr ""
|
2719 |
|
2720 |
-
#: includes/
|
2721 |
-
msgid "
|
2722 |
msgstr ""
|
2723 |
|
2724 |
-
#: includes/
|
2725 |
-
msgid "
|
2726 |
msgstr ""
|
2727 |
|
2728 |
-
#: includes/
|
2729 |
-
msgid "
|
2730 |
msgstr ""
|
2731 |
|
2732 |
-
#: includes/
|
2733 |
-
msgid "
|
2734 |
msgstr ""
|
2735 |
|
2736 |
-
#: includes/
|
2737 |
-
msgid "
|
2738 |
msgstr ""
|
2739 |
|
2740 |
-
#: includes/
|
2741 |
-
msgid "
|
2742 |
msgstr ""
|
2743 |
|
2744 |
-
#: includes/
|
2745 |
-
msgid "
|
2746 |
msgstr ""
|
2747 |
|
2748 |
-
#: includes/
|
2749 |
-
msgid "
|
2750 |
msgstr ""
|
2751 |
|
2752 |
-
#: includes/
|
2753 |
-
msgid "
|
2754 |
msgstr ""
|
2755 |
|
2756 |
-
#: includes/
|
2757 |
-
msgid "
|
2758 |
msgstr ""
|
2759 |
|
2760 |
-
#: includes/
|
2761 |
-
msgid "
|
2762 |
msgstr ""
|
2763 |
|
2764 |
-
#: includes/
|
2765 |
-
msgid "
|
2766 |
msgstr ""
|
2767 |
|
2768 |
-
#: includes/
|
2769 |
-
msgid "
|
2770 |
msgstr ""
|
2771 |
|
2772 |
-
#: includes/
|
2773 |
-
msgid "
|
2774 |
msgstr ""
|
2775 |
|
2776 |
-
#: includes/
|
2777 |
-
msgid "
|
2778 |
msgstr ""
|
2779 |
|
2780 |
-
#: includes/
|
2781 |
-
msgid "
|
2782 |
msgstr ""
|
2783 |
|
2784 |
-
#: includes/
|
2785 |
-
msgid "
|
2786 |
msgstr ""
|
2787 |
|
2788 |
-
#: includes/
|
2789 |
-
msgid "
|
2790 |
msgstr ""
|
2791 |
|
2792 |
-
#: includes/
|
2793 |
-
msgid "
|
2794 |
msgstr ""
|
2795 |
|
2796 |
-
#: includes/
|
2797 |
-
msgid "
|
2798 |
msgstr ""
|
2799 |
|
2800 |
-
#: includes/
|
2801 |
-
msgid "
|
2802 |
msgstr ""
|
2803 |
|
2804 |
-
#: includes/
|
2805 |
-
msgid "
|
2806 |
msgstr ""
|
2807 |
|
2808 |
-
#: includes/
|
2809 |
-
msgid "
|
2810 |
msgstr ""
|
2811 |
|
2812 |
-
#: includes/
|
2813 |
-
msgid "
|
2814 |
msgstr ""
|
2815 |
|
2816 |
-
#: includes/
|
2817 |
-
msgid "
|
2818 |
msgstr ""
|
2819 |
|
2820 |
-
#: includes/
|
2821 |
-
msgid "
|
2822 |
msgstr ""
|
2823 |
|
2824 |
-
#: includes/
|
2825 |
-
msgid "
|
2826 |
msgstr ""
|
2827 |
|
2828 |
-
#: includes/
|
2829 |
-
msgid "
|
2830 |
msgstr ""
|
2831 |
|
2832 |
-
#: includes/
|
2833 |
-
msgid "
|
2834 |
msgstr ""
|
2835 |
|
2836 |
-
#: includes/
|
2837 |
-
msgid "
|
2838 |
msgstr ""
|
2839 |
|
2840 |
-
#: includes/
|
2841 |
-
msgid "
|
2842 |
msgstr ""
|
2843 |
|
2844 |
-
#: includes/
|
2845 |
-
msgid "
|
2846 |
msgstr ""
|
2847 |
|
2848 |
-
#: includes/
|
2849 |
-
msgid "
|
2850 |
msgstr ""
|
2851 |
|
2852 |
-
#: includes/
|
2853 |
-
msgid "
|
2854 |
msgstr ""
|
2855 |
|
2856 |
-
#: includes/
|
2857 |
-
msgid "
|
2858 |
msgstr ""
|
2859 |
|
2860 |
-
#: includes/
|
2861 |
-
msgid "
|
2862 |
msgstr ""
|
2863 |
|
2864 |
-
#: includes/
|
2865 |
-
msgid "
|
2866 |
msgstr ""
|
2867 |
|
2868 |
-
#: includes/
|
2869 |
-
msgid "
|
2870 |
msgstr ""
|
2871 |
|
2872 |
-
#: includes/
|
2873 |
-
msgid "
|
2874 |
msgstr ""
|
2875 |
|
2876 |
-
#: includes/
|
2877 |
-
msgid "
|
2878 |
msgstr ""
|
2879 |
|
2880 |
-
#: includes/
|
2881 |
-
msgid "
|
2882 |
msgstr ""
|
2883 |
|
2884 |
-
#: includes/
|
2885 |
-
msgid "
|
2886 |
msgstr ""
|
2887 |
|
2888 |
-
#: includes/
|
2889 |
-
msgid "
|
2890 |
msgstr ""
|
2891 |
|
2892 |
-
#: includes/
|
2893 |
-
msgid "
|
2894 |
msgstr ""
|
2895 |
|
2896 |
-
#: includes/
|
2897 |
-
msgid "
|
2898 |
msgstr ""
|
2899 |
|
2900 |
-
#: includes/
|
2901 |
-
msgid "
|
2902 |
msgstr ""
|
2903 |
|
2904 |
-
#: includes/
|
2905 |
-
msgid "
|
2906 |
msgstr ""
|
2907 |
|
2908 |
-
#: includes/
|
2909 |
-
msgid "
|
2910 |
msgstr ""
|
2911 |
|
2912 |
-
#: includes/
|
2913 |
-
msgid "
|
2914 |
msgstr ""
|
2915 |
|
2916 |
-
#: includes/
|
2917 |
-
msgid "
|
2918 |
msgstr ""
|
2919 |
|
2920 |
-
#: includes/
|
2921 |
-
msgid "
|
2922 |
msgstr ""
|
2923 |
|
2924 |
-
#: includes/
|
2925 |
-
msgid "
|
2926 |
msgstr ""
|
2927 |
|
2928 |
-
#: includes/
|
2929 |
-
msgid "
|
2930 |
msgstr ""
|
2931 |
|
2932 |
-
#: includes/
|
2933 |
-
msgid "
|
2934 |
msgstr ""
|
2935 |
|
2936 |
-
#: includes/
|
2937 |
-
msgid "
|
2938 |
msgstr ""
|
2939 |
|
2940 |
-
#: includes/
|
2941 |
-
msgid "
|
2942 |
msgstr ""
|
2943 |
|
2944 |
-
#: includes/
|
2945 |
-
msgid "
|
2946 |
msgstr ""
|
2947 |
|
2948 |
-
#: includes/
|
2949 |
-
msgid "
|
2950 |
msgstr ""
|
2951 |
|
2952 |
-
#: includes/
|
2953 |
-
msgid "
|
2954 |
msgstr ""
|
2955 |
|
2956 |
-
#: includes/
|
2957 |
-
msgid "
|
2958 |
msgstr ""
|
2959 |
|
2960 |
-
#: includes/
|
2961 |
-
msgid "
|
2962 |
msgstr ""
|
2963 |
|
2964 |
-
#: includes/
|
2965 |
-
msgid "
|
2966 |
msgstr ""
|
2967 |
|
2968 |
-
#: includes/
|
2969 |
-
msgid "
|
2970 |
msgstr ""
|
2971 |
|
2972 |
-
#: includes/
|
2973 |
-
msgid "
|
2974 |
msgstr ""
|
2975 |
|
2976 |
-
#: includes/
|
2977 |
-
msgid "
|
2978 |
msgstr ""
|
2979 |
|
2980 |
-
#: includes/
|
2981 |
-
msgid "
|
2982 |
msgstr ""
|
2983 |
|
2984 |
-
#: includes/
|
2985 |
-
msgid "
|
2986 |
msgstr ""
|
2987 |
|
2988 |
-
#: includes/
|
2989 |
-
msgid "
|
2990 |
msgstr ""
|
2991 |
|
2992 |
-
#: includes/
|
2993 |
-
msgid "
|
2994 |
msgstr ""
|
2995 |
|
2996 |
-
#: includes/
|
2997 |
-
msgid "
|
2998 |
msgstr ""
|
2999 |
|
3000 |
-
#:
|
3001 |
-
msgid "
|
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’ 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
|