Version Description
- Feature - Support RTL for Importer.
- Feature - Reset wizard for clean up.
- Fixed - Undefined queue job update action.
- Fixed - Use of
wp-heading-inline
core class. - Tweak - Use of defined constant for demo packs.
- Tweak - Uninstall data with a defined constant.
- Tweak - Fallback screenshot for flash demo preview.
See changelog for all versions.
Download this release
Release Info
Developer | ThemeGrill |
Plugin | ThemeGrill Demo Importer |
Version | 1.3.4 |
Comparing to | |
See all releases |
Code changes from version 1.3.3 to 1.3.4
- .wordpress-org/banner-772x250.jpg +0 -0
- CHANGELOG.txt +31 -0
- CODE_OF_CONDUCT.md +46 -0
- assets/css/demo-importer-rtl.css +1 -0
- assets/css/demo-importer.css +1 -1
- assets/css/demo-importer.scss +84 -24
- assets/images/flash/flash-pro-agency.jpg +0 -0
- assets/images/flash/flash-pro-band.jpg +0 -0
- assets/js/admin/demo-importer.js +23 -21
- assets/js/admin/demo-importer.min.js +1 -1
- assets/js/admin/demo-updates.js +40 -3
- assets/js/admin/demo-updates.min.js +1 -1
- assets/js/jquery-tiptip/jquery.tipTip.min.js +1 -1
- includes/class-demo-importer.php +487 -289
- includes/functions-demo-update.php +21 -0
- includes/includes/admin/class-demo-installer-skin.php +1 -1
- includes/includes/admin/class-demo-upgrader.php +1 -1
- includes/includes/admin/views/html-admin-page-importer.php +9 -10
- includes/includes/admin/views/html-admin-page-installer-preview.php +9 -4
- includes/includes/admin/views/html-admin-page-installer.php +18 -17
- includes/includes/admin/views/html-notice-reset-wizard-success.php +15 -0
- includes/includes/admin/views/html-notice-reset-wizard.php +14 -0
- includes/includes/functions-demo-importer.php +2 -7
- includes/includes/importers/class-wxr-parsers.php +2 -2
- languages/themegrill-demo-importer.pot +309 -167
- phpcs.ruleset.xml +2 -1
- readme.txt +39 -30
- themegrill-demo-importer.php +129 -71
- uninstall.php +13 -4
.wordpress-org/banner-772x250.jpg
ADDED
Binary file
|
CHANGELOG.txt
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
== Changelog ==
|
2 |
+
|
3 |
+
= 1.3.3 =
|
4 |
+
* Tweak - Support demo import for suffice theme.
|
5 |
+
|
6 |
+
= 1.3.2 =
|
7 |
+
* Tweak - Load screenshots for pro theme demos.
|
8 |
+
|
9 |
+
= 1.3.1 =
|
10 |
+
* Tweak - Load screenshot from theme instead of plugin for themes with single demo.
|
11 |
+
|
12 |
+
= 1.3.0 =
|
13 |
+
* Tweak - Support data update for nested siteorigin layoutbuilder.
|
14 |
+
* Fix - Import button not working on firefox.
|
15 |
+
|
16 |
+
= 1.2.0 =
|
17 |
+
* Tweak - Load scripts perfecly on demo importer appearance page.
|
18 |
+
* Tweak - Set transient for redirecting to demo importer page after install or update.
|
19 |
+
* Tweak - Introduced filter hook `themegrill_demo_importer_installer` to control demo view.
|
20 |
+
|
21 |
+
= 1.1.0 =
|
22 |
+
* Feature - Backbone views interface for demos and previews
|
23 |
+
* Feature - Added download button for the preview not installed
|
24 |
+
* Feature - Robust quick search view to change in demo interface
|
25 |
+
* Feature - Detailed information in popup to showcase plugins, events, etc
|
26 |
+
* Refactor - Replace old way to import demo with new `wp.updates` methods
|
27 |
+
* Fix - Menu classes to hide admin menu if no JS using css class `hide-if-no-js`
|
28 |
+
* Fix - Remove the old demo pack if found and to update the new demo packs
|
29 |
+
|
30 |
+
= 1.0.0 =
|
31 |
+
* Initial Public Release
|
CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Contributor Covenant Code of Conduct
|
2 |
+
|
3 |
+
## Our Pledge
|
4 |
+
|
5 |
+
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
6 |
+
|
7 |
+
## Our Standards
|
8 |
+
|
9 |
+
Examples of behavior that contributes to creating a positive environment include:
|
10 |
+
|
11 |
+
* Using welcoming and inclusive language
|
12 |
+
* Being respectful of differing viewpoints and experiences
|
13 |
+
* Gracefully accepting constructive criticism
|
14 |
+
* Focusing on what is best for the community
|
15 |
+
* Showing empathy towards other community members
|
16 |
+
|
17 |
+
Examples of unacceptable behavior by participants include:
|
18 |
+
|
19 |
+
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
20 |
+
* Trolling, insulting/derogatory comments, and personal or political attacks
|
21 |
+
* Public or private harassment
|
22 |
+
* Publishing others' private information, such as a physical or electronic address, without explicit permission
|
23 |
+
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
24 |
+
|
25 |
+
## Our Responsibilities
|
26 |
+
|
27 |
+
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
28 |
+
|
29 |
+
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
|
30 |
+
|
31 |
+
## Scope
|
32 |
+
|
33 |
+
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
|
34 |
+
|
35 |
+
## Enforcement
|
36 |
+
|
37 |
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at support@themegrill.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
38 |
+
|
39 |
+
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
40 |
+
|
41 |
+
## Attribution
|
42 |
+
|
43 |
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
44 |
+
|
45 |
+
[homepage]: http://contributor-covenant.org
|
46 |
+
[version]: http://contributor-covenant.org/version/1/4/
|
assets/css/demo-importer-rtl.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
.appearance_page_demo-importer .demo-importer h1{margin-bottom:15px}.appearance_page_demo-importer .demo-importer .search-form{display:inline}.appearance_page_demo-importer .demo-importer .wp-filter-search{position:relative;top:-2px;right:20px;margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5}.appearance_page_demo-importer .demo-installer .wp-filter{padding:0 20px}.appearance_page_demo-importer .demo-installer .wp-filter .filter-links li>a:focus{box-shadow:none}.appearance_page_demo-importer .demo-installer .welcome-panel{margin:0;background:#e9eff3;border:10px solid #fff;box-shadow:none}.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-content{width:45%;float:right}.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-content .welcome-panel-column{width:100%}.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-content .welcome-panel-column ul{padding-right:10px}.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-iframe-video{float:left;width:50%}.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-iframe-video .welcome-panel-iframe-video-inner{position:relative;height:0;margin:0 10px 23px;padding-bottom:56.25%;border:5px solid #dadada}.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-iframe-video .welcome-panel-iframe-video-inner iframe{position:absolute;top:0;right:0;width:100%;height:100%}.appearance_page_demo-importer .demo-installer .premium-ribbon{overflow:hidden}.appearance_page_demo-importer .demo-installer .premium-ribbon::after{background-color:#24b37e;border:1px solid #069c64;box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 3px rgba(0,0,0,.3);color:#fff;content:'PRO';font-size:16px;font-weight:700;padding:5px 30px;position:absolute;left:-30px;top:6px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}table.plugins-list-table{margin-bottom:1em}table.plugins-list-table tr:nth-child(2n) td{background:#fcfcfc}table.plugins-list-table th{padding:9px;font-weight:600}table.plugins-list-table td{padding:9px;font-size:1.1em}table.plugins-list-table td mark{background:transparent none}table.plugins-list-table td mark.yes{color:#7ad03a}table.plugins-list-table td mark.no{color:#999}table.plugins-list-table td mark.error{color:#a00}table.plugins-list-table .plugin-status{text-align:center}.tips{cursor:help;text-decoration:none}img.tips{padding:5px 0 0}#tiptip_holder{display:none;z-index:8675309;position:absolute;top:0;left:0}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-right:-6px;border-top-color:#333}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-right:-6px;border-bottom-color:#333}#tiptip_holder.tip_right{padding-right:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-right:-5px;border-left-color:#333}#tiptip_holder.tip_left{padding-left:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-right:-7px;border-right-color:#333}#tiptip_content{color:#fff;font-size:.8em;max-width:150px;background:#333;text-align:center;border-radius:3px;padding:.618em 1em;box-shadow:0 1px 3px rgba(0,0,0,.2)}#tiptip_content code{padding:1px;background:#888}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}#tiptip_arrow{right:50%;margin-right:-6px}@media screen and (max-width:500px){.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-content,.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-iframe-video{float:none;width:100%}}
|
assets/css/demo-importer.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
1 |
+
.appearance_page_demo-importer .demo-importer h1{margin-bottom:15px}.appearance_page_demo-importer .demo-importer .search-form{display:inline}.appearance_page_demo-importer .demo-importer .wp-filter-search{position:relative;top:-2px;left:20px;margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5}.appearance_page_demo-importer .demo-installer .wp-filter{padding:0 20px}.appearance_page_demo-importer .demo-installer .wp-filter .filter-links li>a:focus{box-shadow:none}.appearance_page_demo-importer .demo-installer .welcome-panel{margin:0;background:#e9eff3;border:10px solid #fff;box-shadow:none}.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-content{width:45%;float:left}.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-content .welcome-panel-column{width:100%}.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-content .welcome-panel-column ul{padding-left:10px}.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-iframe-video{float:right;width:50%}.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-iframe-video .welcome-panel-iframe-video-inner{position:relative;height:0;margin:0 10px 23px;padding-bottom:56.25%;border:5px solid #dadada}.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-iframe-video .welcome-panel-iframe-video-inner iframe{position:absolute;top:0;left:0;width:100%;height:100%}.appearance_page_demo-importer .demo-installer .premium-ribbon{overflow:hidden}.appearance_page_demo-importer .demo-installer .premium-ribbon::after{background-color:#24b37e;border:1px solid #069c64;box-shadow:0 0 4px rgba(255,255,255,.5) inset,0 1px 3px rgba(0,0,0,.3);color:#fff;content:'PRO';font-size:16px;font-weight:700;padding:5px 30px;position:absolute;right:-30px;top:6px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}table.plugins-list-table{margin-bottom:1em}table.plugins-list-table tr:nth-child(2n) td{background:#fcfcfc}table.plugins-list-table th{padding:9px;font-weight:600}table.plugins-list-table td{padding:9px;font-size:1.1em}table.plugins-list-table td mark{background:transparent none}table.plugins-list-table td mark.yes{color:#7ad03a}table.plugins-list-table td mark.no{color:#999}table.plugins-list-table td mark.error{color:#a00}table.plugins-list-table .plugin-status{text-align:center}.tips{cursor:help;text-decoration:none}img.tips{padding:5px 0 0}#tiptip_holder{display:none;z-index:8675309;position:absolute;top:0;left:0}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#333}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#333}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#333}#tiptip_holder.tip_left{padding-right:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#333}#tiptip_content{color:#fff;font-size:.8em;max-width:150px;background:#333;text-align:center;border-radius:3px;padding:.618em 1em;box-shadow:0 1px 3px rgba(0,0,0,.2)}#tiptip_content code{padding:1px;background:#888}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}@media screen and (max-width:500px){.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-content,.appearance_page_demo-importer .demo-installer .welcome-panel .welcome-panel-iframe-video{float:none;width:100%}}
|
assets/css/demo-importer.scss
CHANGED
@@ -3,11 +3,6 @@
|
|
3 |
* General ThemeGrill Demo Importer admin styles.
|
4 |
*/
|
5 |
|
6 |
-
/**
|
7 |
-
* Imports
|
8 |
-
*/
|
9 |
-
@import 'bourbon';
|
10 |
-
|
11 |
/**
|
12 |
* Styling begins
|
13 |
*/
|
@@ -17,6 +12,10 @@
|
|
17 |
margin-bottom: 15px;
|
18 |
}
|
19 |
|
|
|
|
|
|
|
|
|
20 |
.wp-filter-search {
|
21 |
position: relative;
|
22 |
top: -2px;
|
@@ -40,6 +39,62 @@
|
|
40 |
|
41 |
.welcome-panel {
|
42 |
margin: 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
}
|
44 |
}
|
45 |
}
|
@@ -98,13 +153,12 @@ img.tips {
|
|
98 |
|
99 |
#tiptip_holder {
|
100 |
display: none;
|
|
|
101 |
position: absolute;
|
102 |
top: 0;
|
|
|
103 |
left: 0;
|
104 |
-
z-index: 9999999;
|
105 |
-
}
|
106 |
|
107 |
-
#tiptip_holder {
|
108 |
&.tip_top {
|
109 |
padding-bottom: 5px;
|
110 |
|
@@ -171,21 +225,27 @@ img.tips {
|
|
171 |
height: 0;
|
172 |
width: 0;
|
173 |
}
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
}
|
191 |
}
|
3 |
* General ThemeGrill Demo Importer admin styles.
|
4 |
*/
|
5 |
|
|
|
|
|
|
|
|
|
|
|
6 |
/**
|
7 |
* Styling begins
|
8 |
*/
|
12 |
margin-bottom: 15px;
|
13 |
}
|
14 |
|
15 |
+
.search-form {
|
16 |
+
display: inline;
|
17 |
+
}
|
18 |
+
|
19 |
.wp-filter-search {
|
20 |
position: relative;
|
21 |
top: -2px;
|
39 |
|
40 |
.welcome-panel {
|
41 |
margin: 0;
|
42 |
+
background: #e9eff3;
|
43 |
+
border: 10px solid #fff;
|
44 |
+
box-shadow: none;
|
45 |
+
|
46 |
+
.welcome-panel-content {
|
47 |
+
width: 45%;
|
48 |
+
float: left;
|
49 |
+
|
50 |
+
.welcome-panel-column {
|
51 |
+
width: 100%;
|
52 |
+
|
53 |
+
ul {
|
54 |
+
padding-left: 10px;
|
55 |
+
}
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
.welcome-panel-iframe-video {
|
60 |
+
float: right;
|
61 |
+
width: 50%;
|
62 |
+
|
63 |
+
.welcome-panel-iframe-video-inner {
|
64 |
+
position: relative;
|
65 |
+
height: 0;
|
66 |
+
margin: 0 10px 23px;
|
67 |
+
padding-bottom: 56.25%; /* 16:9 */
|
68 |
+
border: 5px solid #dadada;
|
69 |
+
|
70 |
+
iframe {
|
71 |
+
position: absolute;
|
72 |
+
top: 0;
|
73 |
+
left: 0;
|
74 |
+
width: 100%;
|
75 |
+
height: 100%;
|
76 |
+
}
|
77 |
+
}
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
.premium-ribbon {
|
82 |
+
overflow: hidden;
|
83 |
+
|
84 |
+
&::after {
|
85 |
+
background-color: #24b37e;
|
86 |
+
border: 1px solid #069c64;
|
87 |
+
box-shadow: 0 0 4px rgba( 255, 255, 255, 0.5 ) inset, 0 1px 3px rgba( 0, 0, 0, 0.3 );
|
88 |
+
color: #fff;
|
89 |
+
content: 'PRO';
|
90 |
+
font-size: 16px;
|
91 |
+
font-weight: 700;
|
92 |
+
padding: 5px 30px;
|
93 |
+
position: absolute;
|
94 |
+
right: -30px;
|
95 |
+
top: 6px;
|
96 |
+
transform: rotate( 45deg );
|
97 |
+
}
|
98 |
}
|
99 |
}
|
100 |
}
|
153 |
|
154 |
#tiptip_holder {
|
155 |
display: none;
|
156 |
+
z-index: 8675309;
|
157 |
position: absolute;
|
158 |
top: 0;
|
159 |
+
/*rtl:ignore*/
|
160 |
left: 0;
|
|
|
|
|
161 |
|
|
|
162 |
&.tip_top {
|
163 |
padding-bottom: 5px;
|
164 |
|
225 |
height: 0;
|
226 |
width: 0;
|
227 |
}
|
228 |
+
|
229 |
+
/*rtl:raw:
|
230 |
+
#tiptip_arrow {
|
231 |
+
right: 50%;
|
232 |
+
margin-right: -6px;
|
233 |
+
}
|
234 |
+
*/
|
235 |
+
|
236 |
+
/**
|
237 |
+
* Optimisation for screens 500px and smaller
|
238 |
+
*/
|
239 |
+
@media screen and (max-width: 500px) {
|
240 |
+
.appearance_page_demo-importer {
|
241 |
+
.demo-installer {
|
242 |
+
.welcome-panel {
|
243 |
+
.welcome-panel-content,
|
244 |
+
.welcome-panel-iframe-video {
|
245 |
+
float: none;
|
246 |
+
width: 100%;
|
247 |
+
}
|
248 |
+
}
|
249 |
+
}
|
250 |
}
|
251 |
}
|
assets/images/flash/flash-pro-agency.jpg
ADDED
Binary file
|
assets/images/flash/flash-pro-band.jpg
ADDED
Binary file
|
assets/js/admin/demo-importer.js
CHANGED
@@ -86,7 +86,7 @@ demos.view.Appearance = wp.Backbone.View.extend({
|
|
86 |
},
|
87 |
|
88 |
// Defines search element container
|
89 |
-
searchContainer: $( '
|
90 |
|
91 |
// Search input and view
|
92 |
// for current demo collection
|
@@ -258,6 +258,7 @@ demos.view.Demo = wp.Backbone.View.extend({
|
|
258 |
|
259 |
render: function() {
|
260 |
var data = this.model.toJSON();
|
|
|
261 |
// Render demos using the html template
|
262 |
this.$el.html( this.html( data ) ).attr({
|
263 |
tabindex: 0,
|
@@ -265,17 +266,17 @@ demos.view.Demo = wp.Backbone.View.extend({
|
|
265 |
'data-slug': data.id
|
266 |
});
|
267 |
|
268 |
-
//add ribbon class
|
269 |
-
if ( this.model.get( 'actions' ).pro_link ) {
|
270 |
-
this.$el.html( this.html( data ) ).addClass( 'premium-ribbon' );
|
271 |
-
}
|
272 |
-
|
273 |
// Renders active demo styles
|
274 |
this.activeDemo();
|
275 |
|
276 |
if ( this.model.get( 'displayAuthor' ) ) {
|
277 |
this.$el.addClass( 'display-author' );
|
278 |
}
|
|
|
|
|
|
|
|
|
|
|
279 |
},
|
280 |
|
281 |
// Adds a class to the currently active demo
|
@@ -1070,10 +1071,6 @@ demos.view.Installer = demos.view.Appearance.extend({
|
|
1070 |
this.$el.find( '.theme-browser' ).append( this.view.el ).addClass( 'rendered' );
|
1071 |
},
|
1072 |
|
1073 |
-
// Overwrite search container class to append search
|
1074 |
-
// in new location
|
1075 |
-
searchContainer: $( '.wp-filter .search-form' ),
|
1076 |
-
|
1077 |
/*
|
1078 |
* When users press the "Upload Theme" button, show the upload form in place.
|
1079 |
*/
|
@@ -1206,23 +1203,28 @@ $( document ).ready( function() {
|
|
1206 |
demos.Run.init();
|
1207 |
}
|
1208 |
|
1209 |
-
//
|
1210 |
-
$( '.
|
1211 |
var $this_el = $( this );
|
1212 |
|
1213 |
-
event.preventDefault();
|
1214 |
-
|
1215 |
-
if ( $this_el.parent().attr( 'id' ) === 'undefined' ) {
|
1216 |
-
return;
|
1217 |
-
}
|
1218 |
-
|
1219 |
$.post( demos.data.settings.ajaxUrl, {
|
1220 |
-
action: '
|
1221 |
-
notice_id: $this_el.parent().data( 'notice_id' )
|
1222 |
});
|
1223 |
|
1224 |
-
|
1225 |
} );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1226 |
});
|
1227 |
|
1228 |
})( jQuery );
|
86 |
},
|
87 |
|
88 |
// Defines search element container
|
89 |
+
searchContainer: $( '.search-form' ),
|
90 |
|
91 |
// Search input and view
|
92 |
// for current demo collection
|
258 |
|
259 |
render: function() {
|
260 |
var data = this.model.toJSON();
|
261 |
+
|
262 |
// Render demos using the html template
|
263 |
this.$el.html( this.html( data ) ).attr({
|
264 |
tabindex: 0,
|
266 |
'data-slug': data.id
|
267 |
});
|
268 |
|
|
|
|
|
|
|
|
|
|
|
269 |
// Renders active demo styles
|
270 |
this.activeDemo();
|
271 |
|
272 |
if ( this.model.get( 'displayAuthor' ) ) {
|
273 |
this.$el.addClass( 'display-author' );
|
274 |
}
|
275 |
+
|
276 |
+
// Append ribbon class
|
277 |
+
if ( this.model.get( 'actions' ).pro_link ) {
|
278 |
+
this.$el.html( this.html( data ) ).addClass( 'premium-ribbon' );
|
279 |
+
}
|
280 |
},
|
281 |
|
282 |
// Adds a class to the currently active demo
|
1071 |
this.$el.find( '.theme-browser' ).append( this.view.el ).addClass( 'rendered' );
|
1072 |
},
|
1073 |
|
|
|
|
|
|
|
|
|
1074 |
/*
|
1075 |
* When users press the "Upload Theme" button, show the upload form in place.
|
1076 |
*/
|
1203 |
demos.Run.init();
|
1204 |
}
|
1205 |
|
1206 |
+
// Rating footer.
|
1207 |
+
$( '.themegrill-demo-importer-rating-link' ).on( 'click', function() {
|
1208 |
var $this_el = $( this );
|
1209 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1210 |
$.post( demos.data.settings.ajaxUrl, {
|
1211 |
+
action: 'footer-text-rated'
|
|
|
1212 |
});
|
1213 |
|
1214 |
+
$this_el.parent().text( $this_el.data( 'rated' ) );
|
1215 |
} );
|
1216 |
+
|
1217 |
+
// Confirm WordPress reset wizard.
|
1218 |
+
$( '.themegrill-reset-wordpress' ).on( 'click', function() {
|
1219 |
+
return window.confirm( demos.data.settings.confirmReset );
|
1220 |
+
});
|
1221 |
+
|
1222 |
+
// Load videos when help button is clicked.
|
1223 |
+
$( '#contextual-help-link' ).on( 'click', function() {
|
1224 |
+
var frame = $( '#tab-panel-themegrill_demo_importer_guided_tour_tab iframe' );
|
1225 |
+
|
1226 |
+
frame.attr( 'src', frame.data( 'src' ) );
|
1227 |
+
});
|
1228 |
});
|
1229 |
|
1230 |
})( jQuery );
|
assets/js/admin/demo-importer.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
window.wp=window.wp||{},function(a){var b,c;b=wp.demos=wp.demos||{},b.data=demoImporterLocalizeScript,c=b.data.l10n,b.isPreview=!!b.data.settings.isPreview,b.isInstall=!!b.data.settings.isInstall,_.extend(b,{model:{},view:{},routes:{},router:{},template:wp.template}),b.Model=Backbone.Model.extend({initialize:function(){var a;_.indexOf(b.data.installedDemos,this.get("slug"))!==-1&&this.set({installed:!0}),this.set({id:this.get("slug")||this.get("id")}),this.has("sections")&&(a=this.get("sections").description,this.set({description:a}))}}),b.view.Appearance=wp.Backbone.View.extend({el:"#wpbody-content .wrap .theme-browser",window:a(window),page:0,initialize:function(a){_.bindAll(this,"scroller"),this.SearchView=a.SearchView?a.SearchView:b.view.Search,this.window.bind("scroll",_.throttle(this.scroller,300))},render:function(){this.view=new b.view.Demos({collection:this.collection,parent:this}),this.search(),this.view.render(),this.$el.empty().append(this.view.el).addClass("rendered")},searchContainer:a("#wpbody h1:first"),search:function(){var d,e=this;1!==b.data.demos.length&&(d=new this.SearchView({collection:e.collection,parent:this}),d.render(),this.searchContainer.append(a.parseHTML('<label class="screen-reader-text" for="wp-filter-search-input">'+c.search+"</label>")).append(d.el))},scroller:function(){var a,b,c=this;a=this.window.scrollTop()+c.window.height(),b=c.$el.offset().top+c.$el.outerHeight(!1)-c.window.height(),b=Math.round(.9*b),a>b&&this.trigger("demo:scroll")},initTipTip:function(){a("#tiptip_holder").removeAttr("style"),a("#tiptip_arrow").removeAttr("style"),a(".tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:50})}}),b.Collection=Backbone.Collection.extend({model:b.Model,terms:"",doSearch:function(c){this.terms!==c&&(this.terms=c,this.terms.length>0&&this.search(this.terms),""===this.terms&&(this.reset(b.data.demos),a("body").removeClass("no-results")),this.trigger("demos:update"))},search:function(c){var d,e,f,g,h,i;this.reset(b.data.demos,{silent:!0}),c=c.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),c=c.replace(/ /g,")(?=.*"),d=new RegExp("^(?=.*"+c+").+","i"),e=this.filter(function(a){return g=a.get("name").replace(/(<([^>]+)>)/gi,""),h=a.get("description").replace(/(<([^>]+)>)/gi,""),i=a.get("author").replace(/(<([^>]+)>)/gi,""),f=_.union([g,a.get("id"),h,i,a.get("tags")]),d.test(a.get("author"))&&c.length>2&&a.set("displayAuthor",!0),d.test(f)}),0===e.length?this.trigger("query:empty"):a("body").removeClass("no-results"),this.reset(e)},paginate:function(a){var b=this;return a=a||0,b=_(b.rest(20*a)),b=_(b.first(20))}}),b.view.Demo=wp.Backbone.View.extend({className:"theme",state:"grid",html:b.template(b.isPreview?"demo-preview":"demo"),events:{click:"expand",keydown:"expand",touchend:"expand",keyup:"addFocus",touchmove:"preventExpand","click .demo-import":"importDemo"},touchDrag:!1,initialize:function(){this.model.on("change",this.render,this)},render:function(){var a=this.model.toJSON();this.$el.html(this.html(a)).attr({tabindex:0,"aria-describedby":a.id+"-action "+a.id+"-name","data-slug":a.id}),this.model.get("actions").pro_link&&this.$el.html(this.html(a)).addClass("premium-ribbon"),this.activeDemo(),this.model.get("displayAuthor")&&this.$el.addClass("display-author")},activeDemo:function(){this.model.get("active")&&this.$el.addClass("active")},addFocus:function(){var b=a(":focus").hasClass("theme")?a(":focus"):a(":focus").parents(".theme");a(".theme.focus").removeClass("focus"),b.addClass("focus")},expand:function(c){var d=this;if(!b.isPreview&&(c=c||window.event,"keydown"!==c.type||13===c.which||32===c.which))return this.touchDrag===!0?this.touchDrag=!1:void(a(c.target).is(".theme-actions a")||a(c.target).is(".theme-actions a, .update-message, .button-link, .notice-dismiss")||(b.focusedDemo=this.$el,this.trigger("demo:expand",d.model.cid)))},preventExpand:function(){this.touchDrag=!0},importDemo:function(b){var c=this,d=a(b.target);b.preventDefault(),d.hasClass("disabled")||window.confirm(wp.demos.data.settings.confirmImport)&&(a(document).on("wp-demo-import-success",function(a,b){c.model.get("id")===b.slug&&c.model.set({imported:!0})}),wp.updates.importDemo({slug:d.data("slug")}))}}),b.view.Details=wp.Backbone.View.extend({className:"theme-overlay",events:{click:"collapse","click .delete-demo":"deleteDemo","click .left":"previousDemo","click .right":"nextDemo","click .demo-import":"importDemo"},html:b.template("demo-single"),render:function(){var a=this.model.toJSON();this.$el.html(this.html(a)),this.activeDemo(),this.navigation(),this.screenshotCheck(this.$el),this.containFocus(this.$el)},activeDemo:function(){this.$el.toggleClass("active",this.model.get("active"))},containFocus:function(b){_.delay(function(){a(".theme-wrap a.button-primary:visible").focus()},100),b.on("keydown.wp-themes",function(a){var c=b.find(".theme-header button:not(.disabled)").first(),d=b.find(".theme-actions a:visible").last();9===a.which&&(c[0]===a.target&&a.shiftKey?(d.focus(),a.preventDefault()):d[0]!==a.target||a.shiftKey||(c.focus(),a.preventDefault()))})},collapse:function(c){var d,e=this;c=c||window.event,1!==b.data.demos.length&&(a(c.target).is(".theme-backdrop")||a(c.target).is(".close")||27===c.keyCode)&&(a("body").addClass("closing-overlay"),this.$el.fadeOut(130,function(){a("body").removeClass("closing-overlay"),e.closeOverlay(),d=document.body.scrollTop,b.router.navigate(b.router.baseUrl("")),document.body.scrollTop=d,b.focusedDemo&&b.focusedDemo.focus()}))},navigation:function(){this.model.cid===this.model.collection.at(0).cid&&this.$el.find(".left").addClass("disabled").prop("disabled",!0),this.model.cid===this.model.collection.at(this.model.collection.length-1).cid&&this.$el.find(".right").addClass("disabled").prop("disabled",!0)},closeOverlay:function(){a("body").removeClass("modal-open"),this.remove(),this.unbind(),this.trigger("demo:collapse")},importDemo:function(b){var c=this,d=a(b.target);b.preventDefault(),d.hasClass("disabled")||window.confirm(wp.demos.data.settings.confirmImport)&&(a(document).on("wp-demo-import-success",function(a,b){c.model.get("id")===b.slug&&c.model.set({imported:!0})}),a(document).on("wp-updates-queue-job",function(a,b){"import-demo"===b.action&&wp.updates.importDemo(b.data)}),wp.updates.importDemo({slug:d.data("slug")}))},deleteDemo:function(c){var d=this,e=this.model.collection,f=b;c.preventDefault(),window.confirm(wp.demos.data.settings.confirmDelete)&&(wp.updates.maybeRequestFilesystemCredentials(c),a(document).one("wp-demo-delete-success",function(b,c){d.$el.find(".close").trigger("click"),a('[data-slug="'+c.slug+'"').css({backgroundColor:"#faafaa"}).fadeOut(350,function(){a(this).remove(),f.data.demos=_.without(f.data.demos,_.findWhere(f.data.demos,{id:c.slug})),a(".wp-filter-search").val(""),e.doSearch(""),e.remove(d.model),e.trigger("demos:update")})}),wp.updates.deleteDemo({slug:this.model.get("id")}))},nextDemo:function(){var a=this;return a.trigger("demo:next",a.model.cid),!1},previousDemo:function(){var a=this;return a.trigger("demo:previous",a.model.cid),!1},screenshotCheck:function(a){var b,c;b=a.find(".screenshot img"),c=new Image,c.src=b.attr("src"),c.width&&c.width<=300&&a.addClass("small-screenshot")}}),b.view.Demos=wp.Backbone.View.extend({className:"themes wp-clearfix",$overlay:a("div.theme-overlay"),index:0,count:a(".wrap .demo-count"),liveDemoCount:0,initialize:function(b){var c=this;this.parent=b.parent,c.importedDemo(),this.setView("grid"),this.listenTo(c.collection,"demos:update",function(){c.parent.page=0,c.importedDemo(),c.render(this),c.parent.initTipTip()}),this.listenTo(c.collection,"query:success",function(a){_.isNumber(a)?(c.count.text(a),c.announceSearchResults(a)):(c.count.text(c.collection.length),c.announceSearchResults(c.collection.length))}),this.listenTo(c.collection,"query:empty",function(){a("body").addClass("no-results")}),this.listenTo(this.parent,"demo:scroll",function(){c.renderDemos(c.parent.page)}),this.listenTo(this.parent,"demo:close",function(){c.overlay&&c.overlay.closeOverlay()}),a("body").on("keyup",function(b){c.overlay&&(a("#request-filesystem-credentials-dialog").is(":visible")||(39===b.keyCode&&c.overlay.nextDemo(),37===b.keyCode&&c.overlay.previousDemo(),27===b.keyCode&&c.overlay.collapse(b)))})},render:function(){this.$el.empty(),b.isPreview||1!==b.data.demos.length||(this.singleDemo=new b.view.Details({model:this.collection.models[0]}),this.singleDemo.render(),this.$el.addClass("single-theme"),this.$el.append(this.singleDemo.el)),this.options.collection.size()>0&&this.renderDemos(this.parent.page),this.liveDemoCount=this.collection.count?this.collection.count:this.collection.length,this.count.text(this.liveDemoCount)},renderDemos:function(a){var d=this;return d.instance=d.collection.paginate(a),0===d.instance.size()?void this.parent.trigger("demo:end"):(d.instance.each(function(a){d.demo=new b.view.Demo({model:a,parent:d}),d.demo.render(),d.$el.append(d.demo.el),d.listenTo(d.demo,"demo:expand",d.expand,d)}),!b.isPreview&&b.isInstall&&b.data.settings.canInstall&&this.$el.append('<div class="theme add-new-theme"><a href="'+b.data.settings.installURI+'"><div class="theme-screenshot"><span></span></div><h2 class="theme-name">'+c.addNew+"</h2></a></div>"),void this.parent.page++)},importedDemo:function(){var a,b=this;a=b.collection.findWhere({active:!0}),a&&(b.collection.remove(a),b.collection.add(a,{at:0}))},setView:function(a){return a},expand:function(c){var d,e,f=this;this.model=f.collection.get(c),b.router.navigate(b.router.baseUrl(b.router.demoPath+this.model.id)),this.setView("detail"),a("body").addClass("modal-open"),this.overlay=new b.view.Details({model:f.model}),this.overlay.render(),this.model.get("hasUpdate")&&(d=a('[data-slug="'+this.model.id+'"]'),e=a(this.overlay.el),d.find(".updating-message").length?(e.find(".notice-warning h3").remove(),e.find(".notice-warning").removeClass("notice-large").addClass("updating-message").find("p").text(wp.updates.l10n.updating)):d.find(".notice-error").length&&e.find(".notice-warning").remove()),this.$overlay.html(this.overlay.el),this.listenTo(this.overlay,"demo:next",function(){f.next([f.model.cid])}).listenTo(this.overlay,"demo:previous",function(){f.previous([f.model.cid])})},next:function(a){var b,c,d=this;b=d.collection.get(a[0]),c=d.collection.at(d.collection.indexOf(b)+1),void 0!==c&&(this.overlay.closeOverlay(),d.demo.trigger("demo:expand",c.cid))},previous:function(a){var b,c,d=this;b=d.collection.get(a[0]),c=d.collection.at(d.collection.indexOf(b)-1),void 0!==c&&(this.overlay.closeOverlay(),d.demo.trigger("demo:expand",c.cid))},announceSearchResults:function(a){0===a?wp.a11y.speak(c.noDemosFound):wp.a11y.speak(c.demosFound.replace("%d",a))}}),b.view.Search=wp.Backbone.View.extend({tagName:"input",className:"wp-filter-search",id:"wp-filter-search-input",searching:!1,attributes:{placeholder:c.searchPlaceholder,type:"search","aria-describedby":"live-search-desc"},events:{input:"search",keyup:"search",blur:"pushState"},initialize:function(a){this.parent=a.parent,this.listenTo(this.parent,"demo:close",function(){this.searching=!1})},search:function(a){"keyup"===a.type&&27===a.which&&(a.target.value=""),this.doSearch(a)},doSearch:_.debounce(function(a){var c={};this.collection.doSearch(a.target.value),this.searching&&13!==a.which?c.replace=!0:this.searching=!0,a.target.value?b.router.navigate(b.router.baseUrl(b.router.searchPath+a.target.value),c):b.router.navigate(b.router.baseUrl(""))},500),pushState:function(a){var c=b.router.baseUrl("");a.target.value&&(c=b.router.baseUrl(b.router.searchPath+a.target.value)),this.searching=!1,b.router.navigate(c)}}),b.Router=Backbone.Router.extend({routes:{"themes.php?page=demo-importer&demo=:slug":"demo","themes.php?page=demo-importer&search=:query":"search","themes.php?page=demo-importer&s=:query":"search","themes.php?page=demo-importer":"demos","":"demos"},baseUrl:function(a){return"themes.php?page=demo-importer"+a},demoPath:"&demo=",searchPath:"&search=",search:function(b){a(".wp-filter-search").val(b)},demos:function(){a(".wp-filter-search").val("")},navigate:function(){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.apply(this,arguments)}}),b.Run={init:function(){this.demos=new b.Collection(b.data.demos),this.view=new b.view.Appearance({collection:this.demos}),this.render()},render:function(){this.view.render(),this.view.initTipTip(),this.routes(),Backbone.history.start({root:b.data.settings.adminUrl,pushState:!0,hashChange:!1})},routes:function(){var c=this;b.router=new b.Router,b.router.on("route:demo",function(a){c.view.view.expand(a)}),b.router.on("route:demos",function(){c.demos.doSearch(""),c.view.trigger("demo:close")}),b.router.on("route:search",function(){a(".wp-filter-search").trigger("keyup")}),this.extraRoutes()},extraRoutes:function(){return!1}},b.view.Installer=b.view.Appearance.extend({el:"#wpbody-content .wrap",render:function(){this.search(),this.uploader(),this.view=new b.view.Demos({collection:this.collection,parent:this}),this.$el.find(".themes").remove(),this.view.render(),this.$el.find(".theme-browser").append(this.view.el).addClass("rendered")},searchContainer:a(".wp-filter .search-form"),uploader:function(){var b=a(".upload-view-toggle"),c=a(document.body);b.on("click",function(){c.toggleClass("show-upload-view"),b.attr("aria-expanded",c.hasClass("show-upload-view"))})},clearSearch:function(){a("#wp-filter-search-input").val("")}}),b.InstallerRouter=Backbone.Router.extend({routes:{"themes.php?page=demo-importer&browse=uploads&demo=:slug":"demo","themes.php?page=demo-importer&browse=:sort&search=:query":"search","themes.php?page=demo-importer&browse=:sort&s=:query":"search","themes.php?page=demo-importer&browse=welcome":"sort","themes.php?page=demo-importer&browse=:sort":"demos","themes.php?page=demo-importer":"sort"},browse:function(){return b.isPreview?"preview":"uploads"},baseUrl:function(a){return"themes.php?page=demo-importer&browse="+this.browse()+a},demoPath:"&demo=",searchPath:"&search=",search:function(b,c){a(".wp-filter-search").val(c)},demos:function(){a(".wp-filter-search").val("")},navigate:function(){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.apply(this,arguments)}}),b.RunInstaller={init:function(){this.demos=new b.Collection(b.data.demos),this.view=new b.view.Installer({collection:this.demos}),this.render()},render:function(){this.view.render(),this.view.initTipTip(),this.routes(),Backbone.history.start({root:b.data.settings.adminUrl,pushState:!0,hashChange:!1})},routes:function(){var c=this;b.router=new b.InstallerRouter,b.router.on("route:demo",function(a){c.view.view.expand(a)}),b.router.on("route:demos",function(){c.demos.doSearch(""),c.view.trigger("demo:close")}),b.router.on("route:sort",function(b){b&&"welcome"!==b||a(".wp-filter-search").hide()}),b.router.on("route:search",function(){a(".wp-filter-search").focus().trigger("keyup")}),this.extraRoutes()},extraRoutes:function(){return!1}},a(document).ready(function(){b.isInstall?b.RunInstaller.init():b.Run.init(),a(".notice.is-dismissible").on("click",".notice-dismiss",function(c){var d=a(this);if(c.preventDefault(),"undefined"!==d.parent().attr("id"))return a.post(b.data.settings.ajaxUrl,{action:"dismiss-notice",notice_id:d.parent().data("notice_id")}),!1})})}(jQuery);
|
1 |
+
window.wp=window.wp||{},function(e){var t,i;(t=wp.demos=wp.demos||{}).data=demoImporterLocalizeScript,i=t.data.l10n,t.isPreview=!!t.data.settings.isPreview,t.isInstall=!!t.data.settings.isInstall,_.extend(t,{model:{},view:{},routes:{},router:{},template:wp.template}),t.Model=Backbone.Model.extend({initialize:function(){var e;-1!==_.indexOf(t.data.installedDemos,this.get("slug"))&&this.set({installed:!0}),this.set({id:this.get("slug")||this.get("id")}),this.has("sections")&&(e=this.get("sections").description,this.set({description:e}))}}),t.view.Appearance=wp.Backbone.View.extend({el:"#wpbody-content .wrap .theme-browser",window:e(window),page:0,initialize:function(e){_.bindAll(this,"scroller"),this.SearchView=e.SearchView?e.SearchView:t.view.Search,this.window.bind("scroll",_.throttle(this.scroller,300))},render:function(){this.view=new t.view.Demos({collection:this.collection,parent:this}),this.search(),this.view.render(),this.$el.empty().append(this.view.el).addClass("rendered")},searchContainer:e(".search-form"),search:function(){var o,s=this;1!==t.data.demos.length&&((o=new this.SearchView({collection:s.collection,parent:this})).render(),this.searchContainer.append(e.parseHTML('<label class="screen-reader-text" for="wp-filter-search-input">'+i.search+"</label>")).append(o.el))},scroller:function(){var e,t,i=this;e=this.window.scrollTop()+i.window.height(),t=i.$el.offset().top+i.$el.outerHeight(!1)-i.window.height(),e>(t=Math.round(.9*t))&&this.trigger("demo:scroll")},initTipTip:function(){e("#tiptip_holder").removeAttr("style"),e("#tiptip_arrow").removeAttr("style"),e(".tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:50})}}),t.Collection=Backbone.Collection.extend({model:t.Model,terms:"",doSearch:function(i){this.terms!==i&&(this.terms=i,this.terms.length>0&&this.search(this.terms),""===this.terms&&(this.reset(t.data.demos),e("body").removeClass("no-results")),this.trigger("demos:update"))},search:function(i){var o,s,n,r,a,l;this.reset(t.data.demos,{silent:!0}),i=i.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),i=i.replace(/ /g,")(?=.*"),o=new RegExp("^(?=.*"+i+").+","i"),0===(s=this.filter(function(e){return r=e.get("name").replace(/(<([^>]+)>)/gi,""),a=e.get("description").replace(/(<([^>]+)>)/gi,""),l=e.get("author").replace(/(<([^>]+)>)/gi,""),n=_.union([r,e.get("id"),a,l,e.get("tags")]),o.test(e.get("author"))&&i.length>2&&e.set("displayAuthor",!0),o.test(n)})).length?this.trigger("query:empty"):e("body").removeClass("no-results"),this.reset(s)},paginate:function(e){var t=this;return e=e||0,t=_(t.rest(20*e)),t=_(t.first(20))}}),t.view.Demo=wp.Backbone.View.extend({className:"theme",state:"grid",html:t.template(t.isPreview?"demo-preview":"demo"),events:{click:"expand",keydown:"expand",touchend:"expand",keyup:"addFocus",touchmove:"preventExpand","click .demo-import":"importDemo"},touchDrag:!1,initialize:function(){this.model.on("change",this.render,this)},render:function(){var e=this.model.toJSON();this.$el.html(this.html(e)).attr({tabindex:0,"aria-describedby":e.id+"-action "+e.id+"-name","data-slug":e.id}),this.activeDemo(),this.model.get("displayAuthor")&&this.$el.addClass("display-author"),this.model.get("actions").pro_link&&this.$el.html(this.html(e)).addClass("premium-ribbon")},activeDemo:function(){this.model.get("active")&&this.$el.addClass("active")},addFocus:function(){var t=e(":focus").hasClass("theme")?e(":focus"):e(":focus").parents(".theme");e(".theme.focus").removeClass("focus"),t.addClass("focus")},expand:function(i){var o=this;if(!t.isPreview&&("keydown"!==(i=i||window.event).type||13===i.which||32===i.which))return!0===this.touchDrag?this.touchDrag=!1:void(e(i.target).is(".theme-actions a")||e(i.target).is(".theme-actions a, .update-message, .button-link, .notice-dismiss")||(t.focusedDemo=this.$el,this.trigger("demo:expand",o.model.cid)))},preventExpand:function(){this.touchDrag=!0},importDemo:function(t){var i=this,o=e(t.target);t.preventDefault(),o.hasClass("disabled")||window.confirm(wp.demos.data.settings.confirmImport)&&(e(document).on("wp-demo-import-success",function(e,t){i.model.get("id")===t.slug&&i.model.set({imported:!0})}),wp.updates.importDemo({slug:o.data("slug")}))}}),t.view.Details=wp.Backbone.View.extend({className:"theme-overlay",events:{click:"collapse","click .delete-demo":"deleteDemo","click .left":"previousDemo","click .right":"nextDemo","click .demo-import":"importDemo"},html:t.template("demo-single"),render:function(){var e=this.model.toJSON();this.$el.html(this.html(e)),this.activeDemo(),this.navigation(),this.screenshotCheck(this.$el),this.containFocus(this.$el)},activeDemo:function(){this.$el.toggleClass("active",this.model.get("active"))},containFocus:function(t){_.delay(function(){e(".theme-wrap a.button-primary:visible").focus()},100),t.on("keydown.wp-themes",function(e){var i=t.find(".theme-header button:not(.disabled)").first(),o=t.find(".theme-actions a:visible").last();9===e.which&&(i[0]===e.target&&e.shiftKey?(o.focus(),e.preventDefault()):o[0]!==e.target||e.shiftKey||(i.focus(),e.preventDefault()))})},collapse:function(i){var o,s=this;i=i||window.event,1!==t.data.demos.length&&(e(i.target).is(".theme-backdrop")||e(i.target).is(".close")||27===i.keyCode)&&(e("body").addClass("closing-overlay"),this.$el.fadeOut(130,function(){e("body").removeClass("closing-overlay"),s.closeOverlay(),o=document.body.scrollTop,t.router.navigate(t.router.baseUrl("")),document.body.scrollTop=o,t.focusedDemo&&t.focusedDemo.focus()}))},navigation:function(){this.model.cid===this.model.collection.at(0).cid&&this.$el.find(".left").addClass("disabled").prop("disabled",!0),this.model.cid===this.model.collection.at(this.model.collection.length-1).cid&&this.$el.find(".right").addClass("disabled").prop("disabled",!0)},closeOverlay:function(){e("body").removeClass("modal-open"),this.remove(),this.unbind(),this.trigger("demo:collapse")},importDemo:function(t){var i=this,o=e(t.target);t.preventDefault(),o.hasClass("disabled")||window.confirm(wp.demos.data.settings.confirmImport)&&(e(document).on("wp-demo-import-success",function(e,t){i.model.get("id")===t.slug&&i.model.set({imported:!0})}),e(document).on("wp-updates-queue-job",function(e,t){"import-demo"===t.action&&wp.updates.importDemo(t.data)}),wp.updates.importDemo({slug:o.data("slug")}))},deleteDemo:function(i){var o=this,s=this.model.collection,n=t;i.preventDefault(),window.confirm(wp.demos.data.settings.confirmDelete)&&(wp.updates.maybeRequestFilesystemCredentials(i),e(document).one("wp-demo-delete-success",function(t,i){o.$el.find(".close").trigger("click"),e('[data-slug="'+i.slug+'"').css({backgroundColor:"#faafaa"}).fadeOut(350,function(){e(this).remove(),n.data.demos=_.without(n.data.demos,_.findWhere(n.data.demos,{id:i.slug})),e(".wp-filter-search").val(""),s.doSearch(""),s.remove(o.model),s.trigger("demos:update")})}),wp.updates.deleteDemo({slug:this.model.get("id")}))},nextDemo:function(){var e=this;return e.trigger("demo:next",e.model.cid),!1},previousDemo:function(){var e=this;return e.trigger("demo:previous",e.model.cid),!1},screenshotCheck:function(e){var t,i;t=e.find(".screenshot img"),(i=new Image).src=t.attr("src"),i.width&&i.width<=300&&e.addClass("small-screenshot")}}),t.view.Demos=wp.Backbone.View.extend({className:"themes wp-clearfix",$overlay:e("div.theme-overlay"),index:0,count:e(".wrap .demo-count"),liveDemoCount:0,initialize:function(t){var i=this;this.parent=t.parent,i.importedDemo(),this.setView("grid"),this.listenTo(i.collection,"demos:update",function(){i.parent.page=0,i.importedDemo(),i.render(this),i.parent.initTipTip()}),this.listenTo(i.collection,"query:success",function(e){_.isNumber(e)?(i.count.text(e),i.announceSearchResults(e)):(i.count.text(i.collection.length),i.announceSearchResults(i.collection.length))}),this.listenTo(i.collection,"query:empty",function(){e("body").addClass("no-results")}),this.listenTo(this.parent,"demo:scroll",function(){i.renderDemos(i.parent.page)}),this.listenTo(this.parent,"demo:close",function(){i.overlay&&i.overlay.closeOverlay()}),e("body").on("keyup",function(t){i.overlay&&(e("#request-filesystem-credentials-dialog").is(":visible")||(39===t.keyCode&&i.overlay.nextDemo(),37===t.keyCode&&i.overlay.previousDemo(),27===t.keyCode&&i.overlay.collapse(t)))})},render:function(){this.$el.empty(),t.isPreview||1!==t.data.demos.length||(this.singleDemo=new t.view.Details({model:this.collection.models[0]}),this.singleDemo.render(),this.$el.addClass("single-theme"),this.$el.append(this.singleDemo.el)),this.options.collection.size()>0&&this.renderDemos(this.parent.page),this.liveDemoCount=this.collection.count?this.collection.count:this.collection.length,this.count.text(this.liveDemoCount)},renderDemos:function(e){var o=this;o.instance=o.collection.paginate(e),0!==o.instance.size()?(o.instance.each(function(e){o.demo=new t.view.Demo({model:e,parent:o}),o.demo.render(),o.$el.append(o.demo.el),o.listenTo(o.demo,"demo:expand",o.expand,o)}),!t.isPreview&&t.isInstall&&t.data.settings.canInstall&&this.$el.append('<div class="theme add-new-theme"><a href="'+t.data.settings.installURI+'"><div class="theme-screenshot"><span></span></div><h2 class="theme-name">'+i.addNew+"</h2></a></div>"),this.parent.page++):this.parent.trigger("demo:end")},importedDemo:function(){var e,t=this;(e=t.collection.findWhere({active:!0}))&&(t.collection.remove(e),t.collection.add(e,{at:0}))},setView:function(e){return e},expand:function(i){var o,s,n=this;this.model=n.collection.get(i),t.router.navigate(t.router.baseUrl(t.router.demoPath+this.model.id)),this.setView("detail"),e("body").addClass("modal-open"),this.overlay=new t.view.Details({model:n.model}),this.overlay.render(),this.model.get("hasUpdate")&&(o=e('[data-slug="'+this.model.id+'"]'),s=e(this.overlay.el),o.find(".updating-message").length?(s.find(".notice-warning h3").remove(),s.find(".notice-warning").removeClass("notice-large").addClass("updating-message").find("p").text(wp.updates.l10n.updating)):o.find(".notice-error").length&&s.find(".notice-warning").remove()),this.$overlay.html(this.overlay.el),this.listenTo(this.overlay,"demo:next",function(){n.next([n.model.cid])}).listenTo(this.overlay,"demo:previous",function(){n.previous([n.model.cid])})},next:function(e){var t,i,o=this;t=o.collection.get(e[0]),(i=o.collection.at(o.collection.indexOf(t)+1))!==undefined&&(this.overlay.closeOverlay(),o.demo.trigger("demo:expand",i.cid))},previous:function(e){var t,i,o=this;t=o.collection.get(e[0]),(i=o.collection.at(o.collection.indexOf(t)-1))!==undefined&&(this.overlay.closeOverlay(),o.demo.trigger("demo:expand",i.cid))},announceSearchResults:function(e){0===e?wp.a11y.speak(i.noDemosFound):wp.a11y.speak(i.demosFound.replace("%d",e))}}),t.view.Search=wp.Backbone.View.extend({tagName:"input",className:"wp-filter-search",id:"wp-filter-search-input",searching:!1,attributes:{placeholder:i.searchPlaceholder,type:"search","aria-describedby":"live-search-desc"},events:{input:"search",keyup:"search",blur:"pushState"},initialize:function(e){this.parent=e.parent,this.listenTo(this.parent,"demo:close",function(){this.searching=!1})},search:function(e){"keyup"===e.type&&27===e.which&&(e.target.value=""),this.doSearch(e)},doSearch:_.debounce(function(e){var i={};this.collection.doSearch(e.target.value),this.searching&&13!==e.which?i.replace=!0:this.searching=!0,e.target.value?t.router.navigate(t.router.baseUrl(t.router.searchPath+e.target.value),i):t.router.navigate(t.router.baseUrl(""))},500),pushState:function(e){var i=t.router.baseUrl("");e.target.value&&(i=t.router.baseUrl(t.router.searchPath+e.target.value)),this.searching=!1,t.router.navigate(i)}}),t.Router=Backbone.Router.extend({routes:{"themes.php?page=demo-importer&demo=:slug":"demo","themes.php?page=demo-importer&search=:query":"search","themes.php?page=demo-importer&s=:query":"search","themes.php?page=demo-importer":"demos","":"demos"},baseUrl:function(e){return"themes.php?page=demo-importer"+e},demoPath:"&demo=",searchPath:"&search=",search:function(t){e(".wp-filter-search").val(t)},demos:function(){e(".wp-filter-search").val("")},navigate:function(){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.apply(this,arguments)}}),t.Run={init:function(){this.demos=new t.Collection(t.data.demos),this.view=new t.view.Appearance({collection:this.demos}),this.render()},render:function(){this.view.render(),this.view.initTipTip(),this.routes(),Backbone.history.start({root:t.data.settings.adminUrl,pushState:!0,hashChange:!1})},routes:function(){var i=this;t.router=new t.Router,t.router.on("route:demo",function(e){i.view.view.expand(e)}),t.router.on("route:demos",function(){i.demos.doSearch(""),i.view.trigger("demo:close")}),t.router.on("route:search",function(){e(".wp-filter-search").trigger("keyup")}),this.extraRoutes()},extraRoutes:function(){return!1}},t.view.Installer=t.view.Appearance.extend({el:"#wpbody-content .wrap",render:function(){this.search(),this.uploader(),this.view=new t.view.Demos({collection:this.collection,parent:this}),this.$el.find(".themes").remove(),this.view.render(),this.$el.find(".theme-browser").append(this.view.el).addClass("rendered")},uploader:function(){var t=e(".upload-view-toggle"),i=e(document.body);t.on("click",function(){i.toggleClass("show-upload-view"),t.attr("aria-expanded",i.hasClass("show-upload-view"))})},clearSearch:function(){e("#wp-filter-search-input").val("")}}),t.InstallerRouter=Backbone.Router.extend({routes:{"themes.php?page=demo-importer&browse=uploads&demo=:slug":"demo","themes.php?page=demo-importer&browse=:sort&search=:query":"search","themes.php?page=demo-importer&browse=:sort&s=:query":"search","themes.php?page=demo-importer&browse=welcome":"sort","themes.php?page=demo-importer&browse=:sort":"demos","themes.php?page=demo-importer":"sort"},browse:function(){return t.isPreview?"preview":"uploads"},baseUrl:function(e){return"themes.php?page=demo-importer&browse="+this.browse()+e},demoPath:"&demo=",searchPath:"&search=",search:function(t,i){e(".wp-filter-search").val(i)},demos:function(){e(".wp-filter-search").val("")},navigate:function(){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.apply(this,arguments)}}),t.RunInstaller={init:function(){this.demos=new t.Collection(t.data.demos),this.view=new t.view.Installer({collection:this.demos}),this.render()},render:function(){this.view.render(),this.view.initTipTip(),this.routes(),Backbone.history.start({root:t.data.settings.adminUrl,pushState:!0,hashChange:!1})},routes:function(){var i=this;t.router=new t.InstallerRouter,t.router.on("route:demo",function(e){i.view.view.expand(e)}),t.router.on("route:demos",function(){i.demos.doSearch(""),i.view.trigger("demo:close")}),t.router.on("route:sort",function(t){t&&"welcome"!==t||e(".wp-filter-search").hide()}),t.router.on("route:search",function(){e(".wp-filter-search").focus().trigger("keyup")}),this.extraRoutes()},extraRoutes:function(){return!1}},e(document).ready(function(){t.isInstall?t.RunInstaller.init():t.Run.init(),e(".themegrill-demo-importer-rating-link").on("click",function(){var i=e(this);e.post(t.data.settings.ajaxUrl,{action:"footer-text-rated"}),i.parent().text(i.data("rated"))}),e(".themegrill-reset-wordpress").on("click",function(){return window.confirm(t.data.settings.confirmReset)}),e("#contextual-help-link").on("click",function(){var t=e("#tab-panel-themegrill_demo_importer_guided_tour_tab iframe");t.attr("src",t.data("src"))})})}(jQuery);
|
assets/js/admin/demo-updates.js
CHANGED
@@ -17,6 +17,46 @@
|
|
17 |
*/
|
18 |
wp.updates.l10n = _.extend( wp.updates.l10n, settings.l10n || {} );
|
19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
/**
|
21 |
* Sends an Ajax request to the server to import a demo.
|
22 |
*
|
@@ -281,8 +321,6 @@
|
|
281 |
|
282 |
job = wp.updates.queue.shift();
|
283 |
|
284 |
-
job = wp.updates.queue.shift();
|
285 |
-
|
286 |
// Handle a queue job.
|
287 |
switch ( job.action ) {
|
288 |
case 'import-demo':
|
@@ -295,7 +333,6 @@
|
|
295 |
|
296 |
default:
|
297 |
break;
|
298 |
-
|
299 |
}
|
300 |
|
301 |
// Handle a queue job.
|
17 |
*/
|
18 |
wp.updates.l10n = _.extend( wp.updates.l10n, settings.l10n || {} );
|
19 |
|
20 |
+
/**
|
21 |
+
* Adds or updates an admin notice.
|
22 |
+
*
|
23 |
+
* @since 4.6.0
|
24 |
+
* @see https://core.trac.wordpress.org/ticket/41221
|
25 |
+
*
|
26 |
+
* @param {object} data
|
27 |
+
* @param {*=} data.selector Optional. Selector of an element to be replaced with the admin notice.
|
28 |
+
* @param {string=} data.id Optional. Unique id that will be used as the notice's id attribute.
|
29 |
+
* @param {string=} data.className Optional. Class names that will be used in the admin notice.
|
30 |
+
* @param {string=} data.message Optional. The message displayed in the notice.
|
31 |
+
* @param {number=} data.successes Optional. The amount of successful operations.
|
32 |
+
* @param {number=} data.errors Optional. The amount of failed operations.
|
33 |
+
* @param {Array=} data.errorMessages Optional. Error messages of failed operations.
|
34 |
+
*
|
35 |
+
*/
|
36 |
+
wp.updates.addAdminNotice = function( data ) {
|
37 |
+
var $notice = $( data.selector ),
|
38 |
+
$headerEnd = $( '.wp-header-end' ),
|
39 |
+
$adminNotice;
|
40 |
+
|
41 |
+
delete data.selector;
|
42 |
+
$adminNotice = wp.updates.adminNotice( data );
|
43 |
+
|
44 |
+
// Check if this admin notice already exists.
|
45 |
+
if ( ! $notice.length ) {
|
46 |
+
$notice = $( '#' + data.id );
|
47 |
+
}
|
48 |
+
|
49 |
+
if ( $notice.length ) {
|
50 |
+
$notice.replaceWith( $adminNotice );
|
51 |
+
} else if ( $headerEnd.length ) {
|
52 |
+
$( '.wp-header-end' ).after( $adminNotice );
|
53 |
+
} else {
|
54 |
+
$( '.wrap' ).find( '> h1' ).after( $adminNotice );
|
55 |
+
}
|
56 |
+
|
57 |
+
$document.trigger( 'wp-updates-notice-added' );
|
58 |
+
};
|
59 |
+
|
60 |
/**
|
61 |
* Sends an Ajax request to the server to import a demo.
|
62 |
*
|
321 |
|
322 |
job = wp.updates.queue.shift();
|
323 |
|
|
|
|
|
324 |
// Handle a queue job.
|
325 |
switch ( job.action ) {
|
326 |
case 'import-demo':
|
333 |
|
334 |
default:
|
335 |
break;
|
|
|
336 |
}
|
337 |
|
338 |
// Handle a queue job.
|
assets/js/admin/demo-updates.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(
|
1 |
+
!function(e,t,a){var s=e(document);(t=t||{}).updates=t.updates||{},t.updates.l10n=_.extend(t.updates.l10n,a.l10n||{}),t.updates.addAdminNotice=function(a){var d,r=e(a.selector),i=e(".wp-header-end");delete a.selector,d=t.updates.adminNotice(a),r.length||(r=e("#"+a.id)),r.length?r.replaceWith(d):i.length?e(".wp-header-end").after(d):e(".wrap").find("> h1").after(d),s.trigger("wp-updates-notice-added")},t.updates.importDemo=function(a){var d=e('.demo-import[data-slug="'+a.slug+'"]');return a=_.extend({success:t.updates.importDemoSuccess,error:t.updates.importDemoError},a),d.addClass("updating-message"),d.parents(".theme").addClass("focus"),d.html()!==t.updates.l10n.importing&&d.data("originaltext",d.html()),d.text(t.updates.l10n.importing).attr("aria-label",t.updates.l10n.demoImportingLabel.replace("%s",d.data("name"))),t.a11y.speak(t.updates.l10n.importingMsg,"polite"),e('.theme-info .theme-description, [data-slug="'+a.slug+'"]').removeClass("demo-import-failed").find(".notice.notice-error").remove(),s.trigger("wp-demo-importing",a),t.updates.ajax("import-demo",a)},t.updates.importDemoSuccess=function(a){var d,r=e(".theme-overlay, [data-slug="+a.slug+"]");s.trigger("wp-demo-import-success",a),d=r.find(".button-primary").removeClass("updating-message").addClass("updated-message disabled").attr("aria-label",t.updates.l10n.demoImportedLabel.replace("%s",a.demoName)).text(t.updates.l10n.imported),t.a11y.speak(t.updates.l10n.importedMsg,"polite"),setTimeout(function(){a.previewUrl&&(d.siblings(".demo-preview").remove(),d.attr("target","_blank").attr("href",a.previewUrl).removeClass("demo-import updated-message disabled").addClass("live-preview").attr("aria-label",t.updates.l10n.livePreviewLabel.replace("%s",a.demoName)).text(t.updates.l10n.livePreview))},1e3)},t.updates.importDemoError=function(a){var d,r=t.updates.l10n.importFailed.replace("%s",a.errorMessage),i=t.updates.adminNotice({className:"update-message notice-error notice-alt",message:r});t.updates.isValidResponse(a,"import")&&(s.find("body").hasClass("modal-open")||s.find(".themes").hasClass("single-theme")?(d=e('.demo-import[data-slug="'+a.slug+'"]'),e(".theme-info .theme-description").prepend(i)):d=e('[data-slug="'+a.slug+'"]').removeClass("focus").addClass("demo-import-failed").append(i).find(".demo-import"),d.removeClass("updating-message").attr("aria-label",t.updates.l10n.demoImportFailedLabel.replace("%s",d.data("name"))).text(t.updates.l10n.importFailedShort),t.a11y.speak(r,"assertive"),s.trigger("wp-demo-import-error",a))},t.updates.deleteDemo=function(a){var d=e(".theme-actions .delete-demo");return a=_.extend({success:t.updates.deleteDemoSuccess,error:t.updates.deleteDemoError},a),d&&d.html()!==t.updates.l10n.deleting&&d.data("originaltext",d.html()).text(t.updates.l10n.deleting),t.a11y.speak(t.updates.l10n.deleting,"polite"),e(".theme-info .update-message").remove(),s.trigger("wp-demo-deleting",a),t.updates.ajax("delete-demo",a)},t.updates.deleteDemoSuccess=function(e){t.a11y.speak(t.updates.l10n.deleted,"polite"),s.trigger("wp-demo-delete-success",e)},t.updates.deleteDemoError=function(a){var d=e(".theme-actions .delete-demo"),r=t.updates.l10n.deleteFailed.replace("%s",a.errorMessage),i=t.updates.adminNotice({className:"update-message notice-error notice-alt",message:r});t.updates.maybeHandleCredentialError(a,"delete-demo")||(e(".theme-info .theme-description").before(i),d.html(d.data("originaltext")),t.a11y.speak(r,"assertive"),s.trigger("wp-demo-delete-error",a))},t.updates.isValidResponse=function(a,s){var d,r=t.updates.l10n.unknownError;if(_.isObject(a)&&!_.isFunction(a.always))return!0;switch(_.isString(a)&&"-1"===a?r=t.updates.l10n.nonceError:_.isString(a)?r=a:"undefined"!=typeof a.readyState&&0===a.readyState?r=t.updates.l10n.connectionError:_.isString(a.statusText)&&(r=a.statusText+" "+t.updates.l10n.statusTextLink),s){case"import":d=t.updates.l10n.importFailed}return d=d.replace("%s",r),t.updates.addAdminNotice({id:"unknown_error",className:"notice-error is-dismissible",message:_.unescape(d)}),e(".button.updating-message").removeClass("updating-message").removeAttr("aria-label").text(t.updates.l10n.updateFailedShort),t.a11y.speak(d,"assertive"),!1},t.updates.queueChecker=function(){var e;if(!t.updates.ajaxLocked&&t.updates.queue.length){switch((e=t.updates.queue.shift()).action){case"import-demo":t.updates.importDemo(e.data);break;case"delete-demo":t.updates.deleteDemo(e.data)}s.trigger("wp-updates-queue-job",e)}}}(jQuery,window.wp,window._demoUpdatesSettings);
|
assets/js/jquery-tiptip/jquery.tipTip.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(
|
1 |
+
!function(t){t.fn.tipTip=function(e){var o={activation:"hover",keepAlive:!1,maxWidth:"200px",edgeOffset:3,defaultPosition:"bottom",delay:400,fadeIn:200,fadeOut:200,attribute:"title",content:!1,enter:function(){},exit:function(){}},i=t.extend(o,e);if(t("#tiptip_holder").length<=0){var n=t('<div id="tiptip_holder" style="max-width:'+i.maxWidth+';"></div>'),r=t('<div id="tiptip_content"></div>'),a=t('<div id="tiptip_arrow"></div>');t("body").append(n.html(r).prepend(a.html('<div id="tiptip_arrow_inner"></div>')))}else var n=t("#tiptip_holder"),r=t("#tiptip_content"),a=t("#tiptip_arrow");return this.each(function(){function e(){i.enter.call(this),r.html(d),n.hide().removeAttr("class").css("margin","0"),a.removeAttr("style");var e=parseInt(f.offset().top),o=parseInt(f.offset().left),p=parseInt(f.outerWidth()),l=parseInt(f.outerHeight()),h=n.outerWidth(),c=n.outerHeight(),s=Math.round((p-h)/2),_=Math.round((l-c)/2),v=Math.round(o+s),m=Math.round(e+l+i.edgeOffset),g="",b="",M=Math.round(h-12)/2;"bottom"==i.defaultPosition?g="_bottom":"top"==i.defaultPosition?g="_top":"left"==i.defaultPosition?g="_left":"right"==i.defaultPosition&&(g="_right");var w=s+o<parseInt(t(window).scrollLeft()),O=h+o>parseInt(t(window).width());w&&s<0||"_right"==g&&!O||"_left"==g&&o<h+i.edgeOffset+5?(g="_right",b=Math.round(c-13)/2,M=-12,v=Math.round(o+p+i.edgeOffset),m=Math.round(e+_)):(O&&s<0||"_left"==g&&!w)&&(g="_left",b=Math.round(c-13)/2,M=Math.round(h),v=Math.round(o-(h+i.edgeOffset+5)),m=Math.round(e+_));var x=e+l+i.edgeOffset+c+8>parseInt(t(window).height()+t(window).scrollTop()),I=e+l-(i.edgeOffset+c+8)<0;x||"_bottom"==g&&x||"_top"==g&&!I?("_top"==g||"_bottom"==g?g="_top":g+="_top",b=c,m=Math.round(e-(c+5+i.edgeOffset))):(I|("_top"==g&&I)||"_bottom"==g&&!x)&&("_top"==g||"_bottom"==g?g="_bottom":g+="_bottom",b=-12,m=Math.round(e+l+i.edgeOffset)),"_right_top"==g||"_left_top"==g?m+=5:"_right_bottom"!=g&&"_left_bottom"!=g||(m-=5),"_left_top"!=g&&"_left_bottom"!=g||(v+=5),a.css({"margin-left":M+"px","margin-top":b+"px"}),n.css({"margin-left":v+"px","margin-top":m+"px"}).attr("class","tip"+g),u&&clearTimeout(u),u=setTimeout(function(){n.stop(!0,!0).fadeIn(i.fadeIn)},i.delay)}function o(){i.exit.call(this),u&&clearTimeout(u),n.fadeOut(i.fadeOut)}var f=t(this);if(i.content)d=i.content;else var d=f.attr(i.attribute);if(""!=d){i.content||f.removeAttr(i.attribute);var u=!1;"hover"==i.activation?(f.hover(function(){e()},function(){i.keepAlive||o()}),i.keepAlive&&n.hover(function(){},function(){o()})):"focus"==i.activation?f.focus(function(){e()}).blur(function(){o()}):"click"==i.activation&&(f.click(function(){return e(),!1}).hover(function(){},function(){i.keepAlive||o()}),i.keepAlive&&n.hover(function(){},function(){o()}))}})}}(jQuery);
|
includes/class-demo-importer.php
CHANGED
@@ -45,14 +45,27 @@ class TG_Demo_Importer {
|
|
45 |
|
46 |
// Add Demo Importer menu.
|
47 |
if ( apply_filters( 'themegrill_show_demo_importer_page', true ) ) {
|
48 |
-
add_action( 'admin_menu', array( $this, '
|
49 |
add_action( 'admin_head', array( $this, 'add_menu_classes' ) );
|
50 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
|
51 |
}
|
52 |
|
53 |
-
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
add_action( 'wp_ajax_import-demo', array( $this, 'ajax_import_demo' ) );
|
55 |
-
add_action( '
|
56 |
|
57 |
// Update custom nav menu items and siteorigin panel data.
|
58 |
add_action( 'themegrill_ajax_demo_imported', array( $this, 'update_nav_menu_items' ) );
|
@@ -93,38 +106,11 @@ class TG_Demo_Importer {
|
|
93 |
|
94 |
// If enabled demo pack, load from upload dir.
|
95 |
if ( $this->is_enabled_demo_pack( $demo_dir ) ) {
|
96 |
-
$
|
97 |
-
$working_dir = $upload_dir['baseurl'] . '/tg-demo-pack/' . $demo_dir;
|
98 |
}
|
99 |
|
100 |
return trailingslashit( $working_dir ) . sanitize_file_name( $filename );
|
101 |
}
|
102 |
-
/**
|
103 |
-
* Get theme screenshot url to be used in demo importer preview
|
104 |
-
*
|
105 |
-
* @param string $demo_id
|
106 |
-
* @param string $demo_assets_path
|
107 |
-
* @param string $current_template
|
108 |
-
* @return string
|
109 |
-
*/
|
110 |
-
public function get_screenshot_url( $demo_id, $demo_assets_path, $current_template ) {
|
111 |
-
$dir = plugin_dir_path( __FILE__ );
|
112 |
-
|
113 |
-
//build screenshot url that reside inside the plugin
|
114 |
-
$screenshot_plugin_url = $demo_assets_path. 'images/' .$current_template. '/' .$demo_id. '.jpg';
|
115 |
-
|
116 |
-
//build screenshot path that reside inside the plugin
|
117 |
-
$screenshot_plugin_path = ThemeGrill_Demo_Importer::plugin_dir_path() . '/assets/images/' .$current_template. '/' .$demo_id. '.jpg';
|
118 |
-
|
119 |
-
if ( file_exists( $screenshot_plugin_path ) ) {
|
120 |
-
$screenshot_url = $screenshot_plugin_url;
|
121 |
-
} else {
|
122 |
-
$theme_data = wp_get_theme();
|
123 |
-
$screenshot_url = $theme_data->get_screenshot();
|
124 |
-
}
|
125 |
-
return $screenshot_url;
|
126 |
-
|
127 |
-
}
|
128 |
|
129 |
/**
|
130 |
* Get the import file path.
|
@@ -138,13 +124,35 @@ class TG_Demo_Importer {
|
|
138 |
|
139 |
// If enabled demo pack, load from upload dir.
|
140 |
if ( $this->is_enabled_demo_pack( $demo_dir ) ) {
|
141 |
-
$
|
142 |
-
$working_dir = $upload_dir['basedir'] . '/tg-demo-pack/' . $demo_dir . '/dummy-data';
|
143 |
}
|
144 |
|
145 |
return trailingslashit( $working_dir ) . sanitize_file_name( $filename );
|
146 |
}
|
147 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
/**
|
149 |
* Check if demo pack is enabled.
|
150 |
* @param array $demo_id
|
@@ -161,7 +169,7 @@ class TG_Demo_Importer {
|
|
161 |
/**
|
162 |
* Add menu item.
|
163 |
*/
|
164 |
-
public function
|
165 |
add_theme_page( __( 'Demo Importer', 'themegrill-demo-importer' ), __( 'Demo Importer', 'themegrill-demo-importer' ), 'switch_themes', 'demo-importer', array( $this, 'demo_importer' ) );
|
166 |
}
|
167 |
|
@@ -193,15 +201,18 @@ class TG_Demo_Importer {
|
|
193 |
$screen = get_current_screen();
|
194 |
$screen_id = $screen ? $screen->id : '';
|
195 |
$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
|
196 |
-
$assets_path =
|
|
|
|
|
|
|
197 |
|
198 |
-
//
|
199 |
-
|
200 |
|
201 |
-
// Register
|
202 |
wp_register_script( 'jquery-tiptip', $assets_path . 'js/jquery-tiptip/jquery.tipTip' . $suffix . '.js', array( 'jquery' ), '1.3', true );
|
203 |
-
wp_register_script( 'tg-demo-updates', $assets_path . 'js/admin/demo-updates' . $suffix . '.js', array( 'jquery', 'updates' ),
|
204 |
-
wp_register_script( 'tg-demo-importer', $assets_path . 'js/admin/demo-importer' . $suffix . '.js', array( 'jquery', 'jquery-tiptip', 'wp-backbone', 'wp-a11y', 'tg-demo-updates' ),
|
205 |
|
206 |
// Demo Importer appearance page.
|
207 |
if ( 'appearance_page_demo-importer' === $screen_id ) {
|
@@ -221,15 +232,16 @@ class TG_Demo_Importer {
|
|
221 |
'livePreviewLabel' => _x( 'Live Preview %s', 'demo', 'themegrill-demo-importer' ),
|
222 |
'imported' => __( 'Imported!', 'themegrill-demo-importer' ),
|
223 |
'statusTextLink' => '<a href="https://docs.themegrill.com/knowledgebase/demo-import-process-failed/" target="_blank">' . __( 'Try this solution!', 'themegrill-demo-importer' ) . '</a>',
|
224 |
-
)
|
225 |
) );
|
226 |
wp_localize_script( 'tg-demo-importer', 'demoImporterLocalizeScript', array(
|
227 |
-
'demos' => $this->
|
228 |
'settings' => array(
|
229 |
'isPreview' => $this->is_preview(),
|
230 |
'isInstall' => $this->demo_installer,
|
231 |
'canInstall' => current_user_can( 'upload_files' ),
|
232 |
'installURI' => current_user_can( 'upload_files' ) ? self_admin_url( 'themes.php?page=demo-importer&browse=preview' ) : null,
|
|
|
233 |
'confirmDelete' => __( "Are you sure you want to delete this demo?\n\nClick 'Cancel' to go back, 'OK' to confirm the delete.", 'themegrill-demo-importer' ),
|
234 |
'confirmImport' => __( 'Importing demo content will replicate the live demo and overwrites your current customizer, widgets and other settings. It might take few minutes to complete the demo import. Are you sure you want to import this demo?', 'themegrill-demo-importer' ),
|
235 |
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
|
@@ -248,78 +260,236 @@ class TG_Demo_Importer {
|
|
248 |
}
|
249 |
|
250 |
/**
|
251 |
-
*
|
252 |
-
* @
|
|
|
253 |
*/
|
254 |
-
public function
|
255 |
-
if (
|
256 |
-
return
|
257 |
}
|
258 |
|
259 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260 |
}
|
261 |
|
262 |
/**
|
263 |
-
*
|
264 |
*/
|
265 |
-
|
266 |
-
$
|
267 |
-
$current_template = get_option( 'template' );
|
268 |
-
$demo_imported_id = get_option( 'themegrill_demo_imported_id' );
|
269 |
-
$demo_assets_path = ThemeGrill_Demo_Importer::plugin_url() . '/assets/';
|
270 |
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
* @param array $prepared_demos An associative array of demo data. Default empty array.
|
275 |
-
* @param null|array $demos An array of demo config to prepare, if any.
|
276 |
-
* @param string $demo_imported_id The current demo imported id.
|
277 |
-
*/
|
278 |
-
$prepared_demos = (array) apply_filters( 'themegrill_demo_importer_pre_prepare_demos_for_js', array(), $demos, $demo_imported_id );
|
279 |
|
280 |
-
|
281 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
282 |
}
|
283 |
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
|
|
|
|
295 |
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
310 |
}
|
311 |
}
|
|
|
312 |
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
323 |
}
|
324 |
|
325 |
/**
|
@@ -329,32 +499,34 @@ class TG_Demo_Importer {
|
|
329 |
* @return array An associative array of demo data, sorted by name.
|
330 |
*/
|
331 |
private function prepare_demos_for_js( $demos = null ) {
|
332 |
-
$prepared_demos
|
333 |
-
$current_template
|
334 |
-
$
|
335 |
|
336 |
/**
|
337 |
* Filters demo data before it is prepared for JavaScript.
|
338 |
*
|
339 |
-
* @param array $prepared_demos
|
340 |
-
* @param null|array $demos
|
341 |
-
* @param string $
|
342 |
*/
|
343 |
-
$prepared_demos = (array) apply_filters( 'themegrill_demo_importer_pre_prepare_demos_for_js', array(), $demos, $
|
344 |
|
345 |
if ( ! empty( $prepared_demos ) ) {
|
346 |
return $prepared_demos;
|
347 |
}
|
348 |
|
349 |
// Make sure the imported demo is listed first.
|
350 |
-
if ( isset( $demos[ $
|
351 |
-
$prepared_demos[ $
|
352 |
}
|
353 |
|
354 |
if ( ! empty( $demos ) ) {
|
355 |
foreach ( $demos as $demo_id => $demo_data ) {
|
356 |
$demo_notices = array();
|
357 |
$encoded_slug = urlencode( $demo_id );
|
|
|
|
|
358 |
$demo_package = isset( $demo_data['demo_pack'] ) ? $demo_data['demo_pack'] : false;
|
359 |
$plugins_list = isset( $demo_data['plugins_list'] ) ? $demo_data['plugins_list'] : array();
|
360 |
|
@@ -370,26 +542,48 @@ class TG_Demo_Importer {
|
|
370 |
$demo_notices['required_plugins'] = true;
|
371 |
}
|
372 |
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
// Prepare all demos.
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
'
|
391 |
-
|
392 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
393 |
}
|
394 |
}
|
395 |
|
@@ -409,7 +603,7 @@ class TG_Demo_Importer {
|
|
409 |
* Demo Importer page output.
|
410 |
*/
|
411 |
public function demo_importer() {
|
412 |
-
$demos = $this->prepare_demos_for_js( $this->demo_config );
|
413 |
|
414 |
if ( isset( $_GET['action'] ) && 'upload-demo' === $_GET['action'] ) {
|
415 |
$this->upload_demo_pack();
|
@@ -450,23 +644,6 @@ class TG_Demo_Importer {
|
|
450 |
}
|
451 |
}
|
452 |
|
453 |
-
/**
|
454 |
-
* Ajax handler for dismissing notice.
|
455 |
-
*/
|
456 |
-
public function ajax_dismiss_notice() {
|
457 |
-
if ( ! current_user_can( 'manage_options' ) ) {
|
458 |
-
die( -1 );
|
459 |
-
}
|
460 |
-
|
461 |
-
$notice_id = sanitize_text_field( stripslashes( $_POST['notice_id'] ) );
|
462 |
-
|
463 |
-
if ( ! empty( $notice_id ) && 'demo-importer' == $notice_id ) {
|
464 |
-
update_option( 'themegrill_demo_imported_notice_dismiss', 1 );
|
465 |
-
}
|
466 |
-
|
467 |
-
die();
|
468 |
-
}
|
469 |
-
|
470 |
/**
|
471 |
* Ajax handler for importing a demo.
|
472 |
*/
|
@@ -508,7 +685,7 @@ class TG_Demo_Importer {
|
|
508 |
$this->import_widget_settings( $slug, $demo_data, $status );
|
509 |
|
510 |
// Update imported demo ID.
|
511 |
-
update_option( '
|
512 |
|
513 |
do_action( 'themegrill_ajax_demo_imported', $slug, $demo_data );
|
514 |
}
|
@@ -519,6 +696,18 @@ class TG_Demo_Importer {
|
|
519 |
wp_send_json_success( $status );
|
520 |
}
|
521 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
522 |
/**
|
523 |
* Import dummy content from a XML file.
|
524 |
* @param string $demo_id
|
@@ -808,150 +997,159 @@ class TG_Demo_Importer {
|
|
808 |
return $data;
|
809 |
}
|
810 |
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
955 |
}
|
956 |
|
957 |
new TG_Demo_Importer();
|
45 |
|
46 |
// Add Demo Importer menu.
|
47 |
if ( apply_filters( 'themegrill_show_demo_importer_page', true ) ) {
|
48 |
+
add_action( 'admin_menu', array( $this, 'admin_menu' ), 9 );
|
49 |
add_action( 'admin_head', array( $this, 'add_menu_classes' ) );
|
50 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
|
51 |
}
|
52 |
|
53 |
+
// Help Tabs.
|
54 |
+
if ( apply_filters( 'themegrill_demo_importer_enable_admin_help_tab', true ) ) {
|
55 |
+
add_action( 'current_screen', array( $this, 'add_help_tabs' ), 50 );
|
56 |
+
}
|
57 |
+
|
58 |
+
// Reset Wizard.
|
59 |
+
add_action( 'wp_loaded', array( $this, 'hide_reset_notice' ) );
|
60 |
+
add_action( 'admin_init', array( $this, 'reset_wizard_actions' ) );
|
61 |
+
add_action( 'admin_notices', array( $this, 'reset_wizard_notice' ) );
|
62 |
+
|
63 |
+
// Footer rating text.
|
64 |
+
add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ), 1 );
|
65 |
+
|
66 |
+
// AJAX Events to import demo and update rating footer.
|
67 |
add_action( 'wp_ajax_import-demo', array( $this, 'ajax_import_demo' ) );
|
68 |
+
add_action( 'wp_ajax_footer-text-rated', array( $this, 'ajax_footer_text_rated' ) );
|
69 |
|
70 |
// Update custom nav menu items and siteorigin panel data.
|
71 |
add_action( 'themegrill_ajax_demo_imported', array( $this, 'update_nav_menu_items' ) );
|
106 |
|
107 |
// If enabled demo pack, load from upload dir.
|
108 |
if ( $this->is_enabled_demo_pack( $demo_dir ) ) {
|
109 |
+
$working_dir = TGDM_DEMO_URL . $demo_dir;
|
|
|
110 |
}
|
111 |
|
112 |
return trailingslashit( $working_dir ) . sanitize_file_name( $filename );
|
113 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
|
115 |
/**
|
116 |
* Get the import file path.
|
124 |
|
125 |
// If enabled demo pack, load from upload dir.
|
126 |
if ( $this->is_enabled_demo_pack( $demo_dir ) ) {
|
127 |
+
$working_dir = TGDM_DEMO_DIR . $demo_dir . '/dummy-data';
|
|
|
128 |
}
|
129 |
|
130 |
return trailingslashit( $working_dir ) . sanitize_file_name( $filename );
|
131 |
}
|
132 |
|
133 |
+
/**
|
134 |
+
* Get the demo preview screenshot URL.
|
135 |
+
*
|
136 |
+
* @param string $demo_dir
|
137 |
+
* @param string $current_template
|
138 |
+
* @return string the demo preview screenshot URL.
|
139 |
+
*/
|
140 |
+
public function get_screenshot_url( $demo_dir, $current_template ) {
|
141 |
+
$screenshot_theme_path = get_template_directory() . "/images/demo/{$demo_dir}.jpg";
|
142 |
+
$screenshot_plugin_path = TGDM()->plugin_path() . "/assets/images/{$current_template}/{$demo_dir}.jpg";
|
143 |
+
|
144 |
+
if ( file_exists( $screenshot_theme_path ) ) {
|
145 |
+
$screenshot_url = get_template_directory_uri() . "/images/demo/{$demo_dir}.jpg";
|
146 |
+
} elseif ( file_exists( $screenshot_plugin_path ) ) {
|
147 |
+
$screenshot_url = TGDM()->plugin_url() . "/assets/images/{$current_template}/{$demo_dir}.jpg";
|
148 |
+
} else {
|
149 |
+
$theme_data = wp_get_theme();
|
150 |
+
$screenshot_url = $theme_data->get_screenshot();
|
151 |
+
}
|
152 |
+
|
153 |
+
return $screenshot_url;
|
154 |
+
}
|
155 |
+
|
156 |
/**
|
157 |
* Check if demo pack is enabled.
|
158 |
* @param array $demo_id
|
169 |
/**
|
170 |
* Add menu item.
|
171 |
*/
|
172 |
+
public function admin_menu() {
|
173 |
add_theme_page( __( 'Demo Importer', 'themegrill-demo-importer' ), __( 'Demo Importer', 'themegrill-demo-importer' ), 'switch_themes', 'demo-importer', array( $this, 'demo_importer' ) );
|
174 |
}
|
175 |
|
201 |
$screen = get_current_screen();
|
202 |
$screen_id = $screen ? $screen->id : '';
|
203 |
$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
|
204 |
+
$assets_path = TGDM()->plugin_url() . '/assets/';
|
205 |
+
|
206 |
+
// Register admin styles.
|
207 |
+
wp_register_style( 'tg-demo-importer', $assets_path . 'css/demo-importer.css', array(), TGDM_VERSION );
|
208 |
|
209 |
+
// Add RTL support for admin styles.
|
210 |
+
wp_style_add_data( 'tg-demo-importer', 'rtl', 'replace' );
|
211 |
|
212 |
+
// Register admin scripts.
|
213 |
wp_register_script( 'jquery-tiptip', $assets_path . 'js/jquery-tiptip/jquery.tipTip' . $suffix . '.js', array( 'jquery' ), '1.3', true );
|
214 |
+
wp_register_script( 'tg-demo-updates', $assets_path . 'js/admin/demo-updates' . $suffix . '.js', array( 'jquery', 'updates' ), TGDM_VERSION, true );
|
215 |
+
wp_register_script( 'tg-demo-importer', $assets_path . 'js/admin/demo-importer' . $suffix . '.js', array( 'jquery', 'jquery-tiptip', 'wp-backbone', 'wp-a11y', 'tg-demo-updates' ), TGDM_VERSION, true );
|
216 |
|
217 |
// Demo Importer appearance page.
|
218 |
if ( 'appearance_page_demo-importer' === $screen_id ) {
|
232 |
'livePreviewLabel' => _x( 'Live Preview %s', 'demo', 'themegrill-demo-importer' ),
|
233 |
'imported' => __( 'Imported!', 'themegrill-demo-importer' ),
|
234 |
'statusTextLink' => '<a href="https://docs.themegrill.com/knowledgebase/demo-import-process-failed/" target="_blank">' . __( 'Try this solution!', 'themegrill-demo-importer' ) . '</a>',
|
235 |
+
),
|
236 |
) );
|
237 |
wp_localize_script( 'tg-demo-importer', 'demoImporterLocalizeScript', array(
|
238 |
+
'demos' => $this->prepare_demos_for_js( $this->is_preview() ? $this->demo_packages : $this->demo_config ),
|
239 |
'settings' => array(
|
240 |
'isPreview' => $this->is_preview(),
|
241 |
'isInstall' => $this->demo_installer,
|
242 |
'canInstall' => current_user_can( 'upload_files' ),
|
243 |
'installURI' => current_user_can( 'upload_files' ) ? self_admin_url( 'themes.php?page=demo-importer&browse=preview' ) : null,
|
244 |
+
'confirmReset' => __( 'It is strongly recommended that you backup your database before proceeding. Are you sure you wish to run the reset wizard now?', 'themegrill-demo-importer' ),
|
245 |
'confirmDelete' => __( "Are you sure you want to delete this demo?\n\nClick 'Cancel' to go back, 'OK' to confirm the delete.", 'themegrill-demo-importer' ),
|
246 |
'confirmImport' => __( 'Importing demo content will replicate the live demo and overwrites your current customizer, widgets and other settings. It might take few minutes to complete the demo import. Are you sure you want to import this demo?', 'themegrill-demo-importer' ),
|
247 |
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
|
260 |
}
|
261 |
|
262 |
/**
|
263 |
+
* Change the admin footer text.
|
264 |
+
* @param string $footer_text
|
265 |
+
* @return string
|
266 |
*/
|
267 |
+
public function admin_footer_text( $footer_text ) {
|
268 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
269 |
+
return $footer_text;
|
270 |
}
|
271 |
|
272 |
+
$current_screen = get_current_screen();
|
273 |
+
|
274 |
+
// Check to make sure we're on a ThemeGrill Demo Importer admin page.
|
275 |
+
if ( isset( $current_screen->id ) && apply_filters( 'themegrill_demo_importer_display_admin_footer_text', in_array( $current_screen->id, array( 'appearance_page_demo-importer' ) ) ) ) {
|
276 |
+
// Change the footer text.
|
277 |
+
if ( ! get_option( 'themegrill_demo_importer_admin_footer_text_rated' ) ) {
|
278 |
+
$footer_text = sprintf( __( 'If you like <strong>ThemeGrill Demo Importer</strong> please leave us a %s★★★★★%s rating. A huge thanks in advance!', 'themegrill-demo-importer' ), '<a href="https://wordpress.org/support/plugin/themegrill-demo-importer/reviews?rate=5#new-post" target="_blank" class="themegrill-demo-importer-rating-link" data-rated="' . esc_attr__( 'Thanks :)', 'themegrill-demo-importer' ) . '">', '</a>' );
|
279 |
+
} else {
|
280 |
+
$footer_text = __( 'Thank you for importing with ThemeGrill Demo Importer.', 'themegrill-demo-importer' );
|
281 |
+
}
|
282 |
+
}
|
283 |
+
|
284 |
+
return $footer_text;
|
285 |
}
|
286 |
|
287 |
/**
|
288 |
+
* Add Contextual help tabs.
|
289 |
*/
|
290 |
+
public function add_help_tabs() {
|
291 |
+
$screen = get_current_screen();
|
|
|
|
|
|
|
292 |
|
293 |
+
if ( ! $screen || ! in_array( $screen->id, array( 'appearance_page_demo-importer' ) ) ) {
|
294 |
+
return;
|
295 |
+
}
|
|
|
|
|
|
|
|
|
|
|
296 |
|
297 |
+
$video_map = array(
|
298 |
+
'demo-importer' => array(
|
299 |
+
'title' => __( 'Importing Demo', 'themegrill-demo-importer' ),
|
300 |
+
'url' => '//fast.wistia.net/embed/iframe/ctdquor9uh.jsonp?',
|
301 |
+
),
|
302 |
+
);
|
303 |
+
|
304 |
+
$page = empty( $_GET['page'] ) ? '' : sanitize_title( $_GET['page'] );
|
305 |
+
$video_key = $page ? $page : $screen->id;
|
306 |
+
|
307 |
+
if ( ! $this->demo_installer && isset( $video_map[ $video_key ] ) ) {
|
308 |
+
$screen->add_help_tab( array(
|
309 |
+
'id' => 'themegrill_demo_importer_guided_tour_tab',
|
310 |
+
'title' => __( 'Guided Tour', 'themegrill-demo-importer' ),
|
311 |
+
'content' =>
|
312 |
+
'<h2>' . __( 'Guided Tour', 'themegrill-demo-importer' ) . ' – ' . esc_html( $video_map[ $video_key ]['title'] ) . '</h2>' .
|
313 |
+
'<div class="wistia_responsive_padding" style="padding:56.25% 0 0 0;position:relative;">
|
314 |
+
<div class="wistia_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;">
|
315 |
+
<iframe src="' . esc_url( $video_map[ $video_key ]['url'] ) . 'seo=false&videoFoam=true" title="Wistia video player" allowtransparency="true" frameborder="0" scrolling="no" class="wistia_embed" name="wistia_embed" allowfullscreen mozallowfullscreen webkitallowfullscreen oallowfullscreen msallowfullscreen width="100%" height="100%"></iframe>
|
316 |
+
</div></div>
|
317 |
+
<script src="//fast.wistia.net/assets/external/E-v1.js" async></script>',
|
318 |
+
) );
|
319 |
}
|
320 |
|
321 |
+
$screen->add_help_tab( array(
|
322 |
+
'id' => 'themegrill_demo_importer_support_tab',
|
323 |
+
'title' => __( 'Help & Support', 'themegrill-demo-importer' ),
|
324 |
+
'content' =>
|
325 |
+
'<h2>' . __( 'Help & Support', 'themegrill-demo-importer' ) . '</h2>' .
|
326 |
+
'<p>' . sprintf(
|
327 |
+
__( 'Should you need help understanding, using, or extending ThemeGrill Demo Importer, <a href="%s">please read our documentation</a>. You will find all kinds of resources including snippets, tutorials and much more.' , 'themegrill-demo-importer' ),
|
328 |
+
'https://themegrill.com/docs/themegrill-demo-importer/'
|
329 |
+
) . '</p>' .
|
330 |
+
'<p>' . sprintf(
|
331 |
+
__( 'For further assistance with ThemeGrill Demo Importer core you can use the <a href="%1$s">community forum</a>. If you need help with premium themes sold by ThemeGrill, please <a href="%2$s">use our free support forum</a>.', 'themegrill-demo-importer' ),
|
332 |
+
'https://wordpress.org/support/plugin/themegrill-demo-importer',
|
333 |
+
'https://themegrill.com/support-forum/'
|
334 |
+
) . '</p>' .
|
335 |
+
'<p><a href="' . 'https://wordpress.org/support/plugin/themegrill-demo-importer' . '" class="button button-primary">' . __( 'Community forum', 'themegrill-demo-importer' ) . '</a> <a href="' . 'https://themegrill.com/support-forum/' . '" class="button">' . __( 'ThemeGrill Support', 'themegrill-demo-importer' ) . '</a></p>',
|
336 |
+
) );
|
337 |
+
|
338 |
+
$screen->add_help_tab( array(
|
339 |
+
'id' => 'themegrill_demo_importer_bugs_tab',
|
340 |
+
'title' => __( 'Found a bug?', 'themegrill-demo-importer' ),
|
341 |
+
'content' =>
|
342 |
+
'<h2>' . __( 'Found a bug?', 'themegrill-demo-importer' ) . '</h2>' .
|
343 |
+
'<p>' . sprintf( __( 'If you find a bug within ThemeGrill Demo Importer you can create a ticket via <a href="%1$s">Github issues</a>. Ensure you read the <a href="%2$s">contribution guide</a> prior to submitting your report. To help us solve your issue, please be as descriptive as possible.', 'themegrill-demo-importer' ), 'https://github.com/themegrill/themegrill-demo-importer/issues?state=open', 'https://github.com/themegrill/themegrill-demo-importer/blob/master/.github/CONTRIBUTING.md' ) . '</p>' .
|
344 |
+
'<p><a href="' . 'https://github.com/themegrill/themegrill-demo-importer/issues?state=open' . '" class="button button-primary">' . __( 'Report a bug', 'themegrill-demo-importer' ) . '</a></p>',
|
345 |
+
|
346 |
+
) );
|
347 |
+
|
348 |
+
$screen->add_help_tab( array(
|
349 |
+
'id' => 'themegrill_demo_importer_reset_tab',
|
350 |
+
'title' => __( 'Reset wizard', 'themegrill-demo-importer' ),
|
351 |
+
'content' =>
|
352 |
+
'<h2>' . __( 'Reset wizard', 'themegrill-demo-importer' ) . '</h2>' .
|
353 |
+
'<p>' . __( 'If you need to reset the WordPress back to default again, please click on the button below.', 'themegrill-demo-importer' ) . '</p>' .
|
354 |
+
'<p><a href="' . esc_url( add_query_arg( 'do_reset_wordpress', 'true', admin_url( 'themes.php?page=demo-importer' ) ) ) . '" class="button button-primary themegrill-reset-wordpress">' . __( 'Reset wizard', 'themegrill-demo-importer' ) . '</a></p>',
|
355 |
+
) );
|
356 |
+
|
357 |
+
$screen->set_help_sidebar(
|
358 |
+
'<p><strong>' . __( 'For more information:', 'themegrill-demo-importer' ) . '</strong></p>' .
|
359 |
+
'<p><a href="' . 'https://themegrill.com/demo-importer/' . '" target="_blank">' . __( 'About Demo Importer', 'themegrill-demo-importer' ) . '</a></p>' .
|
360 |
+
'<p><a href="' . 'https://wordpress.org/plugins/themegrill-demo-importer/' . '" target="_blank">' . __( 'WordPress.org project', 'themegrill-demo-importer' ) . '</a></p>' .
|
361 |
+
'<p><a href="' . 'https://github.com/themegrill/themegrill-demo-importer' . '" target="_blank">' . __( 'Github project', 'themegrill-demo-importer' ) . '</a></p>' .
|
362 |
+
'<p><a href="' . 'https://themegrill.com/wordpress-themes/' . '" target="_blank">' . __( 'Official themes', 'themegrill-demo-importer' ) . '</a></p>' .
|
363 |
+
'<p><a href="' . 'https://themegrill.com/plugins/' . '" target="_blank">' . __( 'Official plugins', 'themegrill-demo-importer' ) . '</a></p>'
|
364 |
+
);
|
365 |
+
}
|
366 |
|
367 |
+
/**
|
368 |
+
* Reset wizard notice.
|
369 |
+
*/
|
370 |
+
public function reset_wizard_notice() {
|
371 |
+
$screen = get_current_screen();
|
372 |
+
$demo_activated_id = get_option( 'themegrill_demo_importer_activated_id' );
|
373 |
+
$demo_notice_dismiss = get_option( 'themegrill_demo_importer_reset_notice' );
|
374 |
|
375 |
+
if ( ! $screen || ! in_array( $screen->id, array( 'appearance_page_demo-importer' ) ) ) {
|
376 |
+
return;
|
377 |
+
}
|
378 |
+
|
379 |
+
// Output reset wizard notice.
|
380 |
+
if ( ! $demo_notice_dismiss && in_array( $demo_activated_id, array_keys( $this->demo_config ) ) ) {
|
381 |
+
include_once( dirname( __FILE__ ) . '/includes/admin/views/html-notice-reset-wizard.php' );
|
382 |
+
} elseif ( isset( $_GET['reset'] ) && 'true' === $_GET['reset'] ) {
|
383 |
+
include_once( dirname( __FILE__ ) . '/includes/admin/views/html-notice-reset-wizard-success.php' );
|
384 |
+
}
|
385 |
+
}
|
386 |
+
|
387 |
+
/**
|
388 |
+
* Hide a notice if the GET variable is set.
|
389 |
+
*/
|
390 |
+
public function hide_reset_notice() {
|
391 |
+
if ( isset( $_GET['themegrill-demo-importer-hide-notice'] ) && isset( $_GET['_themegrill_demo_importer_notice_nonce'] ) ) {
|
392 |
+
if ( ! wp_verify_nonce( $_GET['_themegrill_demo_importer_notice_nonce'], 'themegrill_demo_importer_hide_notice_nonce' ) ) {
|
393 |
+
wp_die( __( 'Action failed. Please refresh the page and retry.', 'themegrill-demo-importer' ) );
|
394 |
+
}
|
395 |
+
|
396 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
397 |
+
wp_die( __( 'Cheatin’ huh?', 'themegrill-demo-importer' ) );
|
398 |
+
}
|
399 |
+
|
400 |
+
$hide_notice = sanitize_text_field( $_GET['themegrill-demo-importer-hide-notice'] );
|
401 |
+
|
402 |
+
if ( ! empty( $hide_notice ) && 'reset_notice' == $hide_notice ) {
|
403 |
+
update_option( 'themegrill_demo_importer_reset_notice', 1 );
|
404 |
}
|
405 |
}
|
406 |
+
}
|
407 |
|
408 |
+
/**
|
409 |
+
* Reset actions when a reset button is clicked.
|
410 |
+
*/
|
411 |
+
public function reset_wizard_actions() {
|
412 |
+
global $wpdb, $current_user;
|
413 |
+
|
414 |
+
if ( ! empty( $_GET['do_reset_wordpress'] ) ) {
|
415 |
+
require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );
|
416 |
+
|
417 |
+
$template = get_option( 'template' );
|
418 |
+
$blogname = get_option( 'blogname' );
|
419 |
+
$admin_email = get_option( 'admin_email' );
|
420 |
+
$blog_public = get_option( 'blog_public' );
|
421 |
+
$footer_rated = get_option( 'themegrill_demo_importer_admin_footer_text_rated' );
|
422 |
+
|
423 |
+
if ( $current_user->user_login != 'admin' ) {
|
424 |
+
$user = get_user_by( 'login', 'admin' );
|
425 |
+
}
|
426 |
+
|
427 |
+
if ( empty( $user->user_level ) || $user->user_level < 10 ) {
|
428 |
+
$user = $current_user;
|
429 |
+
}
|
430 |
+
|
431 |
+
// Drop tables.
|
432 |
+
$drop_tables = $wpdb->get_col( sprintf( "SHOW TABLES LIKE '%s%%'", str_replace( '_', '\_', $wpdb->prefix ) ) );
|
433 |
+
foreach ( $drop_tables as $table ) {
|
434 |
+
$wpdb->query( "DROP TABLE IF EXISTS $table" );
|
435 |
+
}
|
436 |
+
|
437 |
+
// Installs the site.
|
438 |
+
$result = wp_install( $blogname, $user->user_login, $user->user_email, $blog_public );
|
439 |
+
|
440 |
+
// Updates the user password with a old one.
|
441 |
+
$wpdb->update( $wpdb->users, array( 'user_pass' => $user->user_pass, 'user_activation_key' => '' ), array( 'ID' => $result['user_id'] ) );
|
442 |
+
|
443 |
+
// Set up the Password change nag.
|
444 |
+
$default_password_nag = get_user_option( 'default_password_nag', $result['user_id'] );
|
445 |
+
if ( $default_password_nag ) {
|
446 |
+
update_user_option( $result['user_id'], 'default_password_nag', false, true );
|
447 |
+
}
|
448 |
+
|
449 |
+
// Update footer text.
|
450 |
+
if ( $footer_rated ) {
|
451 |
+
update_option( 'themegrill_demo_importer_admin_footer_text_rated', $footer_rated );
|
452 |
+
}
|
453 |
+
|
454 |
+
// Switch current theme.
|
455 |
+
$current_theme = wp_get_theme( $template );
|
456 |
+
if ( $current_theme->exists() ) {
|
457 |
+
switch_theme( $template );
|
458 |
+
}
|
459 |
+
|
460 |
+
// Activate required plugins.
|
461 |
+
$activate_required_plugins = (array) apply_filters( 'themegrill_demo_importer_' . $template . '_required_plugins', array( TGDM_PLUGIN_BASENAME ) );
|
462 |
+
if ( ! empty( $activate_required_plugins ) ) {
|
463 |
+
foreach ( $activate_required_plugins as $plugin ) {
|
464 |
+
$plugin = plugin_basename( $plugin );
|
465 |
+
if ( ! is_wp_error( validate_plugin( $plugin ) ) ) {
|
466 |
+
activate_plugin( $plugin );
|
467 |
+
}
|
468 |
+
}
|
469 |
+
} else {
|
470 |
+
activate_plugin( TGDM_PLUGIN_BASENAME );
|
471 |
+
}
|
472 |
+
|
473 |
+
// Update the cookies.
|
474 |
+
wp_clear_auth_cookie();
|
475 |
+
wp_set_auth_cookie( $result['user_id'] );
|
476 |
+
|
477 |
+
// Redirect to demo importer page to display reset success notice.
|
478 |
+
wp_safe_redirect( admin_url( 'themes.php?page=demo-importer&reset=true' ) );
|
479 |
+
exit();
|
480 |
+
}
|
481 |
+
}
|
482 |
+
|
483 |
+
/**
|
484 |
+
* Check for preview filter.
|
485 |
+
* @return bool
|
486 |
+
*/
|
487 |
+
public function is_preview() {
|
488 |
+
if ( $this->demo_installer && isset( $_GET['browse'] ) ) {
|
489 |
+
return 'preview' === $_GET['browse'] ? true : false;
|
490 |
+
}
|
491 |
+
|
492 |
+
return false;
|
493 |
}
|
494 |
|
495 |
/**
|
499 |
* @return array An associative array of demo data, sorted by name.
|
500 |
*/
|
501 |
private function prepare_demos_for_js( $demos = null ) {
|
502 |
+
$prepared_demos = array();
|
503 |
+
$current_template = get_option( 'template' );
|
504 |
+
$demo_activated_id = get_option( 'themegrill_demo_importer_activated_id' );
|
505 |
|
506 |
/**
|
507 |
* Filters demo data before it is prepared for JavaScript.
|
508 |
*
|
509 |
+
* @param array $prepared_demos An associative array of demo data. Default empty array.
|
510 |
+
* @param null|array $demos An array of demo config to prepare, if any.
|
511 |
+
* @param string $demo_activated_id The current demo activated id.
|
512 |
*/
|
513 |
+
$prepared_demos = (array) apply_filters( 'themegrill_demo_importer_pre_prepare_demos_for_js', array(), $demos, $demo_activated_id );
|
514 |
|
515 |
if ( ! empty( $prepared_demos ) ) {
|
516 |
return $prepared_demos;
|
517 |
}
|
518 |
|
519 |
// Make sure the imported demo is listed first.
|
520 |
+
if ( ! $this->is_preview() && isset( $demos[ $demo_activated_id ] ) ) {
|
521 |
+
$prepared_demos[ $demo_activated_id ] = array();
|
522 |
}
|
523 |
|
524 |
if ( ! empty( $demos ) ) {
|
525 |
foreach ( $demos as $demo_id => $demo_data ) {
|
526 |
$demo_notices = array();
|
527 |
$encoded_slug = urlencode( $demo_id );
|
528 |
+
$premium_link = isset( $demo_data['pro_link'] ) ? $demo_data['pro_link'] : '';
|
529 |
+
$download_url = isset( $demo_data['download'] ) ? $demo_data['download'] : "https://github.com/themegrill/themegrill-demo-pack/raw/master/packages/{$current_template}/{$demo_id}.zip";
|
530 |
$demo_package = isset( $demo_data['demo_pack'] ) ? $demo_data['demo_pack'] : false;
|
531 |
$plugins_list = isset( $demo_data['plugins_list'] ) ? $demo_data['plugins_list'] : array();
|
532 |
|
542 |
$demo_notices['required_plugins'] = true;
|
543 |
}
|
544 |
|
545 |
+
// Check if demo is installed.
|
546 |
+
$installed = false;
|
547 |
+
if ( in_array( $demo_id, array_keys( $this->demo_config ) ) ) {
|
548 |
+
$installed = true;
|
549 |
+
}
|
550 |
+
|
551 |
// Prepare all demos.
|
552 |
+
if ( $this->is_preview() ) {
|
553 |
+
$prepared_demos[ $demo_id ] = array(
|
554 |
+
'id' => $demo_id,
|
555 |
+
'name' => $demo_data['name'],
|
556 |
+
'installed' => $installed,
|
557 |
+
'screenshot' => $this->get_screenshot_url( $demo_id, $current_template ),
|
558 |
+
'description' => isset( $demo_data['description'] ) ? $demo_data['description'] : '',
|
559 |
+
'author' => isset( $demo_data['author'] ) ? $demo_data['author'] : __( 'ThemeGrill', 'themegrill-demo-importer' ),
|
560 |
+
'actions' => array(
|
561 |
+
'pro_link' => $premium_link,
|
562 |
+
'preview_url' => $demo_data['preview'],
|
563 |
+
'download_url' => $download_url,
|
564 |
+
),
|
565 |
+
);
|
566 |
+
} else {
|
567 |
+
$prepared_demos[ $demo_id ] = array(
|
568 |
+
'id' => $demo_id,
|
569 |
+
'name' => $demo_data['name'],
|
570 |
+
'theme' => $demo_data['theme'],
|
571 |
+
'package' => $demo_package,
|
572 |
+
'screenshot' => $this->import_file_url( $demo_id, 'screenshot.jpg' ),
|
573 |
+
'description' => isset( $demo_data['description'] ) ? $demo_data['description'] : '',
|
574 |
+
'author' => isset( $demo_data['author'] ) ? $demo_data['author'] : __( 'ThemeGrill', 'themegrill-demo-importer' ),
|
575 |
+
'authorAndUri' => '<a href="https://themegrill.com" target="_blank">ThemeGrill</a>',
|
576 |
+
'version' => isset( $demo_data['version'] ) ? $demo_data['version'] : '1.1.0',
|
577 |
+
'active' => $demo_id === $demo_activated_id,
|
578 |
+
'hasNotice' => $demo_notices,
|
579 |
+
'plugins' => $plugins_list,
|
580 |
+
'actions' => array(
|
581 |
+
'preview' => home_url( '/' ),
|
582 |
+
'demo_url' => $demo_data['demo_url'],
|
583 |
+
'delete' => current_user_can( 'upload_files' ) ? wp_nonce_url( admin_url( 'themes.php?page=demo-importer&browse=uploads&action=delete&demo_pack=' . urlencode( $demo_id ) ), 'delete-demo_' . $demo_id ) : null,
|
584 |
+
),
|
585 |
+
);
|
586 |
+
}
|
587 |
}
|
588 |
}
|
589 |
|
603 |
* Demo Importer page output.
|
604 |
*/
|
605 |
public function demo_importer() {
|
606 |
+
$demos = $this->prepare_demos_for_js( $this->is_preview() ? $this->demo_packages : $this->demo_config );
|
607 |
|
608 |
if ( isset( $_GET['action'] ) && 'upload-demo' === $_GET['action'] ) {
|
609 |
$this->upload_demo_pack();
|
644 |
}
|
645 |
}
|
646 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
647 |
/**
|
648 |
* Ajax handler for importing a demo.
|
649 |
*/
|
685 |
$this->import_widget_settings( $slug, $demo_data, $status );
|
686 |
|
687 |
// Update imported demo ID.
|
688 |
+
update_option( 'themegrill_demo_importer_activated_id', $slug );
|
689 |
|
690 |
do_action( 'themegrill_ajax_demo_imported', $slug, $demo_data );
|
691 |
}
|
696 |
wp_send_json_success( $status );
|
697 |
}
|
698 |
|
699 |
+
/**
|
700 |
+
* Triggered when clicking the rating footer.
|
701 |
+
*/
|
702 |
+
public function ajax_footer_text_rated() {
|
703 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
704 |
+
die( -1 );
|
705 |
+
}
|
706 |
+
|
707 |
+
update_option( 'themegrill_demo_importer_admin_footer_text_rated', 1 );
|
708 |
+
die();
|
709 |
+
}
|
710 |
+
|
711 |
/**
|
712 |
* Import dummy content from a XML file.
|
713 |
* @param string $demo_id
|
997 |
return $data;
|
998 |
}
|
999 |
|
1000 |
+
/**
|
1001 |
+
* Recursive function to address n level deep layoutbuilder data update.
|
1002 |
+
* @param array $panels_data
|
1003 |
+
* @param string $data_type
|
1004 |
+
* @param array $data_value
|
1005 |
+
* @return array
|
1006 |
+
*/
|
1007 |
+
public function siteorigin_recursive_update( $panels_data, $data_type, $data_value ) {
|
1008 |
+
static $instance = 0;
|
1009 |
+
|
1010 |
+
foreach ( $panels_data as $panel_type => $panel_data ) {
|
1011 |
+
// Format the value based on panel type.
|
1012 |
+
switch ( $panel_type ) {
|
1013 |
+
case 'grids':
|
1014 |
+
foreach ( $panel_data as $instance_id => $grid_instance ) {
|
1015 |
+
if ( ! empty( $data_value['data_update']['grids_data'] ) ) {
|
1016 |
+
foreach ( $data_value['data_update']['grids_data'] as $grid_id => $grid_data ) {
|
1017 |
+
if ( ! empty( $grid_data['style'] ) && $instance_id === $grid_id ) {
|
1018 |
+
$level = isset( $grid_data['level'] ) ? $grid_data['level'] : (int) 0;
|
1019 |
+
if ( $level == $instance ) {
|
1020 |
+
foreach ( $grid_data['style'] as $style_key => $style_value ) {
|
1021 |
+
if ( empty( $style_value ) ) {
|
1022 |
+
continue;
|
1023 |
+
}
|
1024 |
+
|
1025 |
+
// Format the value based on style key.
|
1026 |
+
switch ( $style_key ) {
|
1027 |
+
case 'background_image_attachment':
|
1028 |
+
$attachment_id = tg_get_attachment_id( $style_value );
|
1029 |
+
|
1030 |
+
if ( 0 !== $attachment_id ) {
|
1031 |
+
$grid_instance['style'][ $style_key ] = $attachment_id;
|
1032 |
+
}
|
1033 |
+
break;
|
1034 |
+
default:
|
1035 |
+
$grid_instance['style'][ $style_key ] = $style_value;
|
1036 |
+
break;
|
1037 |
+
}
|
1038 |
+
}
|
1039 |
+
}
|
1040 |
+
}
|
1041 |
+
}
|
1042 |
+
}
|
1043 |
+
|
1044 |
+
// Update panel grids data.
|
1045 |
+
$panels_data['grids'][ $instance_id ] = $grid_instance;
|
1046 |
+
}
|
1047 |
+
break;
|
1048 |
+
|
1049 |
+
case 'widgets':
|
1050 |
+
foreach ( $panel_data as $instance_id => $widget_instance ) {
|
1051 |
+
if ( isset( $widget_instance['panels_data']['widgets'] ) ) {
|
1052 |
+
$instance = $instance + 1;
|
1053 |
+
$child_panels_data = $widget_instance['panels_data'];
|
1054 |
+
$panels_data['widgets'][ $instance_id ]['panels_data'] = $this->siteorigin_recursive_update( $child_panels_data, $data_type, $data_value );
|
1055 |
+
$instance = $instance - 1;
|
1056 |
+
continue;
|
1057 |
+
}
|
1058 |
+
|
1059 |
+
if ( isset( $widget_instance['nav_menu'] ) && isset( $widget_instance['title'] ) ) {
|
1060 |
+
$nav_menu = wp_get_nav_menu_object( $widget_instance['title'] );
|
1061 |
+
|
1062 |
+
if ( is_object( $nav_menu ) && $nav_menu->term_id ) {
|
1063 |
+
$widget_instance['nav_menu'] = $nav_menu->term_id;
|
1064 |
+
}
|
1065 |
+
} elseif ( ! empty( $data_value['data_update']['widgets_data'] ) ) {
|
1066 |
+
$instance_class = $widget_instance['panels_info']['class'];
|
1067 |
+
|
1068 |
+
foreach ( $data_value['data_update']['widgets_data'] as $dropdown_type => $dropdown_data ) {
|
1069 |
+
if ( ! in_array( $dropdown_type, array( 'dropdown_pages', 'dropdown_categories' ) ) ) {
|
1070 |
+
continue;
|
1071 |
+
}
|
1072 |
+
|
1073 |
+
// Format the value based on data type.
|
1074 |
+
switch ( $dropdown_type ) {
|
1075 |
+
case 'dropdown_pages':
|
1076 |
+
foreach ( $dropdown_data as $widget_id => $widget_data ) {
|
1077 |
+
if ( ! empty( $widget_data[ $instance_id ] ) && $widget_id == $instance_class ) {
|
1078 |
+
$level = isset( $widget_data['level'] ) ? $widget_data['level'] : (int) 0;
|
1079 |
+
|
1080 |
+
if ( $level == $instance ) {
|
1081 |
+
foreach ( $widget_data[ $instance_id ] as $widget_key => $widget_value ) {
|
1082 |
+
$page = get_page_by_title( $widget_value );
|
1083 |
+
|
1084 |
+
if ( is_object( $page ) && $page->ID ) {
|
1085 |
+
$widget_instance[ $widget_key ] = $page->ID;
|
1086 |
+
}
|
1087 |
+
}
|
1088 |
+
}
|
1089 |
+
}
|
1090 |
+
}
|
1091 |
+
break;
|
1092 |
+
case 'dropdown_categories':
|
1093 |
+
foreach ( $dropdown_data as $taxonomy => $taxonomy_data ) {
|
1094 |
+
if ( ! taxonomy_exists( $taxonomy ) ) {
|
1095 |
+
continue;
|
1096 |
+
}
|
1097 |
+
|
1098 |
+
foreach ( $taxonomy_data as $widget_id => $widget_data ) {
|
1099 |
+
if ( ! empty( $widget_data[ $instance_id ] ) && $widget_id == $instance_class ) {
|
1100 |
+
$level = isset( $widget_data['level'] ) ? $widget_data['level'] : (int) 0;
|
1101 |
+
|
1102 |
+
if ( $level == $instance ) {
|
1103 |
+
foreach ( $widget_data[ $instance_id ] as $widget_key => $widget_value ) {
|
1104 |
+
$term = get_term_by( 'name', $widget_value, $taxonomy );
|
1105 |
+
|
1106 |
+
if ( is_object( $term ) && $term->term_id ) {
|
1107 |
+
$widget_instance[ $widget_key ] = $term->term_id;
|
1108 |
+
}
|
1109 |
+
}
|
1110 |
+
}
|
1111 |
+
}
|
1112 |
+
}
|
1113 |
+
}
|
1114 |
+
break;
|
1115 |
+
}
|
1116 |
+
}
|
1117 |
+
}
|
1118 |
+
|
1119 |
+
$panels_data['widgets'][ $instance_id ] = $widget_instance;
|
1120 |
+
}
|
1121 |
+
break;
|
1122 |
+
}
|
1123 |
+
}
|
1124 |
+
|
1125 |
+
return $panels_data;
|
1126 |
+
}
|
1127 |
+
|
1128 |
+
/**
|
1129 |
+
* Update siteorigin panel settings data.
|
1130 |
+
* @param string $demo_id
|
1131 |
+
* @param array $demo_data
|
1132 |
+
*/
|
1133 |
+
public function update_siteorigin_data( $demo_id, $demo_data ) {
|
1134 |
+
if ( ! empty( $demo_data['siteorigin_panels_data_update'] ) ) {
|
1135 |
+
foreach ( $demo_data['siteorigin_panels_data_update'] as $data_type => $data_value ) {
|
1136 |
+
if ( ! empty( $data_value['post_title'] ) ) {
|
1137 |
+
$page = get_page_by_title( $data_value['post_title'] );
|
1138 |
+
|
1139 |
+
if ( is_object( $page ) && $page->ID ) {
|
1140 |
+
$panels_data = get_post_meta( $page->ID, 'panels_data', true );
|
1141 |
+
|
1142 |
+
if ( ! empty( $panels_data ) ) {
|
1143 |
+
$panels_data = $this->siteorigin_recursive_update( $panels_data, $data_type, $data_value );
|
1144 |
+
}
|
1145 |
+
|
1146 |
+
// Update siteorigin panels data.
|
1147 |
+
update_post_meta( $page->ID, 'panels_data', $panels_data );
|
1148 |
+
}
|
1149 |
+
}
|
1150 |
+
}
|
1151 |
+
}
|
1152 |
+
}
|
1153 |
}
|
1154 |
|
1155 |
new TG_Demo_Importer();
|
includes/functions-demo-update.php
CHANGED
@@ -67,3 +67,24 @@ function tg_update_demo_importer_config( $demo_config ) {
|
|
67 |
return $demo_config;
|
68 |
}
|
69 |
add_filter( 'themegrill_demo_importer_config', 'tg_update_demo_importer_config', 99 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
return $demo_config;
|
68 |
}
|
69 |
add_filter( 'themegrill_demo_importer_config', 'tg_update_demo_importer_config', 99 );
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Update demo importer options.
|
73 |
+
* @since 1.3.4
|
74 |
+
*/
|
75 |
+
function tg_update_demo_importer_options() {
|
76 |
+
$migrate_options = array(
|
77 |
+
'themegrill_demo_imported_id' => 'themegrill_demo_importer_activated_id',
|
78 |
+
'themegrill_demo_imported_notice_dismiss' => 'themegrill_demo_importer_reset_notice',
|
79 |
+
);
|
80 |
+
|
81 |
+
foreach ( $migrate_options as $old_option => $new_option ) {
|
82 |
+
$value = get_option( $old_option );
|
83 |
+
|
84 |
+
if ( $value ) {
|
85 |
+
update_option( $new_option, $value );
|
86 |
+
delete_option( $old_option );
|
87 |
+
}
|
88 |
+
}
|
89 |
+
}
|
90 |
+
add_action( 'admin_init', 'tg_update_demo_importer_options' );
|
includes/includes/admin/class-demo-installer-skin.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Upgrader API:
|
4 |
*
|
5 |
* Demo Installer Skin for the WordPress Demo Importer.
|
6 |
*
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Upgrader API: TG_Demo_Installer_Skin class
|
4 |
*
|
5 |
* Demo Installer Skin for the WordPress Demo Importer.
|
6 |
*
|
includes/includes/admin/class-demo-upgrader.php
CHANGED
@@ -80,7 +80,7 @@ class TG_Demo_Upgrader extends WP_Upgrader {
|
|
80 |
|
81 |
$this->run( array(
|
82 |
'package' => $package,
|
83 |
-
'destination' =>
|
84 |
'clear_destination' => true, // Do overwrite files.
|
85 |
'protect_destination' => true,
|
86 |
'clear_working' => true,
|
80 |
|
81 |
$this->run( array(
|
82 |
'package' => $package,
|
83 |
+
'destination' => TGDM_DEMO_DIR,
|
84 |
'clear_destination' => true, // Do overwrite files.
|
85 |
'protect_destination' => true,
|
86 |
'clear_working' => true,
|
includes/includes/admin/views/html-admin-page-importer.php
CHANGED
@@ -7,21 +7,20 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
7 |
exit;
|
8 |
}
|
9 |
|
10 |
-
$demo_imported_id = get_option( 'themegrill_demo_imported_id' );
|
11 |
-
|
12 |
?>
|
13 |
<div class="wrap demo-importer">
|
14 |
-
<h1><?php esc_html_e( 'Demo Importer', 'themegrill-demo-importer' ); ?>
|
15 |
<span class="title-count demo-count"><?php echo count( $this->demo_config ); ?></span>
|
16 |
-
<?php if ( apply_filters( 'themegrill_demo_importer_new_demos', false ) ) : ?>
|
17 |
-
<a href="<?php echo esc_url( 'https://themegrill.com/upcoming-new-demos' ); ?>" class="page-title-action" target="_blank"><?php esc_html_e( 'New Demos', 'themegrill-demo-importer' ); ?></a>
|
18 |
-
<?php endif; ?>
|
19 |
</h1>
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
</div>
|
24 |
<?php endif; ?>
|
|
|
|
|
|
|
|
|
|
|
25 |
<div class="error hide-if-js">
|
26 |
<p><?php _e( 'The Demo Importer screen requires JavaScript.', 'themegrill-demo-importer' ); ?></p>
|
27 |
</div>
|
7 |
exit;
|
8 |
}
|
9 |
|
|
|
|
|
10 |
?>
|
11 |
<div class="wrap demo-importer">
|
12 |
+
<h1 class="wp-heading-inline"><?php esc_html_e( 'Demo Importer', 'themegrill-demo-importer' ); ?>
|
13 |
<span class="title-count demo-count"><?php echo count( $this->demo_config ); ?></span>
|
|
|
|
|
|
|
14 |
</h1>
|
15 |
+
|
16 |
+
<?php if ( apply_filters( 'themegrill_demo_importer_new_demos', false ) ) : ?>
|
17 |
+
<a href="<?php echo esc_url( 'https://themegrill.com/upcoming-new-demos' ); ?>" class="page-title-action" target="_blank"><?php esc_html_e( 'New Demos', 'themegrill-demo-importer' ); ?></a>
|
|
|
18 |
<?php endif; ?>
|
19 |
+
|
20 |
+
<form class="search-form"></form>
|
21 |
+
|
22 |
+
<hr class="wp-header-end">
|
23 |
+
|
24 |
<div class="error hide-if-js">
|
25 |
<p><?php _e( 'The Demo Importer screen requires JavaScript.', 'themegrill-demo-importer' ); ?></p>
|
26 |
</div>
|
includes/includes/admin/views/html-admin-page-installer-preview.php
CHANGED
@@ -7,12 +7,10 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
7 |
exit;
|
8 |
}
|
9 |
|
10 |
-
$previews = $this->prepare_previews_for_js( $this->demo_packages );
|
11 |
-
|
12 |
?>
|
13 |
<div class="theme-browser rendered">
|
14 |
<div class="themes wp-clearfix">
|
15 |
-
<?php foreach ( $
|
16 |
<div class="theme<?php echo ( $demo['actions']['pro_link'] ) ? " premium-ribbon": ''; ?>" tabindex="0">
|
17 |
<a target="_blank" href="<?php echo esc_url( $demo['actions']['preview_url'] ); ?>">
|
18 |
<?php if ( $demo['screenshot'] ) : ?>
|
@@ -31,13 +29,20 @@ $previews = $this->prepare_previews_for_js( $this->demo_packages );
|
|
31 |
<h3 class="theme-name"><?php echo esc_html( $demo['name'] ); ?></h3>
|
32 |
|
33 |
<div class="theme-actions">
|
34 |
-
<?php if ( ! $demo['installed'] ) : ?>
|
35 |
<?php
|
36 |
/* translators: %s: Demo name */
|
37 |
$aria_label = sprintf( _x( 'Download %s', 'demo', 'themegrill-demo-importer' ), esc_attr( $demo['name'] ) );
|
38 |
?>
|
39 |
<a class="button button-primary demo-download" data-name="<?php echo esc_attr( $demo['name'] ); ?>" href="<?php echo esc_url( $demo['actions']['download_url'] ); ?>" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _e( 'Download', 'themegrill-demo-importer' ); ?></a>
|
40 |
<?php endif; ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
<a class="button button-secondary demo-preview" target="_blank" href="<?php echo esc_url( $demo['actions']['preview_url'] ); ?>"><?php _e( 'Preview', 'themegrill-demo-importer' ); ?></a>
|
42 |
</div>
|
43 |
|
7 |
exit;
|
8 |
}
|
9 |
|
|
|
|
|
10 |
?>
|
11 |
<div class="theme-browser rendered">
|
12 |
<div class="themes wp-clearfix">
|
13 |
+
<?php foreach ( $demos as $demo ) : ?>
|
14 |
<div class="theme<?php echo ( $demo['actions']['pro_link'] ) ? " premium-ribbon": ''; ?>" tabindex="0">
|
15 |
<a target="_blank" href="<?php echo esc_url( $demo['actions']['preview_url'] ); ?>">
|
16 |
<?php if ( $demo['screenshot'] ) : ?>
|
29 |
<h3 class="theme-name"><?php echo esc_html( $demo['name'] ); ?></h3>
|
30 |
|
31 |
<div class="theme-actions">
|
32 |
+
<?php if ( ! $demo['installed'] && ! $demo['actions']['pro_link'] ) : ?>
|
33 |
<?php
|
34 |
/* translators: %s: Demo name */
|
35 |
$aria_label = sprintf( _x( 'Download %s', 'demo', 'themegrill-demo-importer' ), esc_attr( $demo['name'] ) );
|
36 |
?>
|
37 |
<a class="button button-primary demo-download" data-name="<?php echo esc_attr( $demo['name'] ); ?>" href="<?php echo esc_url( $demo['actions']['download_url'] ); ?>" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _e( 'Download', 'themegrill-demo-importer' ); ?></a>
|
38 |
<?php endif; ?>
|
39 |
+
<?php if ( $demo['actions']['pro_link'] ) : ?>
|
40 |
+
<?php
|
41 |
+
/* translators: %s: Demo name */
|
42 |
+
$aria_label = sprintf( _x( 'View %s Pro', 'demo', 'themegrill-demo-importer' ), esc_attr( $demo['name'] ) );
|
43 |
+
?>
|
44 |
+
<a class="button button-primary demo-premium" target="_blank" data-name="<?php echo esc_attr( $demo['name'] ); ?>" href="<?php echo esc_url( $demo['actions']['pro_link'] ); ?>" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _e( 'View Pro', 'themegrill-demo-importer' ); ?></a>
|
45 |
+
<?php endif; ?>
|
46 |
<a class="button button-secondary demo-preview" target="_blank" href="<?php echo esc_url( $demo['actions']['preview_url'] ); ?>"><?php _e( 'Preview', 'themegrill-demo-importer' ); ?></a>
|
47 |
</div>
|
48 |
|
includes/includes/admin/views/html-admin-page-installer.php
CHANGED
@@ -10,7 +10,6 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
10 |
global $current_filter;
|
11 |
|
12 |
$current_filter = empty( $_GET['browse'] ) ? 'welcome' : sanitize_title( $_GET['browse'] );
|
13 |
-
$demo_imported_id = get_option( 'themegrill_demo_imported_id' );
|
14 |
$demo_filter_links = apply_filters( 'themegrill_demo_importer_filter_links_array', array(
|
15 |
'welcome' => __( 'Welcome', 'themegrill-demo-importer' ),
|
16 |
'uploads' => __( 'Installed Demos', 'themegrill-demo-importer' ),
|
@@ -19,17 +18,14 @@ $demo_filter_links = apply_filters( 'themegrill_demo_importer_filter_links_array
|
|
19 |
|
20 |
?>
|
21 |
<div class="wrap demo-installer">
|
22 |
-
<h1><?php
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
}
|
27 |
-
?></h1>
|
28 |
-
<?php if ( ! get_option( 'themegrill_demo_imported_notice_dismiss' ) && in_array( $demo_imported_id, array_keys( $this->demo_config ) ) ) : ?>
|
29 |
-
<div id="message" class="notice notice-info is-dismissible" data-notice_id="demo-importer">
|
30 |
-
<p><?php printf( __( '<strong>Notice</strong> – If you want to completely remove a demo installation after importing it, you can use a plugin like %1$sWordPress Reset%2$s.', 'themegrill-demo-importer' ), '<a target="_blank" href="' . esc_url( 'https://wordpress.org/plugins/wordpress-reset/' ) . '">', '</a>' ); ?></p>
|
31 |
-
</div>
|
32 |
<?php endif; ?>
|
|
|
|
|
|
|
33 |
<div class="error hide-if-js">
|
34 |
<p><?php _e( 'The Demo Importer screen requires JavaScript.', 'themegrill-demo-importer' ); ?></p>
|
35 |
</div>
|
@@ -73,15 +69,20 @@ $demo_filter_links = apply_filters( 'themegrill_demo_importer_filter_links_array
|
|
73 |
<div class="welcome-panel-column-container">
|
74 |
<div class="welcome-panel-column">
|
75 |
<ul>
|
76 |
-
<li><?php printf( __( '1. Visit <a href="%s" target="_blank"><strong>this page</strong></a> and download demo zip file.','themegrill-demo-importer' ),esc_url( '
|
77 |
-
<li><?php _e( '2. Click <strong>Upload Demo</strong> button on the top of this
|
78 |
-
<li><?php _e( '3. Browse the demo zip file and click <strong>Install Now</strong
|
79 |
<li><?php _e( '4. Go to <strong>Installed Demos</strong> tab.','themegrill-demo-importer' ); ?></li>
|
80 |
-
<li><?php _e( '5. Click <strong>Import</strong> button and wait for few minutes. Done!','themegrill-demo-importer' ); ?></li>
|
81 |
</ul>
|
82 |
</div>
|
83 |
</div>
|
84 |
</div>
|
|
|
|
|
|
|
|
|
|
|
85 |
</div>
|
86 |
<?php else : ?>
|
87 |
<h2 class="screen-reader-text hide-if-no-js"><?php _e( 'Available demos list', 'themegrill-demo-importer' ); ?></h2>
|
@@ -275,7 +276,7 @@ $demo_filter_links = apply_filters( 'themegrill_demo_importer_filter_links_array
|
|
275 |
<h3 class="theme-name">{{ data.name }}</h3>
|
276 |
|
277 |
<div class="theme-actions">
|
278 |
-
<# if ( ! data.installed &&
|
279 |
<?php
|
280 |
/* translators: %s: Demo name */
|
281 |
$aria_label = sprintf( _x( 'Download %s', 'demo', 'themegrill-demo-importer' ), '{{ data.name }}' );
|
@@ -287,7 +288,7 @@ $demo_filter_links = apply_filters( 'themegrill_demo_importer_filter_links_array
|
|
287 |
/* translators: %s: Demo name */
|
288 |
$aria_label = sprintf( _x( 'View %s Pro', 'demo', 'themegrill-demo-importer' ), '{{ data.name }}' );
|
289 |
?>
|
290 |
-
<a class="button button-primary demo-
|
291 |
<# } #>
|
292 |
<a class="button button-secondary demo-preview" target="_blank" href="{{{ data.actions.preview_url }}}"><?php _e( 'Preview', 'themegrill-demo-importer' ); ?></a>
|
293 |
</div>
|
10 |
global $current_filter;
|
11 |
|
12 |
$current_filter = empty( $_GET['browse'] ) ? 'welcome' : sanitize_title( $_GET['browse'] );
|
|
|
13 |
$demo_filter_links = apply_filters( 'themegrill_demo_importer_filter_links_array', array(
|
14 |
'welcome' => __( 'Welcome', 'themegrill-demo-importer' ),
|
15 |
'uploads' => __( 'Installed Demos', 'themegrill-demo-importer' ),
|
18 |
|
19 |
?>
|
20 |
<div class="wrap demo-installer">
|
21 |
+
<h1 class="wp-heading-inline"><?php esc_html_e( 'Demo Importer', 'themegrill-demo-importer' ); ?></h1>
|
22 |
+
|
23 |
+
<?php if ( current_user_can( 'upload_files' ) ) : ?>
|
24 |
+
<button type="button" class="upload-view-toggle page-title-action hide-if-no-js tg-demo-upload" aria-expanded="false"><?php _e( 'Upload Demo', 'themegrill-demo-importer' ); ?></button>
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
<?php endif; ?>
|
26 |
+
|
27 |
+
<hr class="wp-header-end">
|
28 |
+
|
29 |
<div class="error hide-if-js">
|
30 |
<p><?php _e( 'The Demo Importer screen requires JavaScript.', 'themegrill-demo-importer' ); ?></p>
|
31 |
</div>
|
69 |
<div class="welcome-panel-column-container">
|
70 |
<div class="welcome-panel-column">
|
71 |
<ul>
|
72 |
+
<li><?php printf( __( '1. Visit <a href="%s" target="_blank"><strong>this page</strong></a> and download the theme demo zip file.','themegrill-demo-importer' ), esc_url( self_admin_url( 'themes.php?page=demo-importer&browse=preview' ) ) ); ?></li>
|
73 |
+
<li><?php _e( '2. Click on the <strong>Upload Demo</strong> button on the top of this page.','themegrill-demo-importer' ); ?></li>
|
74 |
+
<li><?php _e( '3. Browse the downloaded demo zip file and click on <strong>Install Now</strong> button.','themegrill-demo-importer' ); ?></li>
|
75 |
<li><?php _e( '4. Go to <strong>Installed Demos</strong> tab.','themegrill-demo-importer' ); ?></li>
|
76 |
+
<li><?php _e( '5. Click on the <strong>Import</strong> button and wait for few minutes. Done!','themegrill-demo-importer' ); ?></li>
|
77 |
</ul>
|
78 |
</div>
|
79 |
</div>
|
80 |
</div>
|
81 |
+
<div class="welcome-panel-iframe-video">
|
82 |
+
<div class="welcome-panel-iframe-video-inner">
|
83 |
+
<iframe width="560" height="315" src="<?php echo esc_url( 'https://www.youtube.com/embed/rhiybsv3vUU?rel=0&showinfo=0' ); ?>" allowtransparency="true" frameborder="0" scrolling="no" allowfullscreen mozallowfullscreen webkitallowfullscreen oallowfullscreen msallowfullscreen></iframe>
|
84 |
+
</div>
|
85 |
+
</div>
|
86 |
</div>
|
87 |
<?php else : ?>
|
88 |
<h2 class="screen-reader-text hide-if-no-js"><?php _e( 'Available demos list', 'themegrill-demo-importer' ); ?></h2>
|
276 |
<h3 class="theme-name">{{ data.name }}</h3>
|
277 |
|
278 |
<div class="theme-actions">
|
279 |
+
<# if ( ! data.installed && ! data.actions.pro_link ) { #>
|
280 |
<?php
|
281 |
/* translators: %s: Demo name */
|
282 |
$aria_label = sprintf( _x( 'Download %s', 'demo', 'themegrill-demo-importer' ), '{{ data.name }}' );
|
288 |
/* translators: %s: Demo name */
|
289 |
$aria_label = sprintf( _x( 'View %s Pro', 'demo', 'themegrill-demo-importer' ), '{{ data.name }}' );
|
290 |
?>
|
291 |
+
<a class="button button-primary demo-premium" target="_blank" data-name="{{ data.name }}" href="{{ data.actions.pro_link }}" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _e( 'View Pro', 'themegrill-demo-importer' ); ?></a>
|
292 |
<# } #>
|
293 |
<a class="button button-secondary demo-preview" target="_blank" href="{{{ data.actions.preview_url }}}"><?php _e( 'Preview', 'themegrill-demo-importer' ); ?></a>
|
294 |
</div>
|
includes/includes/admin/views/html-notice-reset-wizard-success.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Admin View: Notice - Reset Wizard Success
|
4 |
+
*/
|
5 |
+
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
$user = get_user_by( 'id', 1 );
|
11 |
+
|
12 |
+
?>
|
13 |
+
<div id="message" class="notice notice-info is-dismissible">
|
14 |
+
<p><?php printf( __( 'WordPress has been reset back to defaults. The user <strong>"%1$s"</strong> was recreated with its previous password.', 'themegrill-demo-importer' ), $user->user_login ); ?></p>
|
15 |
+
</div>
|
includes/includes/admin/views/html-notice-reset-wizard.php
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Admin View: Notice - Reset Wizard
|
4 |
+
*/
|
5 |
+
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
?>
|
11 |
+
<div id="message" class="updated themegrill-demo-importer-message">
|
12 |
+
<p><?php _e( '<strong>Reset Wizard</strong> – If you need to reset the WordPress back to default again :)', 'themegrill-demo-importer' ); ?></p>
|
13 |
+
<p class="submit"><a href="<?php echo esc_url( add_query_arg( 'do_reset_wordpress', 'true', admin_url( 'themes.php?page=demo-importer' ) ) ); ?>" class="button button-primary themegrill-reset-wordpress"><?php _e( 'Run the Reset Wizard', 'themegrill-demo-importer' ); ?></a> <a class="button-secondary skip" href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'themegrill-demo-importer-hide-notice', 'reset_notice' ), 'themegrill_demo_importer_hide_notice_nonce', '_themegrill_demo_importer_notice_nonce' ) ); ?>"><?php _e( 'Hide this notice', 'themegrill-demo-importer' ); ?></a></p>
|
14 |
+
</div>
|
includes/includes/functions-demo-importer.php
CHANGED
@@ -145,7 +145,6 @@ add_action( 'wp_ajax_delete-demo', 'tg_ajax_delete_demo_pack', 1 );
|
|
145 |
/**
|
146 |
* Remove a demo.
|
147 |
*
|
148 |
-
*
|
149 |
* @global WP_Filesystem_Base $wp_filesystem Subclass
|
150 |
*
|
151 |
* @param string $demo_pack Demo pack to delete completely.
|
@@ -155,10 +154,6 @@ add_action( 'wp_ajax_delete-demo', 'tg_ajax_delete_demo_pack', 1 );
|
|
155 |
function tg_delete_demo_pack( $demo_pack, $redirect = '' ) {
|
156 |
global $wp_filesystem;
|
157 |
|
158 |
-
$upload_dir = wp_upload_dir();
|
159 |
-
$demo_packs = $upload_dir['basedir'] . '/tg-demo-pack/';
|
160 |
-
$demo_imported_id = get_option( 'themegrill_demo_imported_id' );
|
161 |
-
|
162 |
if ( empty( $demo_pack ) ) {
|
163 |
return false;
|
164 |
}
|
@@ -204,9 +199,9 @@ function tg_delete_demo_pack( $demo_pack, $redirect = '' ) {
|
|
204 |
}
|
205 |
|
206 |
// Get the base demo folder.
|
207 |
-
$demos_dir = $wp_filesystem->find_folder(
|
208 |
if ( empty( $demos_dir ) ) {
|
209 |
-
return new WP_Error( '
|
210 |
}
|
211 |
|
212 |
$demos_dir = trailingslashit( $demos_dir );
|
145 |
/**
|
146 |
* Remove a demo.
|
147 |
*
|
|
|
148 |
* @global WP_Filesystem_Base $wp_filesystem Subclass
|
149 |
*
|
150 |
* @param string $demo_pack Demo pack to delete completely.
|
154 |
function tg_delete_demo_pack( $demo_pack, $redirect = '' ) {
|
155 |
global $wp_filesystem;
|
156 |
|
|
|
|
|
|
|
|
|
157 |
if ( empty( $demo_pack ) ) {
|
158 |
return false;
|
159 |
}
|
199 |
}
|
200 |
|
201 |
// Get the base demo folder.
|
202 |
+
$demos_dir = $wp_filesystem->find_folder( TGDM_DEMO_DIR );
|
203 |
if ( empty( $demos_dir ) ) {
|
204 |
+
return new WP_Error( 'fs_no_demos_dir', __( 'Unable to locate ThemeGrill demo pack directory.', 'themegrill-demo-importer' ) );
|
205 |
}
|
206 |
|
207 |
$demos_dir = trailingslashit( $demos_dir );
|
includes/includes/importers/class-wxr-parsers.php
CHANGED
@@ -95,9 +95,9 @@ class TG_WXR_Parser_SimpleXML {
|
|
95 |
|
96 |
$namespaces = $xml->getDocNamespaces();
|
97 |
if ( ! isset( $namespaces['wp'] ) )
|
98 |
-
$namespaces['wp'] = '
|
99 |
if ( ! isset( $namespaces['excerpt'] ) )
|
100 |
-
$namespaces['excerpt'] = '
|
101 |
|
102 |
// grab authors
|
103 |
foreach ( $xml->xpath('/rss/channel/wp:author') as $author_arr ) {
|
95 |
|
96 |
$namespaces = $xml->getDocNamespaces();
|
97 |
if ( ! isset( $namespaces['wp'] ) )
|
98 |
+
$namespaces['wp'] = 'https://wordpress.org/export/1.1/';
|
99 |
if ( ! isset( $namespaces['excerpt'] ) )
|
100 |
+
$namespaces['excerpt'] = 'https://wordpress.org/export/1.1/excerpt/';
|
101 |
|
102 |
// grab authors
|
103 |
foreach ( $xml->xpath('/rss/channel/wp:author') as $author_arr ) {
|
languages/themegrill-demo-importer.pot
CHANGED
@@ -2,130 +2,244 @@
|
|
2 |
# This file is distributed under the GPLv3 or later.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: ThemeGrill Demo Importer 1.
|
6 |
"Report-Msgid-Bugs-To: themegrill@gmail.com\n"
|
7 |
-
"POT-Creation-Date: 2017-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
"PO-Revision-Date: 2017-MO-DA HO:MI+ZONE\n"
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
|
14 |
-
"X-Generator: grunt-wp-
|
15 |
|
16 |
-
#: includes/class-demo-importer.php:
|
17 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
18 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
19 |
-
#: themegrill-demo-importer.php:
|
20 |
msgid "Demo Importer"
|
21 |
msgstr ""
|
22 |
|
23 |
-
#: includes/class-demo-importer.php:
|
24 |
msgid "Importing..."
|
25 |
msgstr ""
|
26 |
|
27 |
-
#: includes/class-demo-importer.php:
|
28 |
msgid "Importing... please wait."
|
29 |
msgstr ""
|
30 |
|
31 |
-
#: includes/class-demo-importer.php:
|
32 |
msgid "Import completed successfully."
|
33 |
msgstr ""
|
34 |
|
35 |
-
#: includes/class-demo-importer.php:
|
36 |
msgid "Import Failed!"
|
37 |
msgstr ""
|
38 |
|
39 |
-
#: includes/class-demo-importer.php:
|
40 |
msgid "Import failed: %s"
|
41 |
msgstr ""
|
42 |
|
43 |
-
#: includes/class-demo-importer.php:
|
44 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
45 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
46 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
47 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
48 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:40
|
49 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
50 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
51 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
52 |
msgid "Live Preview"
|
53 |
msgstr ""
|
54 |
|
55 |
-
#: includes/class-demo-importer.php:
|
56 |
msgid "Imported!"
|
57 |
msgstr ""
|
58 |
|
59 |
-
#: includes/class-demo-importer.php:
|
60 |
msgid "Try this solution!"
|
61 |
msgstr ""
|
62 |
|
63 |
-
#: includes/class-demo-importer.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
msgid ""
|
65 |
"Are you sure you want to delete this demo?\n"
|
66 |
"\n"
|
67 |
"Click 'Cancel' to go back, 'OK' to confirm the delete."
|
68 |
msgstr ""
|
69 |
|
70 |
-
#: includes/class-demo-importer.php:
|
71 |
msgid ""
|
72 |
"Importing demo content will replicate the live demo and overwrites your "
|
73 |
"current customizer, widgets and other settings. It might take few minutes "
|
74 |
"to complete the demo import. Are you sure you want to import this demo?"
|
75 |
msgstr ""
|
76 |
|
77 |
-
#: includes/class-demo-importer.php:
|
78 |
msgid "Add New Demo"
|
79 |
msgstr ""
|
80 |
|
81 |
-
#: includes/class-demo-importer.php:
|
82 |
msgid "Search Demos"
|
83 |
msgstr ""
|
84 |
|
85 |
-
#: includes/class-demo-importer.php:
|
86 |
msgid "Search demos..."
|
87 |
msgstr ""
|
88 |
|
89 |
-
#: includes/class-demo-importer.php:
|
90 |
msgid "Number of Demos found: %d"
|
91 |
msgstr ""
|
92 |
|
93 |
-
#: includes/class-demo-importer.php:
|
94 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
95 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
96 |
msgid "No demos found. Try a different search."
|
97 |
msgstr ""
|
98 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
#. Author of the plugin/theme
|
100 |
msgid "ThemeGrill"
|
101 |
msgstr ""
|
102 |
|
103 |
-
#: includes/class-demo-importer.php:
|
104 |
msgid "Sorry, you are not allowed to install demo on this site."
|
105 |
msgstr ""
|
106 |
|
107 |
-
#: includes/class-demo-importer.php:
|
108 |
msgid "Installing Demo from uploaded file: %s"
|
109 |
msgstr ""
|
110 |
|
111 |
-
#: includes/class-demo-importer.php:
|
112 |
#: includes/includes/functions-demo-importer.php:97
|
113 |
msgid "No demo specified."
|
114 |
msgstr ""
|
115 |
|
116 |
-
#: includes/class-demo-importer.php:
|
117 |
msgid "Sorry, you are not allowed to import."
|
118 |
msgstr ""
|
119 |
|
120 |
-
#: includes/class-demo-importer.php:
|
121 |
msgid "The XML file dummy content is missing."
|
122 |
msgstr ""
|
123 |
|
124 |
-
#: includes/class-demo-importer.php:
|
125 |
msgid "The DAT file customizer data is missing."
|
126 |
msgstr ""
|
127 |
|
128 |
-
#: includes/class-demo-importer.php:
|
129 |
msgid "The WIE file widget content is missing."
|
130 |
msgstr ""
|
131 |
|
@@ -182,236 +296,257 @@ msgstr ""
|
|
182 |
msgid "New Demos"
|
183 |
msgstr ""
|
184 |
|
185 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
186 |
#: includes/includes/admin/views/html-admin-page-installer.php:30
|
187 |
-
msgid ""
|
188 |
-
"<strong>Notice</strong> – If you want to completely remove a demo "
|
189 |
-
"installation after importing it, you can use a plugin like %1$sWordPress "
|
190 |
-
"Reset%2$s."
|
191 |
-
msgstr ""
|
192 |
-
|
193 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:26
|
194 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:34
|
195 |
msgid "The Demo Importer screen requires JavaScript."
|
196 |
msgstr ""
|
197 |
|
198 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
199 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
200 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:23
|
201 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
202 |
msgid "Demo Details"
|
203 |
msgstr ""
|
204 |
|
205 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
206 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
207 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
208 |
-
#: includes/includes/admin/views/html-admin-page-installer-preview.php:
|
209 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:26
|
210 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
211 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
212 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
213 |
#. translators: %s: Demo author name
|
214 |
msgid "By %s"
|
215 |
msgstr ""
|
216 |
|
217 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
218 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
219 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:32
|
220 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
221 |
#. translators: %s: Demo name
|
222 |
msgid "<span>Imported:</span> %s"
|
223 |
msgstr ""
|
224 |
|
225 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
226 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
227 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
228 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:44
|
229 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
230 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
231 |
msgid "Required %s theme must be activated to import this demo."
|
232 |
msgstr ""
|
233 |
|
234 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
235 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
236 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
237 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
238 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
239 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
240 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
241 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:44
|
242 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:46
|
243 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:53
|
244 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
245 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
246 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
247 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
248 |
msgid "Import"
|
249 |
msgstr ""
|
250 |
|
251 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
252 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
253 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
254 |
-
#: includes/includes/admin/views/html-admin-page-installer-preview.php:
|
255 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:55
|
256 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
257 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
258 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
259 |
msgid "Preview"
|
260 |
msgstr ""
|
261 |
|
262 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
263 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
264 |
msgid "Show previous demo"
|
265 |
msgstr ""
|
266 |
|
267 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
268 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
269 |
msgid "Show next demo"
|
270 |
msgstr ""
|
271 |
|
272 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
273 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
274 |
msgid "Close details dialog"
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
278 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
279 |
msgid "Imported Demo"
|
280 |
msgstr ""
|
281 |
|
282 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
283 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
284 |
msgid "Version: %s"
|
285 |
msgstr ""
|
286 |
|
287 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
288 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
289 |
msgid "Required Plugin must be activated to import this demo."
|
290 |
msgstr ""
|
291 |
|
292 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
293 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
294 |
msgid "Plugins Information"
|
295 |
msgstr ""
|
296 |
|
297 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
298 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
299 |
msgid "Plugin Name"
|
300 |
msgstr ""
|
301 |
|
302 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
303 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
304 |
msgid "Type"
|
305 |
msgstr ""
|
306 |
|
307 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
308 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
309 |
msgid "Status"
|
310 |
msgstr ""
|
311 |
|
312 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
313 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
314 |
msgid "Required"
|
315 |
msgstr ""
|
316 |
|
317 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
318 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
319 |
msgid "Recommended"
|
320 |
msgstr ""
|
321 |
|
322 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
323 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
324 |
msgid "No plugins are needed to import this demo."
|
325 |
msgstr ""
|
326 |
|
327 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
328 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
329 |
msgid "Tags:"
|
330 |
msgstr ""
|
331 |
|
332 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
333 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
334 |
msgid "Delete"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#: includes/includes/admin/views/html-admin-page-installer-preview.php:
|
338 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
339 |
msgid "Demo Preview"
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: includes/includes/admin/views/html-admin-page-installer-preview.php:
|
343 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
344 |
msgid "Download"
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
|
|
|
|
|
|
|
|
|
|
348 |
msgid "Welcome"
|
349 |
msgstr ""
|
350 |
|
351 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
352 |
msgid "Installed Demos"
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
356 |
msgid "Theme Demos"
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
360 |
msgid "Upload Demo"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
364 |
msgid ""
|
365 |
"If you have a demo pack in a .zip format, you may install it by uploading "
|
366 |
"it here."
|
367 |
msgstr ""
|
368 |
|
369 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
370 |
msgid "Demo zip file"
|
371 |
msgstr ""
|
372 |
|
373 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
374 |
msgid "Install Now"
|
375 |
msgstr ""
|
376 |
|
377 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
378 |
msgid "Filter demos list"
|
379 |
msgstr ""
|
380 |
|
381 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
382 |
msgid "Welcome to ThemeGrill Demo Importer!"
|
383 |
msgstr ""
|
384 |
|
385 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
386 |
msgid "Get Started"
|
387 |
msgstr ""
|
388 |
|
389 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
390 |
msgid ""
|
391 |
"1. Visit <a href=\"%s\" target=\"_blank\"><strong>this page</strong></a> "
|
392 |
-
"and download demo zip file."
|
393 |
msgstr ""
|
394 |
|
395 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
396 |
-
msgid "2. Click <strong>Upload Demo</strong> button on the top of this
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
400 |
-
msgid "
|
|
|
|
|
401 |
msgstr ""
|
402 |
|
403 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
404 |
msgid "4. Go to <strong>Installed Demos</strong> tab."
|
405 |
msgstr ""
|
406 |
|
407 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
408 |
-
msgid "
|
|
|
|
|
409 |
msgstr ""
|
410 |
|
411 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
412 |
msgid "Available demos list"
|
413 |
msgstr ""
|
414 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
415 |
#: includes/includes/class-customizer-importer.php:42
|
416 |
msgid ""
|
417 |
"The customizer import file is not in a correct format. Please make sure to "
|
@@ -464,19 +599,19 @@ msgstr ""
|
|
464 |
msgid "Demo could not be deleted."
|
465 |
msgstr ""
|
466 |
|
467 |
-
#: includes/includes/functions-demo-importer.php:
|
468 |
msgid "Could not access filesystem."
|
469 |
msgstr ""
|
470 |
|
471 |
-
#: includes/includes/functions-demo-importer.php:
|
472 |
msgid "Filesystem error."
|
473 |
msgstr ""
|
474 |
|
475 |
-
#: includes/includes/functions-demo-importer.php:
|
476 |
msgid "Unable to locate ThemeGrill demo pack directory."
|
477 |
msgstr ""
|
478 |
|
479 |
-
#: includes/includes/functions-demo-importer.php:
|
480 |
msgid "Could not fully remove the demo %s."
|
481 |
msgstr ""
|
482 |
|
@@ -680,23 +815,23 @@ msgstr ""
|
|
680 |
msgid "This does not appear to be a WXR file, missing/invalid WXR version number"
|
681 |
msgstr ""
|
682 |
|
683 |
-
#: themegrill-demo-importer.php:
|
684 |
msgid "View Demo Importer"
|
685 |
msgstr ""
|
686 |
|
687 |
-
#: themegrill-demo-importer.php:
|
688 |
msgid "View Demo Importer Documentation"
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: themegrill-demo-importer.php:
|
692 |
msgid "Docs"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: themegrill-demo-importer.php:
|
696 |
msgid "Visit Free Customer Support Forum"
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: themegrill-demo-importer.php:
|
700 |
msgid "Free Support"
|
701 |
msgstr ""
|
702 |
|
@@ -704,83 +839,90 @@ msgstr ""
|
|
704 |
msgid "ThemeGrill Demo Importer"
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: themegrill-demo-importer.php:
|
708 |
msgid "This plugin requires %s by ThemeGrill to work."
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: themegrill-demo-importer.php:
|
712 |
msgid "Official Theme"
|
713 |
msgstr ""
|
714 |
|
715 |
#. Plugin URI of the plugin/theme
|
716 |
-
msgid "
|
717 |
msgstr ""
|
718 |
|
719 |
#. Description of the plugin/theme
|
720 |
msgid ""
|
721 |
-
"
|
722 |
-
"
|
723 |
msgstr ""
|
724 |
|
725 |
#. Author URI of the plugin/theme
|
726 |
-
msgid "
|
727 |
msgstr ""
|
728 |
|
729 |
-
#: includes/class-demo-importer.php:
|
730 |
msgctxt "Admin menu name"
|
731 |
msgid "Demo Importer"
|
732 |
msgstr ""
|
733 |
|
734 |
-
#: includes/class-demo-importer.php:
|
735 |
msgctxt "demo"
|
736 |
msgid "Importing %s..."
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: includes/class-demo-importer.php:
|
740 |
msgctxt "demo"
|
741 |
msgid "%s imported!"
|
742 |
msgstr ""
|
743 |
|
744 |
-
#: includes/class-demo-importer.php:
|
745 |
msgctxt "demo"
|
746 |
msgid "%s import failed"
|
747 |
msgstr ""
|
748 |
|
749 |
-
#: includes/class-demo-importer.php:
|
750 |
msgctxt "demo"
|
751 |
msgid "Live Preview %s"
|
752 |
msgstr ""
|
753 |
|
754 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
755 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
756 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
757 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:51
|
758 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
759 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
760 |
#. translators: %s: Demo name
|
761 |
msgctxt "demo"
|
762 |
msgid "Import %s"
|
763 |
msgstr ""
|
764 |
|
765 |
-
#: includes/includes/admin/views/html-admin-page-importer.php:
|
766 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
767 |
msgctxt "demo"
|
768 |
msgid "Imported"
|
769 |
msgstr ""
|
770 |
|
771 |
-
#: includes/includes/admin/views/html-admin-page-installer-preview.php:
|
772 |
-
#: includes/includes/admin/views/html-admin-page-installer.php:
|
773 |
#. translators: %s: Demo name
|
774 |
msgctxt "demo"
|
775 |
msgid "Download %s"
|
776 |
msgstr ""
|
777 |
|
|
|
778 |
#: includes/includes/admin/views/html-admin-page-installer.php:289
|
|
|
|
|
|
|
|
|
|
|
|
|
779 |
msgctxt "demo"
|
780 |
msgid "Installed"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: includes/includes/admin/views/html-admin-page-installer-preview.php:
|
784 |
msgctxt "theme"
|
785 |
msgid "Installed"
|
786 |
msgstr ""
|
2 |
# This file is distributed under the GPLv3 or later.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: ThemeGrill Demo Importer 1.3.4\n"
|
6 |
"Report-Msgid-Bugs-To: themegrill@gmail.com\n"
|
7 |
+
"POT-Creation-Date: 2017-07-03 11:22:27+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
"PO-Revision-Date: 2017-MO-DA HO:MI+ZONE\n"
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
|
14 |
+
"X-Generator: grunt-wp-i18n1.0.0\n"
|
15 |
|
16 |
+
#: includes/class-demo-importer.php:173
|
17 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:12
|
18 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:21
|
19 |
+
#: themegrill-demo-importer.php:227
|
20 |
msgid "Demo Importer"
|
21 |
msgstr ""
|
22 |
|
23 |
+
#: includes/class-demo-importer.php:223
|
24 |
msgid "Importing..."
|
25 |
msgstr ""
|
26 |
|
27 |
+
#: includes/class-demo-importer.php:225
|
28 |
msgid "Importing... please wait."
|
29 |
msgstr ""
|
30 |
|
31 |
+
#: includes/class-demo-importer.php:226
|
32 |
msgid "Import completed successfully."
|
33 |
msgstr ""
|
34 |
|
35 |
+
#: includes/class-demo-importer.php:227
|
36 |
msgid "Import Failed!"
|
37 |
msgstr ""
|
38 |
|
39 |
+
#: includes/class-demo-importer.php:228
|
40 |
msgid "Import failed: %s"
|
41 |
msgstr ""
|
42 |
|
43 |
+
#: includes/class-demo-importer.php:231
|
44 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:57
|
45 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:109
|
46 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:221
|
47 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:230
|
48 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:40
|
49 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:125
|
50 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:237
|
51 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:246
|
52 |
msgid "Live Preview"
|
53 |
msgstr ""
|
54 |
|
55 |
+
#: includes/class-demo-importer.php:233
|
56 |
msgid "Imported!"
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: includes/class-demo-importer.php:234
|
60 |
msgid "Try this solution!"
|
61 |
msgstr ""
|
62 |
|
63 |
+
#: includes/class-demo-importer.php:244
|
64 |
+
msgid ""
|
65 |
+
"It is strongly recommended that you backup your database before proceeding. "
|
66 |
+
"Are you sure you wish to run the reset wizard now?"
|
67 |
+
msgstr ""
|
68 |
+
|
69 |
+
#: includes/class-demo-importer.php:245
|
70 |
msgid ""
|
71 |
"Are you sure you want to delete this demo?\n"
|
72 |
"\n"
|
73 |
"Click 'Cancel' to go back, 'OK' to confirm the delete."
|
74 |
msgstr ""
|
75 |
|
76 |
+
#: includes/class-demo-importer.php:246
|
77 |
msgid ""
|
78 |
"Importing demo content will replicate the live demo and overwrites your "
|
79 |
"current customizer, widgets and other settings. It might take few minutes "
|
80 |
"to complete the demo import. Are you sure you want to import this demo?"
|
81 |
msgstr ""
|
82 |
|
83 |
+
#: includes/class-demo-importer.php:251
|
84 |
msgid "Add New Demo"
|
85 |
msgstr ""
|
86 |
|
87 |
+
#: includes/class-demo-importer.php:252
|
88 |
msgid "Search Demos"
|
89 |
msgstr ""
|
90 |
|
91 |
+
#: includes/class-demo-importer.php:253
|
92 |
msgid "Search demos..."
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: includes/class-demo-importer.php:254
|
96 |
msgid "Number of Demos found: %d"
|
97 |
msgstr ""
|
98 |
|
99 |
+
#: includes/class-demo-importer.php:255
|
100 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:80
|
101 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:95
|
102 |
msgid "No demos found. Try a different search."
|
103 |
msgstr ""
|
104 |
|
105 |
+
#: includes/class-demo-importer.php:278
|
106 |
+
msgid ""
|
107 |
+
"If you like <strong>ThemeGrill Demo Importer</strong> please leave us a "
|
108 |
+
"%s★★★★★%s rating. A huge thanks in advance!"
|
109 |
+
msgstr ""
|
110 |
+
|
111 |
+
#: includes/class-demo-importer.php:278
|
112 |
+
msgid "Thanks :)"
|
113 |
+
msgstr ""
|
114 |
+
|
115 |
+
#: includes/class-demo-importer.php:280
|
116 |
+
msgid "Thank you for importing with ThemeGrill Demo Importer."
|
117 |
+
msgstr ""
|
118 |
+
|
119 |
+
#: includes/class-demo-importer.php:299
|
120 |
+
msgid "Importing Demo"
|
121 |
+
msgstr ""
|
122 |
+
|
123 |
+
#: includes/class-demo-importer.php:310 includes/class-demo-importer.php:312
|
124 |
+
msgid "Guided Tour"
|
125 |
+
msgstr ""
|
126 |
+
|
127 |
+
#: includes/class-demo-importer.php:323 includes/class-demo-importer.php:325
|
128 |
+
msgid "Help & Support"
|
129 |
+
msgstr ""
|
130 |
+
|
131 |
+
#: includes/class-demo-importer.php:327
|
132 |
+
msgid ""
|
133 |
+
"Should you need help understanding, using, or extending ThemeGrill Demo "
|
134 |
+
"Importer, <a href=\"%s\">please read our documentation</a>. You will find "
|
135 |
+
"all kinds of resources including snippets, tutorials and much more."
|
136 |
+
msgstr ""
|
137 |
+
|
138 |
+
#: includes/class-demo-importer.php:331
|
139 |
+
msgid ""
|
140 |
+
"For further assistance with ThemeGrill Demo Importer core you can use the "
|
141 |
+
"<a href=\"%1$s\">community forum</a>. If you need help with premium themes "
|
142 |
+
"sold by ThemeGrill, please <a href=\"%2$s\">use our free support forum</a>."
|
143 |
+
msgstr ""
|
144 |
+
|
145 |
+
#: includes/class-demo-importer.php:335
|
146 |
+
msgid "Community forum"
|
147 |
+
msgstr ""
|
148 |
+
|
149 |
+
#: includes/class-demo-importer.php:335
|
150 |
+
msgid "ThemeGrill Support"
|
151 |
+
msgstr ""
|
152 |
+
|
153 |
+
#: includes/class-demo-importer.php:340 includes/class-demo-importer.php:342
|
154 |
+
msgid "Found a bug?"
|
155 |
+
msgstr ""
|
156 |
+
|
157 |
+
#: includes/class-demo-importer.php:343
|
158 |
+
msgid ""
|
159 |
+
"If you find a bug within ThemeGrill Demo Importer you can create a ticket "
|
160 |
+
"via <a href=\"%1$s\">Github issues</a>. Ensure you read the <a "
|
161 |
+
"href=\"%2$s\">contribution guide</a> prior to submitting your report. To "
|
162 |
+
"help us solve your issue, please be as descriptive as possible."
|
163 |
+
msgstr ""
|
164 |
+
|
165 |
+
#: includes/class-demo-importer.php:344
|
166 |
+
msgid "Report a bug"
|
167 |
+
msgstr ""
|
168 |
+
|
169 |
+
#: includes/class-demo-importer.php:350 includes/class-demo-importer.php:352
|
170 |
+
#: includes/class-demo-importer.php:354
|
171 |
+
msgid "Reset wizard"
|
172 |
+
msgstr ""
|
173 |
+
|
174 |
+
#: includes/class-demo-importer.php:353
|
175 |
+
msgid ""
|
176 |
+
"If you need to reset the WordPress back to default again, please click on "
|
177 |
+
"the button below."
|
178 |
+
msgstr ""
|
179 |
+
|
180 |
+
#: includes/class-demo-importer.php:358
|
181 |
+
msgid "For more information:"
|
182 |
+
msgstr ""
|
183 |
+
|
184 |
+
#: includes/class-demo-importer.php:359
|
185 |
+
msgid "About Demo Importer"
|
186 |
+
msgstr ""
|
187 |
+
|
188 |
+
#: includes/class-demo-importer.php:360
|
189 |
+
msgid "WordPress.org project"
|
190 |
+
msgstr ""
|
191 |
+
|
192 |
+
#: includes/class-demo-importer.php:361
|
193 |
+
msgid "Github project"
|
194 |
+
msgstr ""
|
195 |
+
|
196 |
+
#: includes/class-demo-importer.php:362
|
197 |
+
msgid "Official themes"
|
198 |
+
msgstr ""
|
199 |
+
|
200 |
+
#: includes/class-demo-importer.php:363
|
201 |
+
msgid "Official plugins"
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
#: includes/class-demo-importer.php:393
|
205 |
+
msgid "Action failed. Please refresh the page and retry."
|
206 |
+
msgstr ""
|
207 |
+
|
208 |
+
#: includes/class-demo-importer.php:397 themegrill-demo-importer.php:54
|
209 |
+
#: themegrill-demo-importer.php:62
|
210 |
+
msgid "Cheatin’ huh?"
|
211 |
+
msgstr ""
|
212 |
+
|
213 |
#. Author of the plugin/theme
|
214 |
msgid "ThemeGrill"
|
215 |
msgstr ""
|
216 |
|
217 |
+
#: includes/class-demo-importer.php:623
|
218 |
msgid "Sorry, you are not allowed to install demo on this site."
|
219 |
msgstr ""
|
220 |
|
221 |
+
#: includes/class-demo-importer.php:630
|
222 |
msgid "Installing Demo from uploaded file: %s"
|
223 |
msgstr ""
|
224 |
|
225 |
+
#: includes/class-demo-importer.php:657
|
226 |
#: includes/includes/functions-demo-importer.php:97
|
227 |
msgid "No demo specified."
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: includes/class-demo-importer.php:673
|
231 |
msgid "Sorry, you are not allowed to import."
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: includes/class-demo-importer.php:750
|
235 |
msgid "The XML file dummy content is missing."
|
236 |
msgstr ""
|
237 |
|
238 |
+
#: includes/class-demo-importer.php:813
|
239 |
msgid "The DAT file customizer data is missing."
|
240 |
msgstr ""
|
241 |
|
242 |
+
#: includes/class-demo-importer.php:837
|
243 |
msgid "The WIE file widget content is missing."
|
244 |
msgstr ""
|
245 |
|
296 |
msgid "New Demos"
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:25
|
300 |
#: includes/includes/admin/views/html-admin-page-installer.php:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
301 |
msgid "The Demo Importer screen requires JavaScript."
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:40
|
305 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:92
|
306 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:23
|
307 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:108
|
308 |
msgid "Demo Details"
|
309 |
msgstr ""
|
310 |
|
311 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:43
|
312 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:95
|
313 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:155
|
314 |
+
#: includes/includes/admin/views/html-admin-page-installer-preview.php:27
|
315 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:26
|
316 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:111
|
317 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:171
|
318 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:274
|
319 |
#. translators: %s: Demo author name
|
320 |
msgid "By %s"
|
321 |
msgstr ""
|
322 |
|
323 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:49
|
324 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:101
|
325 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:32
|
326 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:117
|
327 |
#. translators: %s: Demo name
|
328 |
msgid "<span>Imported:</span> %s"
|
329 |
msgstr ""
|
330 |
|
331 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:61
|
332 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:113
|
333 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:160
|
334 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:44
|
335 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:129
|
336 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:176
|
337 |
msgid "Required %s theme must be activated to import this demo."
|
338 |
msgstr ""
|
339 |
|
340 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:61
|
341 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:63
|
342 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:70
|
343 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:113
|
344 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:115
|
345 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:122
|
346 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:232
|
347 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:44
|
348 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:46
|
349 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:53
|
350 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:129
|
351 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:131
|
352 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:138
|
353 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:248
|
354 |
msgid "Import"
|
355 |
msgstr ""
|
356 |
|
357 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:72
|
358 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:124
|
359 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:235
|
360 |
+
#: includes/includes/admin/views/html-admin-page-installer-preview.php:46
|
361 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:55
|
362 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:140
|
363 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:251
|
364 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:293
|
365 |
msgid "Preview"
|
366 |
msgstr ""
|
367 |
|
368 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:137
|
369 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:153
|
370 |
msgid "Show previous demo"
|
371 |
msgstr ""
|
372 |
|
373 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:138
|
374 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:154
|
375 |
msgid "Show next demo"
|
376 |
msgstr ""
|
377 |
|
378 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:139
|
379 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:155
|
380 |
msgid "Close details dialog"
|
381 |
msgstr ""
|
382 |
|
383 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:152
|
384 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:168
|
385 |
msgid "Imported Demo"
|
386 |
msgstr ""
|
387 |
|
388 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:154
|
389 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:170
|
390 |
msgid "Version: %s"
|
391 |
msgstr ""
|
392 |
|
393 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:162
|
394 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:178
|
395 |
msgid "Required Plugin must be activated to import this demo."
|
396 |
msgstr ""
|
397 |
|
398 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:168
|
399 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:184
|
400 |
msgid "Plugins Information"
|
401 |
msgstr ""
|
402 |
|
403 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:173
|
404 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:189
|
405 |
msgid "Plugin Name"
|
406 |
msgstr ""
|
407 |
|
408 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:174
|
409 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:190
|
410 |
msgid "Type"
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:175
|
414 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:191
|
415 |
msgid "Status"
|
416 |
msgstr ""
|
417 |
|
418 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:191
|
419 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:207
|
420 |
msgid "Required"
|
421 |
msgstr ""
|
422 |
|
423 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:193
|
424 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:209
|
425 |
msgid "Recommended"
|
426 |
msgstr ""
|
427 |
|
428 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:207
|
429 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:223
|
430 |
msgid "No plugins are needed to import this demo."
|
431 |
msgstr ""
|
432 |
|
433 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:214
|
434 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:230
|
435 |
msgid "Tags:"
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:239
|
439 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:255
|
440 |
msgid "Delete"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: includes/includes/admin/views/html-admin-page-installer-preview.php:23
|
444 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:270
|
445 |
msgid "Demo Preview"
|
446 |
msgstr ""
|
447 |
|
448 |
+
#: includes/includes/admin/views/html-admin-page-installer-preview.php:37
|
449 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:284
|
450 |
msgid "Download"
|
451 |
msgstr ""
|
452 |
|
453 |
+
#: includes/includes/admin/views/html-admin-page-installer-preview.php:44
|
454 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:291
|
455 |
+
msgid "View Pro"
|
456 |
+
msgstr ""
|
457 |
+
|
458 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:14
|
459 |
msgid "Welcome"
|
460 |
msgstr ""
|
461 |
|
462 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:15
|
463 |
msgid "Installed Demos"
|
464 |
msgstr ""
|
465 |
|
466 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:16
|
467 |
msgid "Theme Demos"
|
468 |
msgstr ""
|
469 |
|
470 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:24
|
471 |
msgid "Upload Demo"
|
472 |
msgstr ""
|
473 |
|
474 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:34
|
475 |
msgid ""
|
476 |
"If you have a demo pack in a .zip format, you may install it by uploading "
|
477 |
"it here."
|
478 |
msgstr ""
|
479 |
|
480 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:37
|
481 |
msgid "Demo zip file"
|
482 |
msgstr ""
|
483 |
|
484 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:39
|
485 |
msgid "Install Now"
|
486 |
msgstr ""
|
487 |
|
488 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:43
|
489 |
msgid "Filter demos list"
|
490 |
msgstr ""
|
491 |
|
492 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:67
|
493 |
msgid "Welcome to ThemeGrill Demo Importer!"
|
494 |
msgstr ""
|
495 |
|
496 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:68
|
497 |
msgid "Get Started"
|
498 |
msgstr ""
|
499 |
|
500 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:72
|
501 |
msgid ""
|
502 |
"1. Visit <a href=\"%s\" target=\"_blank\"><strong>this page</strong></a> "
|
503 |
+
"and download the theme demo zip file."
|
504 |
msgstr ""
|
505 |
|
506 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:73
|
507 |
+
msgid "2. Click on the <strong>Upload Demo</strong> button on the top of this page."
|
508 |
msgstr ""
|
509 |
|
510 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:74
|
511 |
+
msgid ""
|
512 |
+
"3. Browse the downloaded demo zip file and click on <strong>Install "
|
513 |
+
"Now</strong> button."
|
514 |
msgstr ""
|
515 |
|
516 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:75
|
517 |
msgid "4. Go to <strong>Installed Demos</strong> tab."
|
518 |
msgstr ""
|
519 |
|
520 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:76
|
521 |
+
msgid ""
|
522 |
+
"5. Click on the <strong>Import</strong> button and wait for few minutes. "
|
523 |
+
"Done!"
|
524 |
msgstr ""
|
525 |
|
526 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:88
|
527 |
msgid "Available demos list"
|
528 |
msgstr ""
|
529 |
|
530 |
+
#: includes/includes/admin/views/html-notice-reset-wizard-success.php:14
|
531 |
+
msgid ""
|
532 |
+
"WordPress has been reset back to defaults. The user "
|
533 |
+
"<strong>\"%1$s\"</strong> was recreated with its previous password."
|
534 |
+
msgstr ""
|
535 |
+
|
536 |
+
#: includes/includes/admin/views/html-notice-reset-wizard.php:12
|
537 |
+
msgid ""
|
538 |
+
"<strong>Reset Wizard</strong> – If you need to reset the WordPress "
|
539 |
+
"back to default again :)"
|
540 |
+
msgstr ""
|
541 |
+
|
542 |
+
#: includes/includes/admin/views/html-notice-reset-wizard.php:13
|
543 |
+
msgid "Run the Reset Wizard"
|
544 |
+
msgstr ""
|
545 |
+
|
546 |
+
#: includes/includes/admin/views/html-notice-reset-wizard.php:13
|
547 |
+
msgid "Hide this notice"
|
548 |
+
msgstr ""
|
549 |
+
|
550 |
#: includes/includes/class-customizer-importer.php:42
|
551 |
msgid ""
|
552 |
"The customizer import file is not in a correct format. Please make sure to "
|
599 |
msgid "Demo could not be deleted."
|
600 |
msgstr ""
|
601 |
|
602 |
+
#: includes/includes/functions-demo-importer.php:194
|
603 |
msgid "Could not access filesystem."
|
604 |
msgstr ""
|
605 |
|
606 |
+
#: includes/includes/functions-demo-importer.php:198
|
607 |
msgid "Filesystem error."
|
608 |
msgstr ""
|
609 |
|
610 |
+
#: includes/includes/functions-demo-importer.php:204
|
611 |
msgid "Unable to locate ThemeGrill demo pack directory."
|
612 |
msgstr ""
|
613 |
|
614 |
+
#: includes/includes/functions-demo-importer.php:212
|
615 |
msgid "Could not fully remove the demo %s."
|
616 |
msgstr ""
|
617 |
|
815 |
msgid "This does not appear to be a WXR file, missing/invalid WXR version number"
|
816 |
msgstr ""
|
817 |
|
818 |
+
#: themegrill-demo-importer.php:227
|
819 |
msgid "View Demo Importer"
|
820 |
msgstr ""
|
821 |
|
822 |
+
#: themegrill-demo-importer.php:242
|
823 |
msgid "View Demo Importer Documentation"
|
824 |
msgstr ""
|
825 |
|
826 |
+
#: themegrill-demo-importer.php:242
|
827 |
msgid "Docs"
|
828 |
msgstr ""
|
829 |
|
830 |
+
#: themegrill-demo-importer.php:243
|
831 |
msgid "Visit Free Customer Support Forum"
|
832 |
msgstr ""
|
833 |
|
834 |
+
#: themegrill-demo-importer.php:243
|
835 |
msgid "Free Support"
|
836 |
msgstr ""
|
837 |
|
839 |
msgid "ThemeGrill Demo Importer"
|
840 |
msgstr ""
|
841 |
|
842 |
+
#: themegrill-demo-importer.php:257
|
843 |
msgid "This plugin requires %s by ThemeGrill to work."
|
844 |
msgstr ""
|
845 |
|
846 |
+
#: themegrill-demo-importer.php:257
|
847 |
msgid "Official Theme"
|
848 |
msgstr ""
|
849 |
|
850 |
#. Plugin URI of the plugin/theme
|
851 |
+
msgid "https://themegrill.com/demo-importer/"
|
852 |
msgstr ""
|
853 |
|
854 |
#. Description of the plugin/theme
|
855 |
msgid ""
|
856 |
+
"Import your demo content, widgets and theme settings with one click for "
|
857 |
+
"ThemeGrill official themes."
|
858 |
msgstr ""
|
859 |
|
860 |
#. Author URI of the plugin/theme
|
861 |
+
msgid "https://themegrill.com"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: includes/class-demo-importer.php:188
|
865 |
msgctxt "Admin menu name"
|
866 |
msgid "Demo Importer"
|
867 |
msgstr ""
|
868 |
|
869 |
+
#: includes/class-demo-importer.php:224
|
870 |
msgctxt "demo"
|
871 |
msgid "Importing %s..."
|
872 |
msgstr ""
|
873 |
|
874 |
+
#: includes/class-demo-importer.php:229
|
875 |
msgctxt "demo"
|
876 |
msgid "%s imported!"
|
877 |
msgstr ""
|
878 |
|
879 |
+
#: includes/class-demo-importer.php:230
|
880 |
msgctxt "demo"
|
881 |
msgid "%s import failed"
|
882 |
msgstr ""
|
883 |
|
884 |
+
#: includes/class-demo-importer.php:232
|
885 |
msgctxt "demo"
|
886 |
msgid "Live Preview %s"
|
887 |
msgstr ""
|
888 |
|
889 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:68
|
890 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:120
|
891 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:226
|
892 |
#: includes/includes/admin/views/html-admin-page-installer-uploads.php:51
|
893 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:136
|
894 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:242
|
895 |
#. translators: %s: Demo name
|
896 |
msgctxt "demo"
|
897 |
msgid "Import %s"
|
898 |
msgstr ""
|
899 |
|
900 |
+
#: includes/includes/admin/views/html-admin-page-importer.php:129
|
901 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:145
|
902 |
msgctxt "demo"
|
903 |
msgid "Imported"
|
904 |
msgstr ""
|
905 |
|
906 |
+
#: includes/includes/admin/views/html-admin-page-installer-preview.php:35
|
907 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:282
|
908 |
#. translators: %s: Demo name
|
909 |
msgctxt "demo"
|
910 |
msgid "Download %s"
|
911 |
msgstr ""
|
912 |
|
913 |
+
#: includes/includes/admin/views/html-admin-page-installer-preview.php:42
|
914 |
#: includes/includes/admin/views/html-admin-page-installer.php:289
|
915 |
+
#. translators: %s: Demo name
|
916 |
+
msgctxt "demo"
|
917 |
+
msgid "View %s Pro"
|
918 |
+
msgstr ""
|
919 |
+
|
920 |
+
#: includes/includes/admin/views/html-admin-page-installer.php:297
|
921 |
msgctxt "demo"
|
922 |
msgid "Installed"
|
923 |
msgstr ""
|
924 |
|
925 |
+
#: includes/includes/admin/views/html-admin-page-installer-preview.php:50
|
926 |
msgctxt "theme"
|
927 |
msgid "Installed"
|
928 |
msgstr ""
|
phpcs.ruleset.xml
CHANGED
@@ -155,7 +155,7 @@
|
|
155 |
<exclude name="WordPress.VIP.RestrictedFunctions.urlencode" />
|
156 |
<exclude name="WordPress.VIP.RestrictedFunctions.url_to_postid" />
|
157 |
<exclude name="WordPress.VIP.RestrictedFunctions.user_meta" />
|
158 |
-
<exclude name="WordPress.VIP.RestrictedFunctions.wp_get_post_terms" />
|
159 |
<exclude name="WordPress.VIP.RestrictedFunctions.wp_redirect" />
|
160 |
<exclude name="WordPress.VIP.RestrictedFunctions.wp_remote_get" />
|
161 |
<exclude name="WordPress.VIP.RestrictedVariables.user_meta" />
|
@@ -190,5 +190,6 @@
|
|
190 |
<!-- <exclude name="WordPress.WhiteSpace.OperatorSpacing.SpacingBefore" /> -->
|
191 |
<exclude name="WordPress.XSS.EscapeOutput.OutputNotEscaped" />
|
192 |
<exclude name="WordPress.XSS.EscapeOutput.UnsafePrintingFunction" />
|
|
|
193 |
</rule>
|
194 |
</ruleset>
|
155 |
<exclude name="WordPress.VIP.RestrictedFunctions.urlencode" />
|
156 |
<exclude name="WordPress.VIP.RestrictedFunctions.url_to_postid" />
|
157 |
<exclude name="WordPress.VIP.RestrictedFunctions.user_meta" />
|
158 |
+
<!-- <exclude name="WordPress.VIP.RestrictedFunctions.wp_get_post_terms" /> -->
|
159 |
<exclude name="WordPress.VIP.RestrictedFunctions.wp_redirect" />
|
160 |
<exclude name="WordPress.VIP.RestrictedFunctions.wp_remote_get" />
|
161 |
<exclude name="WordPress.VIP.RestrictedVariables.user_meta" />
|
190 |
<!-- <exclude name="WordPress.WhiteSpace.OperatorSpacing.SpacingBefore" /> -->
|
191 |
<exclude name="WordPress.XSS.EscapeOutput.OutputNotEscaped" />
|
192 |
<exclude name="WordPress.XSS.EscapeOutput.UnsafePrintingFunction" />
|
193 |
+
<exclude name="WordPress.Files.FileName.InvalidClassFileName" />
|
194 |
</rule>
|
195 |
</ruleset>
|
readme.txt
CHANGED
@@ -2,23 +2,51 @@
|
|
2 |
Contributors: ThemeGrill, shivapoudel
|
3 |
Tags: themegrill, themes, demo, importer, download
|
4 |
Requires at least: 4.0
|
5 |
-
Tested up to: 4.
|
6 |
-
Stable tag: 1.3.
|
7 |
License: GPLv3 or later
|
8 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
10 |
Import your demo content, widgets and theme settings with one click for ThemeGrill official themes.
|
|
|
11 |
== Description ==
|
12 |
|
13 |
Import your demo content, widgets and theme settings with one click for <a href="https://themegrill.com/themes/" target="_blank" rel="nofollow">ThemeGrill</a> official themes.
|
14 |
|
15 |
Get free support at https://themegrill.com/support-forum/
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
== Installation ==
|
18 |
|
19 |
1. Install the plugin either via the WordPress.org plugin directory, or by uploading the files to your server (in the /wp-content/plugins/ directory).
|
20 |
2. Activate the ThemeGrill Demo Importer plugin through the 'Plugins' menu in WordPress.
|
21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
== Frequently Asked Questions ==
|
23 |
|
24 |
= What is the plugin license? =
|
@@ -39,32 +67,13 @@ Yes you can! Join in on our [GitHub repository](https://github.com/themegrill/th
|
|
39 |
|
40 |
== Changelog ==
|
41 |
|
42 |
-
= 1.3.
|
43 |
-
*
|
44 |
-
|
45 |
-
|
46 |
-
*
|
47 |
-
|
48 |
-
|
49 |
-
* Tweak -
|
50 |
-
|
51 |
-
= 1.3.0 =
|
52 |
-
* Tweak - Support data update for nested siteorigin layoutbuilder.
|
53 |
-
* Fix - Import button not working on firefox.
|
54 |
-
|
55 |
-
= 1.2.0 =
|
56 |
-
* Tweak - Load scripts perfecly on demo importer appearance page.
|
57 |
-
* Tweak - Set transient for redirecting to demo importer page after install or update.
|
58 |
-
* Tweak - Introduced filter hook `themegrill_demo_importer_installer` to control demo view.
|
59 |
-
|
60 |
-
= 1.1.0 =
|
61 |
-
* Feature - Backbone views interface for demos and previews
|
62 |
-
* Feature - Added download button for the preview not installed
|
63 |
-
* Feature - Robust quick search view to change in demo interface
|
64 |
-
* Feature - Detailed information in popup to showcase plugins, events, etc
|
65 |
-
* Refactor - Replace old way to import demo with new `wp.updates` methods
|
66 |
-
* Fix - Menu classes to hide admin menu if no JS using css class `hide-if-no-js`
|
67 |
-
* Fix - Remove the old demo pack if found and to update the new demo packs
|
68 |
|
69 |
-
|
70 |
-
* Initial Public Release
|
2 |
Contributors: ThemeGrill, shivapoudel
|
3 |
Tags: themegrill, themes, demo, importer, download
|
4 |
Requires at least: 4.0
|
5 |
+
Tested up to: 4.8
|
6 |
+
Stable tag: 1.3.4
|
7 |
License: GPLv3 or later
|
8 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
10 |
Import your demo content, widgets and theme settings with one click for ThemeGrill official themes.
|
11 |
+
|
12 |
== Description ==
|
13 |
|
14 |
Import your demo content, widgets and theme settings with one click for <a href="https://themegrill.com/themes/" target="_blank" rel="nofollow">ThemeGrill</a> official themes.
|
15 |
|
16 |
Get free support at https://themegrill.com/support-forum/
|
17 |
|
18 |
+
= Demo Importer in action: =
|
19 |
+
|
20 |
+
[youtube https://www.youtube.com/watch?v=rhiybsv3vUU]
|
21 |
+
|
22 |
+
= Requirements =
|
23 |
+
|
24 |
+
* WordPress 4.5 or later.
|
25 |
+
* [ThemeGrill Official Themes](https://themegrill.com/wordpress-themes/).
|
26 |
+
|
27 |
+
= Contribute =
|
28 |
+
|
29 |
+
You can contribute to the source code in our [GitHub](https://github.com/themegrill/themegrill-demo-importer/) page.
|
30 |
+
|
31 |
== Installation ==
|
32 |
|
33 |
1. Install the plugin either via the WordPress.org plugin directory, or by uploading the files to your server (in the /wp-content/plugins/ directory).
|
34 |
2. Activate the ThemeGrill Demo Importer plugin through the 'Plugins' menu in WordPress.
|
35 |
|
36 |
+
= Automatic installation =
|
37 |
+
|
38 |
+
Automatic installation is the easiest option as WordPress handles the file transfers itself and you don’t need to leave your web browser. To do an automatic install of ThemeGrill Demo Importer, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New.
|
39 |
+
|
40 |
+
In the search field type “ThemeGrill Demo Importer” and click Search Plugins. Once you’ve found our demo importer plugin you can view details about it such as the the point release, rating and description. Most importantly of course, you can install it by simply clicking “Install Now”.
|
41 |
+
|
42 |
+
= Manual installation =
|
43 |
+
|
44 |
+
The manual installation method involves downloading our demo importer plugin and uploading it to your webserver via your favourite FTP application. The WordPress codex contains [instructions on how to do this here](https://codex.wordpress.org/Managing_Plugins#Manual_Plugin_Installation).
|
45 |
+
|
46 |
+
= Updating =
|
47 |
+
|
48 |
+
Automatic updates should work like a charm; as always though, ensure you backup your site just in case.
|
49 |
+
|
50 |
== Frequently Asked Questions ==
|
51 |
|
52 |
= What is the plugin license? =
|
67 |
|
68 |
== Changelog ==
|
69 |
|
70 |
+
= 1.3.4 =
|
71 |
+
* Feature - Support RTL for Importer.
|
72 |
+
* Feature - Reset wizard for clean up.
|
73 |
+
* Fixed - Undefined queue job update action.
|
74 |
+
* Fixed - Use of `wp-heading-inline` core class.
|
75 |
+
* Tweak - Use of defined constant for demo packs.
|
76 |
+
* Tweak - Uninstall data with a defined constant.
|
77 |
+
* Tweak - Fallback screenshot for flash demo preview.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
|
79 |
+
[See changelog for all versions](https://raw.githubusercontent.com/themegrill/themegrill-demo-importer/master/CHANGELOG.txt).
|
|
themegrill-demo-importer.php
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
/**
|
3 |
* Plugin Name: ThemeGrill Demo Importer
|
4 |
* Plugin URI: https://themegrill.com/demo-importer/
|
5 |
-
* Description:
|
6 |
-
* Version: 1.3.
|
7 |
* Author: ThemeGrill
|
8 |
* Author URI: https://themegrill.com
|
9 |
* License: GPLv3 or later
|
@@ -26,7 +26,7 @@ final class ThemeGrill_Demo_Importer {
|
|
26 |
* Plugin version.
|
27 |
* @var string
|
28 |
*/
|
29 |
-
|
30 |
|
31 |
/**
|
32 |
* Instance of this class.
|
@@ -34,19 +34,85 @@ final class ThemeGrill_Demo_Importer {
|
|
34 |
*/
|
35 |
protected static $instance = null;
|
36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
/**
|
38 |
* Initialize the plugin.
|
39 |
*/
|
40 |
private function __construct() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
// Load plugin text domain.
|
42 |
add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
|
43 |
|
|
|
|
|
|
|
44 |
// Check with ThemeGrill theme is installed.
|
45 |
if ( in_array( get_option( 'template' ), $this->get_core_supported_themes() ) ) {
|
46 |
$this->includes();
|
47 |
|
48 |
-
|
49 |
-
add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( $this, 'plugin_action_links' ) );
|
50 |
add_filter( 'plugin_row_meta', array( $this, 'plugin_row_meta' ), 10, 2 );
|
51 |
} else {
|
52 |
add_action( 'admin_notices', array( $this, 'theme_support_missing_notice' ) );
|
@@ -54,23 +120,45 @@ final class ThemeGrill_Demo_Importer {
|
|
54 |
}
|
55 |
|
56 |
/**
|
57 |
-
*
|
58 |
-
* @return
|
59 |
*/
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
|
|
|
|
|
|
64 |
}
|
65 |
-
|
|
|
66 |
}
|
67 |
|
68 |
/**
|
69 |
-
*
|
70 |
*/
|
71 |
-
|
72 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
|
|
|
|
|
|
|
|
|
74 |
if ( ! is_blog_installed() ) {
|
75 |
return;
|
76 |
}
|
@@ -78,7 +166,7 @@ final class ThemeGrill_Demo_Importer {
|
|
78 |
// Install files and folders for uploading files and prevent hotlinking.
|
79 |
$files = array(
|
80 |
array(
|
81 |
-
'base' =>
|
82 |
'file' => 'index.html',
|
83 |
'content' => '',
|
84 |
),
|
@@ -114,60 +202,21 @@ final class ThemeGrill_Demo_Importer {
|
|
114 |
}
|
115 |
|
116 |
/**
|
117 |
-
* Get
|
118 |
-
* @return
|
119 |
-
*/
|
120 |
-
private function get_core_supported_themes() {
|
121 |
-
$pro_themes = array();
|
122 |
-
$core_themes = array( 'spacious', 'colormag', 'flash', 'estore', 'ample', 'accelerate', 'colornews', 'foodhunt', 'fitclub', 'radiate','freedom', 'himalayas', 'esteem', 'envince', 'suffice' );
|
123 |
-
|
124 |
-
// Check for core themes pro version :)
|
125 |
-
foreach ( $core_themes as $core_theme ) {
|
126 |
-
$pro_themes[] = $core_theme . '-pro';
|
127 |
-
}
|
128 |
-
|
129 |
-
return array_merge( $core_themes, $pro_themes );
|
130 |
-
}
|
131 |
-
|
132 |
-
/**
|
133 |
-
* Includes.
|
134 |
*/
|
135 |
-
|
136 |
-
|
137 |
-
include_once( dirname( __FILE__ ) . '/includes/functions-demo-update.php' );
|
138 |
-
|
139 |
-
// Includes demo packages config.
|
140 |
-
if ( false === strpos( get_option( 'template' ), '-pro' ) ) {
|
141 |
-
$upload_dir = wp_upload_dir();
|
142 |
-
|
143 |
-
// Check the folder contains at least 1 valid demo config.
|
144 |
-
$files = glob( $upload_dir['basedir'] . '/tg-demo-pack/**/tg-demo-config.php' );
|
145 |
-
if ( $files ) {
|
146 |
-
foreach ( $files as $file ) {
|
147 |
-
if ( $file && is_readable( $file ) ) {
|
148 |
-
include_once( $file );
|
149 |
-
}
|
150 |
-
}
|
151 |
-
}
|
152 |
-
}
|
153 |
}
|
154 |
|
155 |
/**
|
156 |
-
* Get the plugin
|
157 |
* @return string
|
158 |
*/
|
159 |
-
public
|
160 |
-
return untrailingslashit(
|
161 |
}
|
162 |
|
163 |
-
/**
|
164 |
-
* Get the plugin dir path.
|
165 |
-
* @return string
|
166 |
-
*/
|
167 |
-
public static function plugin_dir_path() {
|
168 |
-
return untrailingslashit( plugin_dir_path( __FILE__ ) );
|
169 |
-
}
|
170 |
-
|
171 |
/**
|
172 |
* Display action links in the Plugins list table.
|
173 |
* @param array $actions
|
@@ -188,10 +237,10 @@ final class ThemeGrill_Demo_Importer {
|
|
188 |
* @return array
|
189 |
*/
|
190 |
public function plugin_row_meta( $plugin_meta, $plugin_file ) {
|
191 |
-
if (
|
192 |
$new_plugin_meta = array(
|
193 |
-
'docs' => '<a href="' . esc_url( apply_filters( 'themegrill_demo_importer_docs_url', '
|
194 |
-
'support' => '<a href="' . esc_url( apply_filters( 'themegrill_demo_importer_support_url', '
|
195 |
);
|
196 |
|
197 |
return array_merge( $plugin_meta, $new_plugin_meta );
|
@@ -205,14 +254,23 @@ final class ThemeGrill_Demo_Importer {
|
|
205 |
* @return string
|
206 |
*/
|
207 |
public function theme_support_missing_notice() {
|
208 |
-
|
209 |
-
echo '<div class="error notice is-dismissible"><p><strong>' . __( 'ThemeGrill Demo Importer', 'themegrill-demo-importer' ) . '</strong> – ' . sprintf( __( 'This plugin requires %s by ThemeGrill to work.', 'themegrill-demo-importer' ), '<a href="http://www.themegrill.com/themes/" target="_blank">' . __( 'Official Theme', 'themegrill-demo-importer' ) . '</a>' ) . '</p></div>';
|
210 |
-
}
|
211 |
}
|
212 |
}
|
213 |
|
214 |
-
|
215 |
|
216 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
|
218 |
-
|
|
2 |
/**
|
3 |
* Plugin Name: ThemeGrill Demo Importer
|
4 |
* Plugin URI: https://themegrill.com/demo-importer/
|
5 |
+
* Description: Import your demo content, widgets and theme settings with one click for ThemeGrill official themes.
|
6 |
+
* Version: 1.3.4
|
7 |
* Author: ThemeGrill
|
8 |
* Author URI: https://themegrill.com
|
9 |
* License: GPLv3 or later
|
26 |
* Plugin version.
|
27 |
* @var string
|
28 |
*/
|
29 |
+
public $version = '1.3.4';
|
30 |
|
31 |
/**
|
32 |
* Instance of this class.
|
34 |
*/
|
35 |
protected static $instance = null;
|
36 |
|
37 |
+
/**
|
38 |
+
* Return an instance of this class.
|
39 |
+
* @return object A single instance of this class.
|
40 |
+
*/
|
41 |
+
public static function get_instance() {
|
42 |
+
// If the single instance hasn't been set, set it now.
|
43 |
+
if ( is_null( self::$instance ) ) {
|
44 |
+
self::$instance = new self();
|
45 |
+
}
|
46 |
+
return self::$instance;
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Cloning is forbidden.
|
51 |
+
* @since 1.4
|
52 |
+
*/
|
53 |
+
public function __clone() {
|
54 |
+
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'themegrill-demo-importer' ), '1.4' );
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Unserializing instances of this class is forbidden.
|
59 |
+
* @since 1.4
|
60 |
+
*/
|
61 |
+
public function __wakeup() {
|
62 |
+
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'themegrill-demo-importer' ), '1.4' );
|
63 |
+
}
|
64 |
+
|
65 |
/**
|
66 |
* Initialize the plugin.
|
67 |
*/
|
68 |
private function __construct() {
|
69 |
+
$this->define_constants();
|
70 |
+
$this->init_hooks();
|
71 |
+
|
72 |
+
do_action( 'themegrill_demo_importer_loaded' );
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Define TGDM Constants.
|
77 |
+
*/
|
78 |
+
private function define_constants() {
|
79 |
+
$upload_dir = wp_upload_dir();
|
80 |
+
|
81 |
+
$this->define( 'TGDM_PLUGIN_FILE', __FILE__ );
|
82 |
+
$this->define( 'TGDM_ABSPATH', dirname( __FILE__ ) . '/' );
|
83 |
+
$this->define( 'TGDM_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
|
84 |
+
$this->define( 'TGDM_VERSION', $this->version );
|
85 |
+
$this->define( 'TGDM_DEMO_DIR', $upload_dir['basedir'] . '/tg-demo-pack/' );
|
86 |
+
$this->define( 'TGDM_DEMO_URL', $upload_dir['baseurl'] . '/tg-demo-pack/' );
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Define constant if not already set.
|
91 |
+
*
|
92 |
+
* @param string $name
|
93 |
+
* @param string|bool $value
|
94 |
+
*/
|
95 |
+
private function define( $name, $value ) {
|
96 |
+
if ( ! defined( $name ) ) {
|
97 |
+
define( $name, $value );
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Hook into actions and filters.
|
103 |
+
*/
|
104 |
+
private function init_hooks() {
|
105 |
// Load plugin text domain.
|
106 |
add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
|
107 |
|
108 |
+
// Register activation hook.
|
109 |
+
register_activation_hook( __FILE__, array( $this, 'install' ) );
|
110 |
+
|
111 |
// Check with ThemeGrill theme is installed.
|
112 |
if ( in_array( get_option( 'template' ), $this->get_core_supported_themes() ) ) {
|
113 |
$this->includes();
|
114 |
|
115 |
+
add_filter( 'plugin_action_links_' . TGDM_PLUGIN_BASENAME, array( $this, 'plugin_action_links' ) );
|
|
|
116 |
add_filter( 'plugin_row_meta', array( $this, 'plugin_row_meta' ), 10, 2 );
|
117 |
} else {
|
118 |
add_action( 'admin_notices', array( $this, 'theme_support_missing_notice' ) );
|
120 |
}
|
121 |
|
122 |
/**
|
123 |
+
* Get core supported themes.
|
124 |
+
* @return array
|
125 |
*/
|
126 |
+
private function get_core_supported_themes() {
|
127 |
+
$core_themes = array( 'spacious', 'colormag', 'flash', 'estore', 'ample', 'accelerate', 'colornews', 'foodhunt', 'fitclub', 'radiate', 'freedom', 'himalayas', 'esteem', 'envince', 'suffice', 'explore' );
|
128 |
+
|
129 |
+
// Check for core themes pro version :)
|
130 |
+
$pro_themes = array_diff( $core_themes, array( 'explore', 'masonic' ) );
|
131 |
+
if ( ! empty( $pro_themes ) ) {
|
132 |
+
$pro_themes = preg_filter( '/$/', '-pro', $pro_themes );
|
133 |
}
|
134 |
+
|
135 |
+
return array_merge( $core_themes, $pro_themes );
|
136 |
}
|
137 |
|
138 |
/**
|
139 |
+
* Includes.
|
140 |
*/
|
141 |
+
private function includes() {
|
142 |
+
include_once( TGDM_ABSPATH . 'includes/class-demo-importer.php' );
|
143 |
+
include_once( TGDM_ABSPATH . 'includes/functions-demo-update.php' );
|
144 |
+
|
145 |
+
// Include valid demo packages config.
|
146 |
+
if ( false === strpos( get_option( 'template' ), '-pro' ) ) {
|
147 |
+
$files = glob( TGDM_DEMO_DIR . '**/tg-demo-config.php' );
|
148 |
+
if ( $files ) {
|
149 |
+
foreach ( $files as $file ) {
|
150 |
+
if ( $file && is_readable( $file ) ) {
|
151 |
+
include_once( $file );
|
152 |
+
}
|
153 |
+
}
|
154 |
+
}
|
155 |
+
}
|
156 |
+
}
|
157 |
|
158 |
+
/**
|
159 |
+
* Install TG Demo Importer.
|
160 |
+
*/
|
161 |
+
public function install() {
|
162 |
if ( ! is_blog_installed() ) {
|
163 |
return;
|
164 |
}
|
166 |
// Install files and folders for uploading files and prevent hotlinking.
|
167 |
$files = array(
|
168 |
array(
|
169 |
+
'base' => TGDM_DEMO_DIR,
|
170 |
'file' => 'index.html',
|
171 |
'content' => '',
|
172 |
),
|
202 |
}
|
203 |
|
204 |
/**
|
205 |
+
* Get the plugin url.
|
206 |
+
* @return string
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
*/
|
208 |
+
public function plugin_url() {
|
209 |
+
return untrailingslashit( plugins_url( '/', __FILE__ ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
210 |
}
|
211 |
|
212 |
/**
|
213 |
+
* Get the plugin path.
|
214 |
* @return string
|
215 |
*/
|
216 |
+
public function plugin_path() {
|
217 |
+
return untrailingslashit( plugin_dir_path( __FILE__ ) );
|
218 |
}
|
219 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
220 |
/**
|
221 |
* Display action links in the Plugins list table.
|
222 |
* @param array $actions
|
237 |
* @return array
|
238 |
*/
|
239 |
public function plugin_row_meta( $plugin_meta, $plugin_file ) {
|
240 |
+
if ( TGDM_PLUGIN_BASENAME == $plugin_file ) {
|
241 |
$new_plugin_meta = array(
|
242 |
+
'docs' => '<a href="' . esc_url( apply_filters( 'themegrill_demo_importer_docs_url', 'https://themegrill.com/docs/themegrill-demo-importer/' ) ) . '" title="' . esc_attr( __( 'View Demo Importer Documentation', 'themegrill-demo-importer' ) ) . '">' . __( 'Docs', 'themegrill-demo-importer' ) . '</a>',
|
243 |
+
'support' => '<a href="' . esc_url( apply_filters( 'themegrill_demo_importer_support_url', 'https://themegrill.com/support-forum/' ) ) . '" title="' . esc_attr( __( 'Visit Free Customer Support Forum', 'themegrill-demo-importer' ) ) . '">' . __( 'Free Support', 'themegrill-demo-importer' ) . '</a>',
|
244 |
);
|
245 |
|
246 |
return array_merge( $plugin_meta, $new_plugin_meta );
|
254 |
* @return string
|
255 |
*/
|
256 |
public function theme_support_missing_notice() {
|
257 |
+
echo '<div class="error notice is-dismissible"><p><strong>' . __( 'ThemeGrill Demo Importer', 'themegrill-demo-importer' ) . '</strong> – ' . sprintf( __( 'This plugin requires %s by ThemeGrill to work.', 'themegrill-demo-importer' ), '<a href="https://themegrill.com/themes/" target="_blank">' . __( 'Official Theme', 'themegrill-demo-importer' ) . '</a>' ) . '</p></div>';
|
|
|
|
|
258 |
}
|
259 |
}
|
260 |
|
261 |
+
endif;
|
262 |
|
263 |
+
/**
|
264 |
+
* Main instance of ThemeGrill Demo importer.
|
265 |
+
*
|
266 |
+
* Returns the main instance of TGDM to prevent the need to use globals.
|
267 |
+
*
|
268 |
+
* @since 1.3.4
|
269 |
+
* @return ThemeGrill_Demo_Importer
|
270 |
+
*/
|
271 |
+
function TGDM() {
|
272 |
+
return ThemeGrill_Demo_Importer::get_instance();
|
273 |
+
}
|
274 |
|
275 |
+
// Global for backwards compatibility.
|
276 |
+
$GLOBALS['themegrill_demo_importer'] = TGDM();
|
uninstall.php
CHANGED
@@ -6,13 +6,22 @@
|
|
6 |
*
|
7 |
* @author ThemeGrill
|
8 |
* @category Core
|
9 |
-
* @
|
|
|
10 |
*/
|
11 |
|
12 |
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
-
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
*
|
7 |
* @author ThemeGrill
|
8 |
* @category Core
|
9 |
+
* @package Importer/Unistaller
|
10 |
+
* @version 1.3.4
|
11 |
*/
|
12 |
|
13 |
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
global $wpdb;
|
18 |
+
|
19 |
+
/*
|
20 |
+
* Only remove ALL demo importer data if TGDM_REMOVE_ALL_DATA constant is set to true in user's
|
21 |
+
* wp-config.php. This is to prevent data loss when deleting the plugin from the backend
|
22 |
+
* and to ensure only the site owner can perform this action.
|
23 |
+
*/
|
24 |
+
if ( defined( 'TGDM_REMOVE_ALL_DATA' ) && true === TGDM_REMOVE_ALL_DATA ) {
|
25 |
+
// Delete options.
|
26 |
+
$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE 'themegrill_demo_importer\_%';" );
|
27 |
+
}
|