ThemeGrill Demo Importer - Version 1.6.6

Version Description

  • 06-08-2020 =
  • Introduce - Demo Importer Status page
  • Tweak - Added compatibility with WordPress v5.5
  • Remove - Reset wizard feature to reset the site to fresh WordPress install.
Download this release

Release Info

Developer themegrilldev
Plugin Icon 128x128 ThemeGrill Demo Importer
Version 1.6.6
Comparing to
See all releases

Code changes from version 1.6.5 to 1.6.6

assets/js/admin/demo-importer.js CHANGED
@@ -1468,11 +1468,6 @@ $( document ).ready( function() {
1468
  $( '.tips' ).tipTip({ 'attribute': 'data-tip', 'defaultPosition': 'top', 'fadeIn': 50, 'fadeOut': 50, 'delay': 50 });
1469
  } ).trigger( 'init_tooltips' );
1470
 
1471
- // Confirm WordPress reset wizard.
1472
- $( '.themegrill-reset-wordpress' ).on( 'click', function() {
1473
- return window.confirm( _demoImporterSettings.settings.confirmReset );
1474
- });
1475
-
1476
  // Change the footer text when rating link is clicked.
1477
  $( '.themegrill-demo-importer-rating-link' ).on( 'click', function() {
1478
  var $this_el = $( this );
1468
  $( '.tips' ).tipTip({ 'attribute': 'data-tip', 'defaultPosition': 'top', 'fadeIn': 50, 'fadeOut': 50, 'delay': 50 });
1469
  } ).trigger( 'init_tooltips' );
1470
 
 
 
 
 
 
1471
  // Change the footer text when rating link is clicked.
1472
  $( '.themegrill-demo-importer-rating-link' ).on( 'click', function() {
1473
  var $this_el = $( this );
assets/js/admin/demo-importer.min.js CHANGED
@@ -1 +1 @@
1
- window.wp=window.wp||{},function(d){var a,i;(a=wp.demos=wp.demos||{}).data=_demoImporterSettings,i=a.data.l10n,a.isNew=!!a.data.settings.isNew,_.extend(a,{model:{},view:{},routes:{},router:{},template:wp.template}),a.Model=Backbone.Model.extend({initialize:function(){var e;this.set({id:this.get("slug")||this.get("id")}),this.has("sections")&&(e=this.get("sections").description,this.set({description:e}))}}),a.view.Appearance=wp.Backbone.View.extend({el:"#wpbody-content .wrap .theme-browser",window:d(window),page:0,initialize:function(e){_.bindAll(this,"scroller"),this.SearchView=e.SearchView?e.SearchView:a.view.Search,this.window.bind("scroll",_.throttle(this.scroller,300))},render:function(){this.view=new a.view.Demos({collection:this.collection,parent:this}),this.search(),this.$el.removeClass("search-loading"),this.view.render(),this.$el.empty().append(this.view.el).addClass("rendered")},searchContainer:d(".search-form"),search:function(){var e;1!==a.data.demos.length&&(e=new this.SearchView({collection:this.collection,parent:this}),(this.SearchView=e).render(),this.searchContainer.append(d.parseHTML('<label class="screen-reader-text" for="wp-filter-search-input">'+i.search+"</label>")).append(e.el).on("submit",function(e){e.preventDefault()}))},scroller:function(){var e,t=this;this.window.scrollTop(),t.window.height(),e=t.$el.offset().top+t.$el.outerHeight(!1)-t.window.height(),e=Math.round(.9*e)}}),a.Collection=Backbone.Collection.extend({model:a.Model,terms:"",doSearch:function(e){this.terms!==e&&(this.terms=e,0<this.terms.length&&this.search(this.terms),""===this.terms&&(this.reset(a.data.demos),d("body").removeClass("no-results")),this.trigger("demos:update"))},search:function(t){var i,e,o,s,r,n;this.reset(a.data.demos,{silent:!0}),t=(t=t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")).replace(/ /g,")(?=.*"),i=new RegExp("^(?=.*"+t+").+","i"),0===(e=this.filter(function(e){return s=e.get("name").replace(/(<([^>]+)>)/gi,""),r=e.get("description").replace(/(<([^>]+)>)/gi,""),n=e.get("author").replace(/(<([^>]+)>)/gi,""),o=_.union([s,e.get("id"),r,n,e.get("tags")]),i.test(e.get("author"))&&2<t.length&&e.set("displayAuthor",!0),i.test(o)})).length?this.trigger("query:empty"):d("body").removeClass("no-results"),this.reset(e)},paginate:function(e){return e=e||0,this},count:!1,query:function(t){var e,i,o,s=this.queries,r=this;if(this.currentQuery.request=t,e=_.find(s,function(e){return _.isEqual(e.request,t)}),(i=_.has(t,"page"))||(this.currentQuery.page=1),e||i){if(i)return this.apiCall(t,i).done(function(e){r.add(e.demos),r.trigger("query:success"),r.loadingDemos=!1}).fail(function(){r.trigger("query:fail")});0===e.demos.length?r.trigger("query:empty"):d("body").removeClass("no-results"),_.isNumber(e.total)&&(this.count=e.total),this.reset(e.demos),e.total||(this.count=this.length),this.trigger("demos:update"),this.trigger("query:success",this.count)}else e=this.apiCall(t).done(function(e){e.demos&&(r.reset(e.demos),o=e.info.results,s.push({demos:e.demos,request:t,total:o})),r.trigger("demos:update"),r.trigger("query:success",o),e.demos&&0===e.demos.length&&r.trigger("query:empty")}).fail(function(){r.trigger("query:fail")})},queries:[],currentQuery:{page:1,request:{}},apiCall:function(e,t){return wp.ajax.send("query-demos",{data:{request:_.extend({per_page:100},e)},beforeSend:function(){t||d("body").addClass("loading-content").removeClass("no-results")}})},loadingDemos:!1}),a.view.Demo=wp.Backbone.View.extend({className:"theme",state:"grid",html:a.template("demo"),events:{click:"preview",keydown:"preview",touchend:"preview",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")},activeDemo:function(){this.model.get("active")&&this.$el.addClass("active")},addFocus:function(){var e=d(":focus").hasClass("theme")?d(":focus"):d(":focus").parents(".theme");d(".theme.focus").removeClass("focus"),e.addClass("focus")},preventExpand:function(){this.touchDrag=!0},preview:function(e){var t,i,o=this;if(e=e||window.event,!0===this.touchDrag)return this.touchDrag=!1;d(e.target).not(".install-demo-preview").parents(".theme-actions").length||"keydown"===e.type&&13!==e.which&&32!==e.which||"keydown"===e.type&&13!==e.which&&d(":focus").hasClass("button")||(e.preventDefault(),e=e||window.event,a.focusedDemo=this.$el,a.preview=i=new a.view.Preview({model:this.model}),i.render(),this.setNavButtonsState(),1===this.model.collection.length?i.$el.addClass("no-navigation"):i.$el.removeClass("no-navigation"),d("div.wrap").append(i.el),this.listenTo(i,"demo:next",function(){if(t=o.model,_.isUndefined(o.current)||(t=o.current),o.current=o.model.collection.at(o.model.collection.indexOf(t)+1),_.isUndefined(o.current))return o.options.parent.parent.trigger("demo:end"),o.current=t;i.model=o.current,i.render(),this.setNavButtonsState(),d(".next-theme").focus()}).listenTo(i,"demo:previous",function(){t=o.model,0!==o.model.collection.indexOf(o.current)&&(_.isUndefined(o.current)||(t=o.current),o.current=o.model.collection.at(o.model.collection.indexOf(t)-1),_.isUndefined(o.current)||(i.model=o.current,i.render(),this.setNavButtonsState(),d(".previous-theme").focus()))}),this.listenTo(i,"preview:close",function(){o.current=o.model}))},setNavButtonsState:function(){var e=d(".theme-install-overlay"),t=_.isUndefined(this.current)?this.model:this.current,i=e.find(".previous-theme"),o=e.find(".next-theme");0===this.model.collection.indexOf(t)&&(i.addClass("disabled").prop("disabled",!0),o.focus()),_.isUndefined(this.model.collection.at(this.model.collection.indexOf(t)+1))&&(o.addClass("disabled").prop("disabled",!0),i.focus())},importDemo:function(e){var t=this,i=d(e.target),o=d(e.target).data("plugins");e.preventDefault(),i.hasClass("disabled")||i.hasClass("updating-message")||d.confirm({title:"",content:'<div class="demo-import-confirm-message">'+wp.demos.data.settings.confirmImport+"</div>",boxWidth:"50%",useBootstrap:!1,buttons:{confirm:{text:wp.demos.data.l10n.confirmMsg,keys:["enter"],btnClass:"demo-import-confirm-button",action:function(){t.processImport(i,o,t)}},cancel:{btnClass:"demo-import-cancel-button",action:function(){}}}})},processImport:function(i,e,o){wp.updates.maybeRequestFilesystemCredentials(event),d(document).trigger("wp-plugin-bulk-install",e),d.each(e,function(e,t){t.is_active||wp.updates.queue.push({action:"install-plugin",data:{plugin:t.slug,name:t.name,slug:e,demo:i.data("slug")}})}),d(document).on("wp-demo-import-success",function(e,t){o.model.get("id")===t.slug&&(o.render(),o.model.set({imported:!0}))}),wp.updates.queue.push({action:"import-demo",data:{slug:i.data("slug")}}),wp.updates.queueChecker()}}),a.view.Preview=wp.Backbone.View.extend({className:"wp-full-overlay expanded",el:".theme-install-overlay",events:{"click .close-full-overlay":"close","click .collapse-sidebar":"collapse","click .devices button":"previewDevice","click .previous-theme":"previousDemo","click .next-theme":"nextDemo",keyup:"keyEvent","click .demo-import":"importDemo"},html:a.template("demo-preview"),render:function(){var e,t=this,i=this.model.toJSON(),o=d(document.body);o.attr("aria-busy","true"),this.$el.removeClass("iframe-ready").html(this.html(i)),(e=this.$el.data("current-preview-device"))&&t.tooglePreviewDeviceButtons(e),a.router.navigate(a.router.baseUrl(a.router.demoPath+this.model.get("id")),{replace:!1}),this.$el.fadeIn(200,function(){o.addClass("demo-importer-active full-overlay-active")}),this.$el.find("iframe").one("load",function(){t.iframeLoaded()})},iframeLoaded:function(){this.$el.addClass("iframe-ready"),d(document.body).attr("aria-busy","false")},close:function(){return this.$el.fadeOut(200,function(){d("body").removeClass("demo-importer-active full-overlay-active"),a.focusedDemo&&a.focusedDemo.focus()}).removeClass("iframe-ready"),a.router.selectedTab?a.router.navigate(a.router.baseUrl("&browse="+a.router.selectedTab)):a.router.navigate(a.router.baseUrl("")),this.trigger("preview:close"),this.undelegateEvents(),this.unbind(),!1},collapse:function(e){var t=d(e.currentTarget);return"true"===t.attr("aria-expanded")?t.attr({"aria-expanded":"false","aria-label":i.expandSidebar}):t.attr({"aria-expanded":"true","aria-label":i.collapseSidebar}),this.$el.toggleClass("collapsed").toggleClass("expanded"),!1},previewDevice:function(e){var t=d(e.currentTarget).data("device");this.$el.removeClass("preview-desktop preview-tablet preview-mobile").addClass("preview-"+t).data("current-preview-device",t),this.tooglePreviewDeviceButtons(t)},tooglePreviewDeviceButtons:function(e){var t=d(".wp-full-overlay-footer .devices");t.find("button").removeClass("active").attr("aria-pressed",!1),t.find("button.preview-"+e).addClass("active").attr("aria-pressed",!0)},keyEvent:function(e){27===e.keyCode&&(this.undelegateEvents(),this.close()),39===e.keyCode&&_.once(this.nextDemo()),37===e.keyCode&&this.previousDemo()},nextDemo:function(){return this.trigger("demo:next",this.model.cid),!1},previousDemo:function(){return this.trigger("demo:previous",this.model.cid),!1},importDemo:function(e){var t=this,i=d(e.target),o=d(".plugins-list-table").find("#the-list tr"),s=[];e.preventDefault(),i.hasClass("disabled")||i.hasClass("updating-message")||d.confirm({title:"",content:'<div class="demo-import-confirm-message">'+wp.demos.data.settings.confirmImport+"</div>",boxWidth:"50%",useBootstrap:!1,buttons:{confirm:{text:wp.demos.data.l10n.confirmMsg,keys:["enter"],btnClass:"demo-import-confirm-button",action:function(){t.processImport(i,o,0,0,s,t)}},cancel:{btnClass:"demo-import-cancel-button",action:function(){}}},onContentReady:function(){d("body").addClass("demo-import-message-popup")},onDestroy:function(){d("body").removeClass("demo-import-message-popup")}})},processImport:function(r,e,n,a,l,c){wp.updates.maybeRequestFilesystemCredentials(event),d(".theme-install-overlay").find(".next-theme, .previous-theme").addClass("disabled"),d(document).trigger("wp-plugin-bulk-install",e),e.each(function(e,t){var i=d(t);i.hasClass("inactive")&&!i.find("notice-error").length&&wp.updates.queue.push({action:"install-plugin",data:{plugin:i.data("plugin"),slug:i.data("slug"),demo:r.data("slug")}})}),d(document).on("wp-plugin-bulk-installing",function(){d(".wp-full-overlay-sidebar-content").animate({scrollTop:d(document).height()})}),d(document).on("wp-plugin-bulk-install-success wp-plugin-bulk-install-error",function(e,t){var i,o,s=d('[data-slug="'+t.slug+'"]');"wp-"+t.install+"-bulk-install-success"===e.type?n++:(o=t.pluginName?t.pluginName:s.find(".plugin-name").text(),a++,l.push(o+": "+t.errorMessage)),wp.updates.adminNotice=wp.template("wp-bulk-installs-admin-notice"),d(".plugins-details .bulk-action-notice").remove(),d(".plugins-details .plugins-info").after(wp.updates.adminNotice({id:"bulk-action-notice",className:"bulk-action-notice notice-alt",successes:n,errors:a,errorMessages:l,type:t.install})),i=d("#bulk-action-notice").on("click","button",function(){d(this).toggleClass("bulk-action-errors-collapsed").attr("aria-expanded",!d(this).hasClass("bulk-action-errors-collapsed")),i.find(".bulk-action-errors").toggleClass("hidden")}),wp.updates.queue.length||(0<a?r.removeClass("updating-message").text(r.data("originaltext")):(c.model.set({requiredPlugins:!1}),d(".theme-install-overlay").find(".next-theme, .previous-theme").addClass("disabled")))}),d(document).on("wp-updates-notice-added",function(){wp.updates.adminNotice=wp.template("wp-updates-admin-notice")}),d(document).on("wp-demo-import-success",function(e,t){c.model.get("id")===t.slug&&c.model.set({imported:!0})}),wp.updates.queue.push({action:"import-demo",data:{slug:r.data("slug")}}),wp.updates.queueChecker()}}),a.view.Demos=wp.Backbone.View.extend({className:"themes wp-clearfix",$overlay:d("div.theme-overlay"),index:0,count:d(".wrap .demo-count"),liveDemoCount:0,initialize:function(e){var t=this;this.parent=e.parent,this.setView("grid"),t.importedDemo(),this.listenTo(t.collection,"demos:update",function(){t.parent.page=0,t.importedDemo(),t.render(this)}),this.listenTo(t.collection,"query:success",function(e){_.isNumber(e)?(t.count.text(e),t.announceSearchResults(e)):(t.count.text(t.collection.length),t.announceSearchResults(t.collection.length))}),this.listenTo(t.collection,"query:empty",function(){d("body").addClass("no-results")}),this.listenTo(this.parent,"demo:scroll",function(){t.renderDemos(t.parent.page)})},render:function(){this.$el.empty(),0<this.options.collection.size()&&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 t=this;t.instance=t.collection.paginate(e),0!==t.instance.size()?(a.isNew&&1<=e&&d(".add-new-theme").remove(),t.instance.each(function(e){t.demo=new a.view.Demo({model:e,parent:t}),t.demo.render(),t.$el.append(t.demo.el)}),a.isNew&&a.data.settings.suggestURI&&this.$el.append('<div class="theme add-new-theme"><a href="'+a.data.settings.suggestURI+'" target="blank"><div class="theme-screenshot"><span></span></div><h2 class="theme-name">'+i.suggestNew+"</h2></a></div>"),this.parent.page++):this.parent.trigger("demo:end")},importedDemo:function(){var e;(e=this.collection.findWhere({active:!0}))&&(this.collection.remove(e),this.collection.add(e,{at:0}))},setView:function(e){return e},announceSearchResults:function(e){0===e?wp.a11y.speak(i.noDemosFound):wp.a11y.speak(i.demosFound.replace("%d",e))}}),a.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:function(e){var t={};this.collection.doSearch(e.target.value.replace(/\+/g," ")),this.searching&&13!==e.which?t.replace=!0:this.searching=!0,e.target.value?a.router.navigate(a.router.baseUrl(a.router.searchPath+e.target.value),t):a.router.navigate(a.router.baseUrl(""))},pushState:function(e){var t=a.router.baseUrl("");e.target.value&&(t=a.router.baseUrl(a.router.searchPath+encodeURIComponent(e.target.value))),this.searching=!1,a.router.navigate(t)}}),a.Router=Backbone.Router.extend({routes:{"themes.php?page=demo-importer&demo=:slug":"preview","themes.php?page=demo-importer&browse=:sort":"sort","themes.php?page=demo-importer&search=:query":"search","themes.php?page=demo-importer":"sort"},baseUrl:function(e){return"themes.php?page=demo-importer"+e},demoPath:"&demo=",browsePath:"&browse=",searchPath:"&search=",search:function(e){d(".wp-filter-search").val(e.replace(/\+/g," "))},navigate:function o(e,t){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.call(this,e,t)}}),a.view.InstallerSearch=a.view.Search.extend({events:{input:"search",keyup:"search"},terms:"",search:function(e){("keyup"!==e.type||9!==e.which&&16!==e.which)&&(this.collection=this.options.parent.view.collection,"keyup"===e.type&&27===e.which&&(e.target.value=""),this.doSearch(e.target.value))},doSearch:function(e){this.terms!==e&&(this.terms=e,d(".filter-links li > a.current").removeClass("current").removeAttr("aria-current"),this.collection.doSearch(e.replace(/\+/g," ")),a.router.navigate(a.router.baseUrl(a.router.searchPath+encodeURIComponent(e)),{replace:!0}))}}),a.view.Installer=a.view.Appearance.extend({el:"#wpbody-content .wrap",events:{"click .filter-links li > a":"onSort"},render:function(){var e=this;this.search(),this.collection=new a.Collection,this.listenTo(this,"demo:end",function(){e.collection.loadingDemos||(e.collection.loadingDemos=!0,e.collection.currentQuery.page++,_.extend(e.collection.currentQuery.request,{page:e.collection.currentQuery.page}),e.collection.query(e.collection.currentQuery.request))}),this.listenTo(this.collection,"query:success",function(){d("body").removeClass("loading-content"),d(".theme-browser").find("div.error").remove()}),this.listenTo(this.collection,"query:fail",function(){d("body").removeClass("loading-content"),d(".theme-browser").find("div.error").remove(),d(".theme-browser").find("div.themes").before('<div class="error"><p>'+i.error+'</p><p><button class="button try-again">'+i.tryAgain+"</button></p></div>"),d(".theme-browser .error .try-again").on("click",function(e){e.preventDefault(),d("input.wp-filter-search").trigger("input")})}),this.view&&this.view.remove(),this.view=new a.view.Demos({collection:this.collection,parent:this}),this.page=0,this.$el.find(".themes").remove(),this.view.render(),this.$el.find(".theme-browser").append(this.view.el).addClass("rendered")},browse:function(e,t){this.collection.query({browse:e,builder:t})},onSort:function(e){var t=d(e.target),i=t.data("sort"),o=t.data("type");e.preventDefault(),i=i||a.router.selectedTab,o=o||a.router.selectedType,t.hasClass(this.activeClass)||(this.sort(i,o),a.router.navigate(a.router.baseUrl(a.router.browsePath+i)))},sort:function(e,t){this.clearSearch(),a.router.selectedTab=e,a.router.selectedType=t,d(".filter-links li > a").removeClass(this.activeClass).removeAttr("aria-current"),d('[data-sort="'+e+'"]').addClass(this.activeClass).attr("aria-current","page"),d('[data-type="'+t+'"]').addClass(this.activeClass).attr("aria-current","page"),this.browse(e,t)},activeClass:"current",clearSearch:function(){d("#wp-filter-search-input").val("")}}),a.RunInstaller={init:function(){this.view=new a.view.Installer({section:"all",SearchView:a.view.InstallerSearch}),this.render(),this.view.SearchView.doSearch=_.debounce(this.view.SearchView.doSearch,500)},render:function(){this.view.render(),this.routes(),Backbone.History.started&&Backbone.history.stop(),Backbone.history.start({root:a.data.settings.adminUrl,pushState:!0,hashChange:!1})},routes:function(){var i=this,t={};a.router=new a.Router,a.router.on("route:preview",function(e){a.preview&&(a.preview.undelegateEvents(),a.preview.unbind()),i.view.view.demo&&i.view.view.demo.preview?(i.view.view.demo.model=i.view.collection.findWhere({slug:e}),i.view.view.demo.preview()):(t.demo=e,i.view.collection.query(t),i.view.collection.trigger("update"),i.view.collection.once("query:success",function(){d('div[data-slug="'+e+'"]').trigger("click")}))}),a.router.on("route:sort",function(e){var t=a.router.selectedType?a.router.selectedType:d(".filter-links.pagebuilders li").first().find("a").data("type");e&&d('[data-sort="'+e+'"]').length||(e="all",a.router.navigate(a.router.baseUrl("&browse=all"),{replace:!0})),i.view.sort(e,t),a.preview&&a.preview.close()}),a.router.on("route:search",function(){d(".wp-filter-search").focus().trigger("keyup")}),this.extraRoutes()},extraRoutes:function(){return!1}},d(document).ready(function(){a.RunInstaller.init(),d(document.body).on("init_tooltips",function(){d("#tiptip_holder").removeAttr("style"),d("#tiptip_arrow").removeAttr("style"),d(".tips").tipTip({attribute:"data-tip",defaultPosition:"top",fadeIn:50,fadeOut:50,delay:50})}).trigger("init_tooltips"),d(".themegrill-reset-wordpress").on("click",function(){return window.confirm(_demoImporterSettings.settings.confirmReset)}),d(".themegrill-demo-importer-rating-link").on("click",function(){var e=d(this);d.post(a.data.settings.ajaxUrl,{action:"footer-text-rated"}),e.parent().text(e.data("rated"))})})}(jQuery);
1
+ window.wp=window.wp||{},function(d){var a,i;(a=wp.demos=wp.demos||{}).data=_demoImporterSettings,i=a.data.l10n,a.isNew=!!a.data.settings.isNew,_.extend(a,{model:{},view:{},routes:{},router:{},template:wp.template}),a.Model=Backbone.Model.extend({initialize:function(){var e;this.set({id:this.get("slug")||this.get("id")}),this.has("sections")&&(e=this.get("sections").description,this.set({description:e}))}}),a.view.Appearance=wp.Backbone.View.extend({el:"#wpbody-content .wrap .theme-browser",window:d(window),page:0,initialize:function(e){_.bindAll(this,"scroller"),this.SearchView=e.SearchView?e.SearchView:a.view.Search,this.window.bind("scroll",_.throttle(this.scroller,300))},render:function(){this.view=new a.view.Demos({collection:this.collection,parent:this}),this.search(),this.$el.removeClass("search-loading"),this.view.render(),this.$el.empty().append(this.view.el).addClass("rendered")},searchContainer:d(".search-form"),search:function(){var e;1!==a.data.demos.length&&(e=new this.SearchView({collection:this.collection,parent:this}),(this.SearchView=e).render(),this.searchContainer.append(d.parseHTML('<label class="screen-reader-text" for="wp-filter-search-input">'+i.search+"</label>")).append(e.el).on("submit",function(e){e.preventDefault()}))},scroller:function(){var e,t=this;this.window.scrollTop(),t.window.height(),e=t.$el.offset().top+t.$el.outerHeight(!1)-t.window.height(),e=Math.round(.9*e)}}),a.Collection=Backbone.Collection.extend({model:a.Model,terms:"",doSearch:function(e){this.terms!==e&&(this.terms=e,0<this.terms.length&&this.search(this.terms),""===this.terms&&(this.reset(a.data.demos),d("body").removeClass("no-results")),this.trigger("demos:update"))},search:function(t){var i,e,s,o,r,n;this.reset(a.data.demos,{silent:!0}),t=(t=t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")).replace(/ /g,")(?=.*"),i=new RegExp("^(?=.*"+t+").+","i"),0===(e=this.filter(function(e){return o=e.get("name").replace(/(<([^>]+)>)/gi,""),r=e.get("description").replace(/(<([^>]+)>)/gi,""),n=e.get("author").replace(/(<([^>]+)>)/gi,""),s=_.union([o,e.get("id"),r,n,e.get("tags")]),i.test(e.get("author"))&&2<t.length&&e.set("displayAuthor",!0),i.test(s)})).length?this.trigger("query:empty"):d("body").removeClass("no-results"),this.reset(e)},paginate:function(e){return e=e||0,this},count:!1,query:function(t){var e,i,s,o=this.queries,r=this;if(this.currentQuery.request=t,e=_.find(o,function(e){return _.isEqual(e.request,t)}),(i=_.has(t,"page"))||(this.currentQuery.page=1),e||i){if(i)return this.apiCall(t,i).done(function(e){r.add(e.demos),r.trigger("query:success"),r.loadingDemos=!1}).fail(function(){r.trigger("query:fail")});0===e.demos.length?r.trigger("query:empty"):d("body").removeClass("no-results"),_.isNumber(e.total)&&(this.count=e.total),this.reset(e.demos),e.total||(this.count=this.length),this.trigger("demos:update"),this.trigger("query:success",this.count)}else e=this.apiCall(t).done(function(e){e.demos&&(r.reset(e.demos),s=e.info.results,o.push({demos:e.demos,request:t,total:s})),r.trigger("demos:update"),r.trigger("query:success",s),e.demos&&0===e.demos.length&&r.trigger("query:empty")}).fail(function(){r.trigger("query:fail")})},queries:[],currentQuery:{page:1,request:{}},apiCall:function(e,t){return wp.ajax.send("query-demos",{data:{request:_.extend({per_page:100},e)},beforeSend:function(){t||d("body").addClass("loading-content").removeClass("no-results")}})},loadingDemos:!1}),a.view.Demo=wp.Backbone.View.extend({className:"theme",state:"grid",html:a.template("demo"),events:{click:"preview",keydown:"preview",touchend:"preview",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")},activeDemo:function(){this.model.get("active")&&this.$el.addClass("active")},addFocus:function(){var e=d(":focus").hasClass("theme")?d(":focus"):d(":focus").parents(".theme");d(".theme.focus").removeClass("focus"),e.addClass("focus")},preventExpand:function(){this.touchDrag=!0},preview:function(e){var t,i,s=this;if(e=e||window.event,!0===this.touchDrag)return this.touchDrag=!1;d(e.target).not(".install-demo-preview").parents(".theme-actions").length||"keydown"===e.type&&13!==e.which&&32!==e.which||"keydown"===e.type&&13!==e.which&&d(":focus").hasClass("button")||(e.preventDefault(),e=e||window.event,a.focusedDemo=this.$el,a.preview=i=new a.view.Preview({model:this.model}),i.render(),this.setNavButtonsState(),1===this.model.collection.length?i.$el.addClass("no-navigation"):i.$el.removeClass("no-navigation"),d("div.wrap").append(i.el),this.listenTo(i,"demo:next",function(){if(t=s.model,_.isUndefined(s.current)||(t=s.current),s.current=s.model.collection.at(s.model.collection.indexOf(t)+1),_.isUndefined(s.current))return s.options.parent.parent.trigger("demo:end"),s.current=t;i.model=s.current,i.render(),this.setNavButtonsState(),d(".next-theme").focus()}).listenTo(i,"demo:previous",function(){t=s.model,0!==s.model.collection.indexOf(s.current)&&(_.isUndefined(s.current)||(t=s.current),s.current=s.model.collection.at(s.model.collection.indexOf(t)-1),_.isUndefined(s.current)||(i.model=s.current,i.render(),this.setNavButtonsState(),d(".previous-theme").focus()))}),this.listenTo(i,"preview:close",function(){s.current=s.model}))},setNavButtonsState:function(){var e=d(".theme-install-overlay"),t=_.isUndefined(this.current)?this.model:this.current,i=e.find(".previous-theme"),s=e.find(".next-theme");0===this.model.collection.indexOf(t)&&(i.addClass("disabled").prop("disabled",!0),s.focus()),_.isUndefined(this.model.collection.at(this.model.collection.indexOf(t)+1))&&(s.addClass("disabled").prop("disabled",!0),i.focus())},importDemo:function(e){var t=this,i=d(e.target),s=d(e.target).data("plugins");e.preventDefault(),i.hasClass("disabled")||i.hasClass("updating-message")||d.confirm({title:"",content:'<div class="demo-import-confirm-message">'+wp.demos.data.settings.confirmImport+"</div>",boxWidth:"50%",useBootstrap:!1,buttons:{confirm:{text:wp.demos.data.l10n.confirmMsg,keys:["enter"],btnClass:"demo-import-confirm-button",action:function(){t.processImport(i,s,t)}},cancel:{btnClass:"demo-import-cancel-button",action:function(){}}}})},processImport:function(i,e,s){wp.updates.maybeRequestFilesystemCredentials(event),d(document).trigger("wp-plugin-bulk-install",e),d.each(e,function(e,t){t.is_active||wp.updates.queue.push({action:"install-plugin",data:{plugin:t.slug,name:t.name,slug:e,demo:i.data("slug")}})}),d(document).on("wp-demo-import-success",function(e,t){s.model.get("id")===t.slug&&(s.render(),s.model.set({imported:!0}))}),wp.updates.queue.push({action:"import-demo",data:{slug:i.data("slug")}}),wp.updates.queueChecker()}}),a.view.Preview=wp.Backbone.View.extend({className:"wp-full-overlay expanded",el:".theme-install-overlay",events:{"click .close-full-overlay":"close","click .collapse-sidebar":"collapse","click .devices button":"previewDevice","click .previous-theme":"previousDemo","click .next-theme":"nextDemo",keyup:"keyEvent","click .demo-import":"importDemo"},html:a.template("demo-preview"),render:function(){var e,t=this,i=this.model.toJSON(),s=d(document.body);s.attr("aria-busy","true"),this.$el.removeClass("iframe-ready").html(this.html(i)),(e=this.$el.data("current-preview-device"))&&t.tooglePreviewDeviceButtons(e),a.router.navigate(a.router.baseUrl(a.router.demoPath+this.model.get("id")),{replace:!1}),this.$el.fadeIn(200,function(){s.addClass("demo-importer-active full-overlay-active")}),this.$el.find("iframe").one("load",function(){t.iframeLoaded()})},iframeLoaded:function(){this.$el.addClass("iframe-ready"),d(document.body).attr("aria-busy","false")},close:function(){return this.$el.fadeOut(200,function(){d("body").removeClass("demo-importer-active full-overlay-active"),a.focusedDemo&&a.focusedDemo.focus()}).removeClass("iframe-ready"),a.router.selectedTab?a.router.navigate(a.router.baseUrl("&browse="+a.router.selectedTab)):a.router.navigate(a.router.baseUrl("")),this.trigger("preview:close"),this.undelegateEvents(),this.unbind(),!1},collapse:function(e){var t=d(e.currentTarget);return"true"===t.attr("aria-expanded")?t.attr({"aria-expanded":"false","aria-label":i.expandSidebar}):t.attr({"aria-expanded":"true","aria-label":i.collapseSidebar}),this.$el.toggleClass("collapsed").toggleClass("expanded"),!1},previewDevice:function(e){var t=d(e.currentTarget).data("device");this.$el.removeClass("preview-desktop preview-tablet preview-mobile").addClass("preview-"+t).data("current-preview-device",t),this.tooglePreviewDeviceButtons(t)},tooglePreviewDeviceButtons:function(e){var t=d(".wp-full-overlay-footer .devices");t.find("button").removeClass("active").attr("aria-pressed",!1),t.find("button.preview-"+e).addClass("active").attr("aria-pressed",!0)},keyEvent:function(e){27===e.keyCode&&(this.undelegateEvents(),this.close()),39===e.keyCode&&_.once(this.nextDemo()),37===e.keyCode&&this.previousDemo()},nextDemo:function(){return this.trigger("demo:next",this.model.cid),!1},previousDemo:function(){return this.trigger("demo:previous",this.model.cid),!1},importDemo:function(e){var t=this,i=d(e.target),s=d(".plugins-list-table").find("#the-list tr"),o=[];e.preventDefault(),i.hasClass("disabled")||i.hasClass("updating-message")||d.confirm({title:"",content:'<div class="demo-import-confirm-message">'+wp.demos.data.settings.confirmImport+"</div>",boxWidth:"50%",useBootstrap:!1,buttons:{confirm:{text:wp.demos.data.l10n.confirmMsg,keys:["enter"],btnClass:"demo-import-confirm-button",action:function(){t.processImport(i,s,0,0,o,t)}},cancel:{btnClass:"demo-import-cancel-button",action:function(){}}},onContentReady:function(){d("body").addClass("demo-import-message-popup")},onDestroy:function(){d("body").removeClass("demo-import-message-popup")}})},processImport:function(r,e,n,a,l,c){wp.updates.maybeRequestFilesystemCredentials(event),d(".theme-install-overlay").find(".next-theme, .previous-theme").addClass("disabled"),d(document).trigger("wp-plugin-bulk-install",e),e.each(function(e,t){var i=d(t);i.hasClass("inactive")&&!i.find("notice-error").length&&wp.updates.queue.push({action:"install-plugin",data:{plugin:i.data("plugin"),slug:i.data("slug"),demo:r.data("slug")}})}),d(document).on("wp-plugin-bulk-installing",function(){d(".wp-full-overlay-sidebar-content").animate({scrollTop:d(document).height()})}),d(document).on("wp-plugin-bulk-install-success wp-plugin-bulk-install-error",function(e,t){var i,s,o=d('[data-slug="'+t.slug+'"]');"wp-"+t.install+"-bulk-install-success"===e.type?n++:(s=t.pluginName?t.pluginName:o.find(".plugin-name").text(),a++,l.push(s+": "+t.errorMessage)),wp.updates.adminNotice=wp.template("wp-bulk-installs-admin-notice"),d(".plugins-details .bulk-action-notice").remove(),d(".plugins-details .plugins-info").after(wp.updates.adminNotice({id:"bulk-action-notice",className:"bulk-action-notice notice-alt",successes:n,errors:a,errorMessages:l,type:t.install})),i=d("#bulk-action-notice").on("click","button",function(){d(this).toggleClass("bulk-action-errors-collapsed").attr("aria-expanded",!d(this).hasClass("bulk-action-errors-collapsed")),i.find(".bulk-action-errors").toggleClass("hidden")}),wp.updates.queue.length||(0<a?r.removeClass("updating-message").text(r.data("originaltext")):(c.model.set({requiredPlugins:!1}),d(".theme-install-overlay").find(".next-theme, .previous-theme").addClass("disabled")))}),d(document).on("wp-updates-notice-added",function(){wp.updates.adminNotice=wp.template("wp-updates-admin-notice")}),d(document).on("wp-demo-import-success",function(e,t){c.model.get("id")===t.slug&&c.model.set({imported:!0})}),wp.updates.queue.push({action:"import-demo",data:{slug:r.data("slug")}}),wp.updates.queueChecker()}}),a.view.Demos=wp.Backbone.View.extend({className:"themes wp-clearfix",$overlay:d("div.theme-overlay"),index:0,count:d(".wrap .demo-count"),liveDemoCount:0,initialize:function(e){var t=this;this.parent=e.parent,this.setView("grid"),t.importedDemo(),this.listenTo(t.collection,"demos:update",function(){t.parent.page=0,t.importedDemo(),t.render(this)}),this.listenTo(t.collection,"query:success",function(e){_.isNumber(e)?(t.count.text(e),t.announceSearchResults(e)):(t.count.text(t.collection.length),t.announceSearchResults(t.collection.length))}),this.listenTo(t.collection,"query:empty",function(){d("body").addClass("no-results")}),this.listenTo(this.parent,"demo:scroll",function(){t.renderDemos(t.parent.page)})},render:function(){this.$el.empty(),0<this.options.collection.size()&&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 t=this;t.instance=t.collection.paginate(e),0!==t.instance.size()?(a.isNew&&1<=e&&d(".add-new-theme").remove(),t.instance.each(function(e){t.demo=new a.view.Demo({model:e,parent:t}),t.demo.render(),t.$el.append(t.demo.el)}),a.isNew&&a.data.settings.suggestURI&&this.$el.append('<div class="theme add-new-theme"><a href="'+a.data.settings.suggestURI+'" target="blank"><div class="theme-screenshot"><span></span></div><h2 class="theme-name">'+i.suggestNew+"</h2></a></div>"),this.parent.page++):this.parent.trigger("demo:end")},importedDemo:function(){var e;(e=this.collection.findWhere({active:!0}))&&(this.collection.remove(e),this.collection.add(e,{at:0}))},setView:function(e){return e},announceSearchResults:function(e){0===e?wp.a11y.speak(i.noDemosFound):wp.a11y.speak(i.demosFound.replace("%d",e))}}),a.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:function(e){var t={};this.collection.doSearch(e.target.value.replace(/\+/g," ")),this.searching&&13!==e.which?t.replace=!0:this.searching=!0,e.target.value?a.router.navigate(a.router.baseUrl(a.router.searchPath+e.target.value),t):a.router.navigate(a.router.baseUrl(""))},pushState:function(e){var t=a.router.baseUrl("");e.target.value&&(t=a.router.baseUrl(a.router.searchPath+encodeURIComponent(e.target.value))),this.searching=!1,a.router.navigate(t)}}),a.Router=Backbone.Router.extend({routes:{"themes.php?page=demo-importer&demo=:slug":"preview","themes.php?page=demo-importer&browse=:sort":"sort","themes.php?page=demo-importer&search=:query":"search","themes.php?page=demo-importer":"sort"},baseUrl:function(e){return"themes.php?page=demo-importer"+e},demoPath:"&demo=",browsePath:"&browse=",searchPath:"&search=",search:function(e){d(".wp-filter-search").val(e.replace(/\+/g," "))},navigate:function s(e,t){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.call(this,e,t)}}),a.view.InstallerSearch=a.view.Search.extend({events:{input:"search",keyup:"search"},terms:"",search:function(e){("keyup"!==e.type||9!==e.which&&16!==e.which)&&(this.collection=this.options.parent.view.collection,"keyup"===e.type&&27===e.which&&(e.target.value=""),this.doSearch(e.target.value))},doSearch:function(e){this.terms!==e&&(this.terms=e,d(".filter-links li > a.current").removeClass("current").removeAttr("aria-current"),this.collection.doSearch(e.replace(/\+/g," ")),a.router.navigate(a.router.baseUrl(a.router.searchPath+encodeURIComponent(e)),{replace:!0}))}}),a.view.Installer=a.view.Appearance.extend({el:"#wpbody-content .wrap",events:{"click .filter-links li > a":"onSort"},render:function(){var e=this;this.search(),this.collection=new a.Collection,this.listenTo(this,"demo:end",function(){e.collection.loadingDemos||(e.collection.loadingDemos=!0,e.collection.currentQuery.page++,_.extend(e.collection.currentQuery.request,{page:e.collection.currentQuery.page}),e.collection.query(e.collection.currentQuery.request))}),this.listenTo(this.collection,"query:success",function(){d("body").removeClass("loading-content"),d(".theme-browser").find("div.error").remove()}),this.listenTo(this.collection,"query:fail",function(){d("body").removeClass("loading-content"),d(".theme-browser").find("div.error").remove(),d(".theme-browser").find("div.themes").before('<div class="error"><p>'+i.error+'</p><p><button class="button try-again">'+i.tryAgain+"</button></p></div>"),d(".theme-browser .error .try-again").on("click",function(e){e.preventDefault(),d("input.wp-filter-search").trigger("input")})}),this.view&&this.view.remove(),this.view=new a.view.Demos({collection:this.collection,parent:this}),this.page=0,this.$el.find(".themes").remove(),this.view.render(),this.$el.find(".theme-browser").append(this.view.el).addClass("rendered")},browse:function(e,t){this.collection.query({browse:e,builder:t})},onSort:function(e){var t=d(e.target),i=t.data("sort"),s=t.data("type");e.preventDefault(),i=i||a.router.selectedTab,s=s||a.router.selectedType,t.hasClass(this.activeClass)||(this.sort(i,s),a.router.navigate(a.router.baseUrl(a.router.browsePath+i)))},sort:function(e,t){this.clearSearch(),a.router.selectedTab=e,a.router.selectedType=t,d(".filter-links li > a").removeClass(this.activeClass).removeAttr("aria-current"),d('[data-sort="'+e+'"]').addClass(this.activeClass).attr("aria-current","page"),d('[data-type="'+t+'"]').addClass(this.activeClass).attr("aria-current","page"),this.browse(e,t)},activeClass:"current",clearSearch:function(){d("#wp-filter-search-input").val("")}}),a.RunInstaller={init:function(){this.view=new a.view.Installer({section:"all",SearchView:a.view.InstallerSearch}),this.render(),this.view.SearchView.doSearch=_.debounce(this.view.SearchView.doSearch,500)},render:function(){this.view.render(),this.routes(),Backbone.History.started&&Backbone.history.stop(),Backbone.history.start({root:a.data.settings.adminUrl,pushState:!0,hashChange:!1})},routes:function(){var i=this,t={};a.router=new a.Router,a.router.on("route:preview",function(e){a.preview&&(a.preview.undelegateEvents(),a.preview.unbind()),i.view.view.demo&&i.view.view.demo.preview?(i.view.view.demo.model=i.view.collection.findWhere({slug:e}),i.view.view.demo.preview()):(t.demo=e,i.view.collection.query(t),i.view.collection.trigger("update"),i.view.collection.once("query:success",function(){d('div[data-slug="'+e+'"]').trigger("click")}))}),a.router.on("route:sort",function(e){var t=a.router.selectedType?a.router.selectedType:d(".filter-links.pagebuilders li").first().find("a").data("type");e&&d('[data-sort="'+e+'"]').length||(e="all",a.router.navigate(a.router.baseUrl("&browse=all"),{replace:!0})),i.view.sort(e,t),a.preview&&a.preview.close()}),a.router.on("route:search",function(){d(".wp-filter-search").focus().trigger("keyup")}),this.extraRoutes()},extraRoutes:function(){return!1}},d(document).ready(function(){a.RunInstaller.init(),d(document.body).on("init_tooltips",function(){d("#tiptip_holder").removeAttr("style"),d("#tiptip_arrow").removeAttr("style"),d(".tips").tipTip({attribute:"data-tip",defaultPosition:"top",fadeIn:50,fadeOut:50,delay:50})}).trigger("init_tooltips"),d(".themegrill-demo-importer-rating-link").on("click",function(){var e=d(this);d.post(a.data.settings.ajaxUrl,{action:"footer-text-rated"}),e.parent().text(e.data("rated"))})})}(jQuery);
assets/js/admin/demo-updates.js CHANGED
@@ -17,6 +17,11 @@
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
  *
@@ -285,6 +290,10 @@
285
  case 'import':
286
  errorMessage = wp.updates.l10n.importFailed;
287
  break;
 
 
 
 
288
  }
289
 
290
  errorMessage = errorMessage.replace( '%s', error );
17
  */
18
  wp.updates.l10n = _.extend( wp.updates.l10n, settings.l10n || {} );
19
 
20
+ // Check for WordPress 5.5 version.
21
+ if ( 'undefined' === typeof wp.updates.l10n ) {
22
+ wp.updates.l10n = settings.l10n || {};
23
+ }
24
+
25
  /**
26
  * Sends an Ajax request to the server to import a demo.
27
  *
290
  case 'import':
291
  errorMessage = wp.updates.l10n.importFailed;
292
  break;
293
+
294
+ case 'install':
295
+ errorMessage = wp.updates.l10n.installFailed;
296
+ break;
297
  }
298
 
299
  errorMessage = errorMessage.replace( '%s', error );
assets/js/admin/demo-updates.min.js CHANGED
@@ -1 +1 @@
1
- !function(l,i,e){var r=l(document);(i=i||{}).updates=i.updates||{},i.updates.l10n=_.extend(i.updates.l10n,e.l10n||{}),i.updates.importDemo=function(e){var a=l('.demo-import[data-slug="'+e.slug+'"]');return r.find("body").hasClass("full-overlay-active")&&(a=l(".wp-full-overlay-header, .wp-full-overlay-footer").find(".demo-import")),e=_.extend({success:i.updates.importDemoSuccess,error:i.updates.importDemoError},e),a.addClass("updating-message"),a.parents(".theme").addClass("focus"),a.html()!==i.updates.l10n.importing&&a.data("originaltext",a.html()),a.text(i.updates.l10n.importing).attr("aria-label",i.updates.l10n.demoImportingLabel.replace("%s",a.data("name"))),i.a11y.speak(i.updates.l10n.importingMsg,"polite"),l('.install-theme-info, [data-slug="'+e.slug+'"]').removeClass("demo-import-failed").find(".notice.notice-error").remove(),r.trigger("wp-demo-importing",e),i.updates.ajax("import-demo",e)},i.updates.importDemoSuccess=function(e){var a,t=l(".wp-full-overlay-header, .wp-full-overlay-footer, [data-slug="+e.slug+"]");r.trigger("wp-demo-import-success",e),a=t.find(".button-primary").removeClass("updating-message").addClass("updated-message disabled").attr("aria-label",i.updates.l10n.demoImportedLabel.replace("%s",e.demoName)).text(i.updates.l10n.imported),i.a11y.speak(i.updates.l10n.importedMsg,"polite"),setTimeout(function(){e.previewUrl&&(a.siblings(".demo-preview").remove(),a.attr("target","_blank").attr("href",e.previewUrl).removeClass("demo-import updated-message disabled").addClass("live-preview").attr("aria-label",i.updates.l10n.livePreviewLabel.replace("%s",e.demoName)).text(i.updates.l10n.livePreview))},1e3)},i.updates.importDemoError=function(e){var a,t=i.updates.l10n.importFailed.replace("%s",e.errorMessage),s=i.updates.adminNotice({className:"update-message notice-error notice-alt",message:t});i.updates.isValidResponse(e,"import")&&(i.updates.maybeHandleCredentialError(e,"import-demo")||(r.find("body").hasClass("full-overlay-active")?(a=l('.demo-import[data-slug="'+e.slug+'"]'),l(".install-theme-info").prepend(s)):a=l('[data-slug="'+e.slug+'"]').removeClass("focus").addClass("demo-import-failed").append(s).find(".demo-import"),a.removeClass("updating-message").attr("aria-label",i.updates.l10n.demoImportFailedLabel.replace("%s",a.data("name"))).text(i.updates.l10n.importFailedShort),i.a11y.speak(t,"assertive"),r.trigger("wp-demo-import-error",e)))},i.updates.bulkInstallPlugin=function(e){var a,t,s;return e=_.extend({success:i.updates.bulkInstallPluginSuccess,error:i.updates.bulkInstallPluginError},e),r.find("body").hasClass("full-overlay-active")?(a=l('tr[data-slug="'+e.slug+'"]'),t=l('.theme-install-overlay .demo-import[data-slug="'+e.demo+'"]'),s=i.updates.l10n.pluginInstallingLabel.replace("%s",a.data("name")),a.find(".plugin-status span").addClass("updating-message").attr("aria-label",i.updates.l10n.pluginInstallingLabel.replace("%s",a.data("name"))).text(i.updates.l10n.installing)):(t=l('.demo-import[data-slug="'+e.demo+'"]'),s=i.updates.l10n.pluginInstallingLabel.replace("%s",e.name),t.parents(".theme").addClass("focus")),t.html()!==i.updates.l10n.installing&&t.data("originaltext",t.html()),t.attr("aria-label",s).addClass("updating-message").text(i.updates.l10n.installing),i.a11y.speak(i.updates.l10n.installingMsg,"polite"),r.trigger("wp-plugin-bulk-installing",e),i.updates.ajax("install-required-plugin",e)},i.updates.bulkInstallPluginSuccess=function(e){l('tr[data-slug="'+e.slug+'"]').removeClass("install").addClass("installed").find(".plugin-status span").removeClass("updating-message install-now").addClass("updated-message active").attr("aria-label",i.updates.l10n.pluginInstalledLabel.replace("%s",e.pluginName)).text(i.updates.l10n.pluginInstalled),i.a11y.speak(i.updates.l10n.installedMsg,"polite"),r.trigger("wp-plugin-bulk-install-success",e)},i.updates.bulkInstallPluginError=function(e){var a,t=l('tr[data-slug="'+e.slug+'"]'),s=t.find(".plugin-status span");i.updates.isValidResponse(e,"install")&&(i.updates.maybeHandleCredentialError(e,"install-plugin")||(a=i.updates.l10n.installFailed.replace("%s",e.errorMessage),s.removeClass("updating-message").addClass("updated-message").attr("aria-label",i.updates.l10n.pluginInstallFailedLabel.replace("%s",t.data("name"))).text(i.updates.l10n.installFailedShort),i.a11y.speak(a,"assertive"),r.trigger("wp-plugin-bulk-install-error",e)))},i.updates.isValidResponse=function(e,a){var t,s=i.updates.l10n.unknownError;if(_.isObject(e)&&!_.isFunction(e.always))return!0;switch(_.isString(e)&&"-1"===e?s=i.updates.l10n.nonceError:_.isString(e)?s=e:"undefined"!=typeof e.readyState&&0===e.readyState?s=i.updates.l10n.connectionError:_.isString(e.statusText)&&(s=e.statusText+" "+i.updates.l10n.statusTextLink),a){case"import":t=i.updates.l10n.importFailed}return t=t.replace("%s",s),i.updates.addAdminNotice({id:"unknown_error",className:"notice-error is-dismissible",message:_.unescape(t)}),i.updates.ajaxLocked=!1,i.updates.queue=[],l(".button.updating-message").removeClass("updating-message").removeAttr("aria-label").text(i.updates.l10n.importFailedShort),i.a11y.speak(t,"assertive"),!1},i.updates.queueChecker=function(){var e;if(!i.updates.ajaxLocked&&i.updates.queue.length){switch((e=i.updates.queue.shift()).action){case"import-demo":i.updates.importDemo(e.data);break;case"install-plugin":i.updates.bulkInstallPlugin(e.data)}r.trigger("wp-updates-queue-job",e)}}}(jQuery,window.wp,window._demoUpdatesSettings);
1
+ !function(l,i,e){var d=l(document);(i=i||{}).updates=i.updates||{},i.updates.l10n=_.extend(i.updates.l10n,e.l10n||{}),"undefined"==typeof i.updates.l10n&&(i.updates.l10n=e.l10n||{}),i.updates.importDemo=function(e){var a=l('.demo-import[data-slug="'+e.slug+'"]');return d.find("body").hasClass("full-overlay-active")&&(a=l(".wp-full-overlay-header, .wp-full-overlay-footer").find(".demo-import")),e=_.extend({success:i.updates.importDemoSuccess,error:i.updates.importDemoError},e),a.addClass("updating-message"),a.parents(".theme").addClass("focus"),a.html()!==i.updates.l10n.importing&&a.data("originaltext",a.html()),a.text(i.updates.l10n.importing).attr("aria-label",i.updates.l10n.demoImportingLabel.replace("%s",a.data("name"))),i.a11y.speak(i.updates.l10n.importingMsg,"polite"),l('.install-theme-info, [data-slug="'+e.slug+'"]').removeClass("demo-import-failed").find(".notice.notice-error").remove(),d.trigger("wp-demo-importing",e),i.updates.ajax("import-demo",e)},i.updates.importDemoSuccess=function(e){var a,t=l(".wp-full-overlay-header, .wp-full-overlay-footer, [data-slug="+e.slug+"]");d.trigger("wp-demo-import-success",e),a=t.find(".button-primary").removeClass("updating-message").addClass("updated-message disabled").attr("aria-label",i.updates.l10n.demoImportedLabel.replace("%s",e.demoName)).text(i.updates.l10n.imported),i.a11y.speak(i.updates.l10n.importedMsg,"polite"),setTimeout(function(){e.previewUrl&&(a.siblings(".demo-preview").remove(),a.attr("target","_blank").attr("href",e.previewUrl).removeClass("demo-import updated-message disabled").addClass("live-preview").attr("aria-label",i.updates.l10n.livePreviewLabel.replace("%s",e.demoName)).text(i.updates.l10n.livePreview))},1e3)},i.updates.importDemoError=function(e){var a,t=i.updates.l10n.importFailed.replace("%s",e.errorMessage),s=i.updates.adminNotice({className:"update-message notice-error notice-alt",message:t});i.updates.isValidResponse(e,"import")&&(i.updates.maybeHandleCredentialError(e,"import-demo")||(d.find("body").hasClass("full-overlay-active")?(a=l('.demo-import[data-slug="'+e.slug+'"]'),l(".install-theme-info").prepend(s)):a=l('[data-slug="'+e.slug+'"]').removeClass("focus").addClass("demo-import-failed").append(s).find(".demo-import"),a.removeClass("updating-message").attr("aria-label",i.updates.l10n.demoImportFailedLabel.replace("%s",a.data("name"))).text(i.updates.l10n.importFailedShort),i.a11y.speak(t,"assertive"),d.trigger("wp-demo-import-error",e)))},i.updates.bulkInstallPlugin=function(e){var a,t,s;return e=_.extend({success:i.updates.bulkInstallPluginSuccess,error:i.updates.bulkInstallPluginError},e),d.find("body").hasClass("full-overlay-active")?(a=l('tr[data-slug="'+e.slug+'"]'),t=l('.theme-install-overlay .demo-import[data-slug="'+e.demo+'"]'),s=i.updates.l10n.pluginInstallingLabel.replace("%s",a.data("name")),a.find(".plugin-status span").addClass("updating-message").attr("aria-label",i.updates.l10n.pluginInstallingLabel.replace("%s",a.data("name"))).text(i.updates.l10n.installing)):(t=l('.demo-import[data-slug="'+e.demo+'"]'),s=i.updates.l10n.pluginInstallingLabel.replace("%s",e.name),t.parents(".theme").addClass("focus")),t.html()!==i.updates.l10n.installing&&t.data("originaltext",t.html()),t.attr("aria-label",s).addClass("updating-message").text(i.updates.l10n.installing),i.a11y.speak(i.updates.l10n.installingMsg,"polite"),d.trigger("wp-plugin-bulk-installing",e),i.updates.ajax("install-required-plugin",e)},i.updates.bulkInstallPluginSuccess=function(e){l('tr[data-slug="'+e.slug+'"]').removeClass("install").addClass("installed").find(".plugin-status span").removeClass("updating-message install-now").addClass("updated-message active").attr("aria-label",i.updates.l10n.pluginInstalledLabel.replace("%s",e.pluginName)).text(i.updates.l10n.pluginInstalled),i.a11y.speak(i.updates.l10n.installedMsg,"polite"),d.trigger("wp-plugin-bulk-install-success",e)},i.updates.bulkInstallPluginError=function(e){var a,t=l('tr[data-slug="'+e.slug+'"]'),s=t.find(".plugin-status span");i.updates.isValidResponse(e,"install")&&(i.updates.maybeHandleCredentialError(e,"install-plugin")||(a=i.updates.l10n.installFailed.replace("%s",e.errorMessage),s.removeClass("updating-message").addClass("updated-message").attr("aria-label",i.updates.l10n.pluginInstallFailedLabel.replace("%s",t.data("name"))).text(i.updates.l10n.installFailedShort),i.a11y.speak(a,"assertive"),d.trigger("wp-plugin-bulk-install-error",e)))},i.updates.isValidResponse=function(e,a){var t,s=i.updates.l10n.unknownError;if(_.isObject(e)&&!_.isFunction(e.always))return!0;switch(_.isString(e)&&"-1"===e?s=i.updates.l10n.nonceError:_.isString(e)?s=e:"undefined"!=typeof e.readyState&&0===e.readyState?s=i.updates.l10n.connectionError:_.isString(e.statusText)&&(s=e.statusText+" "+i.updates.l10n.statusTextLink),a){case"import":t=i.updates.l10n.importFailed;break;case"install":t=i.updates.l10n.installFailed}return t=t.replace("%s",s),i.updates.addAdminNotice({id:"unknown_error",className:"notice-error is-dismissible",message:_.unescape(t)}),i.updates.ajaxLocked=!1,i.updates.queue=[],l(".button.updating-message").removeClass("updating-message").removeAttr("aria-label").text(i.updates.l10n.importFailedShort),i.a11y.speak(t,"assertive"),!1},i.updates.queueChecker=function(){var e;if(!i.updates.ajaxLocked&&i.updates.queue.length){switch((e=i.updates.queue.shift()).action){case"import-demo":i.updates.importDemo(e.data);break;case"install-plugin":i.updates.bulkInstallPlugin(e.data)}d.trigger("wp-updates-queue-job",e)}}}(jQuery,window.wp,window._demoUpdatesSettings);
includes/admin/assets/css/notice.css CHANGED
@@ -18,3 +18,26 @@
18
  .tg-demo-importer-notice .notice-dismiss {
19
  text-decoration: none;
20
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  .tg-demo-importer-notice .notice-dismiss {
19
  text-decoration: none;
20
  }
21
+
22
+ .demo-importer-system-status .demo-importer-status-table {
23
+ margin-bottom: 1em;
24
+ }
25
+
26
+ .demo-importer-system-status .demo-importer-status-table tbody td:first-child {
27
+ width: 25%;
28
+ }
29
+
30
+ #system-status-report textarea {
31
+ width: 100%;
32
+ height: 350px;
33
+ padding: 1em;
34
+ }
35
+
36
+ .demo-importer-status-report .submit {
37
+ margin: 1em 0 0;
38
+ padding: 0;
39
+ }
40
+
41
+ .demo-importer-faq-wrapper .faq p {
42
+ margin-bottom: 0;
43
+ }
includes/admin/assets/js/notice.js ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Get system status datas.
3
+ */
4
+ jQuery(
5
+ function ( $ ) {
6
+ let demoImporterSystemStatus = {
7
+ // Init class.
8
+ init: function () {
9
+ // Generate system report.
10
+ $( '#system-status-report', this.generateReport );
11
+
12
+ // Select every codes added inside textarea.
13
+ $( '#system-status-report' ).on( 'click', this.selectDetails );
14
+
15
+ // Select every codes added inside the textarea and copy the content inside.
16
+ $( '#copy-system-status-report' ).on( 'click', this.selectCopyDetails );
17
+ },
18
+
19
+ generateReport: function () {
20
+ let report = '';
21
+
22
+ $( '.demo-importer-status-table thead, .demo-importer-status-table tbody' ).each(
23
+ function () {
24
+ if ( $( this ).is( 'thead' ) ) {
25
+ let theadLabel = $( this ).text();
26
+ report = report + '\n== ' + $.trim( theadLabel ) + ' ==\n';
27
+ } else {
28
+ $( 'tr', $( this ) ).each(
29
+ function () {
30
+ let tbodyLabel = $( this ).find( 'td:eq(0)' ).text();
31
+ let tbodyValue = $( this ).find( 'td:eq(1)' ).text();
32
+
33
+ report = report + '\t' + $.trim( tbodyLabel ) + ' ' + $.trim( tbodyValue ) + '\n';
34
+ }
35
+ );
36
+ }
37
+ }
38
+ );
39
+
40
+ $( '#system-status-report' ).find( 'textarea' ).val( report );
41
+ },
42
+
43
+ selectDetails: function () {
44
+ $( '#system-status-report' ).find( 'textarea' ).focus().select();
45
+ },
46
+
47
+ selectCopyDetails: function () {
48
+ $( '#system-status-report' ).find( 'textarea' ).focus().select();
49
+ document.execCommand( 'copy' );
50
+ },
51
+ };
52
+
53
+ demoImporterSystemStatus.init();
54
+ }
55
+ );
includes/admin/class-demo-importer-status.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Debug/Status Page.
4
+ *
5
+ * @package ThemeGrill_Demo_Importer
6
+ */
7
+
8
+ defined( 'ABSPATH' ) || exit;
9
+
10
+ /**
11
+ * Class TG_Demo_Importer_Status
12
+ */
13
+ class TG_Demo_Importer_Status {
14
+
15
+ /**
16
+ * Handles the display of System Status.
17
+ */
18
+ public static function system_status() {
19
+ include_once dirname( __FILE__ ) . '/views/html-admin-page-system-status-report.php';
20
+ }
21
+
22
+ /**
23
+ * Handles the display of FAQ's.
24
+ */
25
+ public static function demo_import_faqs() {
26
+ include_once dirname( __FILE__ ) . '/views/html-admin-page-demo-import-faqs.php';
27
+ }
28
+
29
+ /**
30
+ * Check if we can add files under the `wp-content/uploads/tg-demo-pack` folder.
31
+ *
32
+ * @return string
33
+ */
34
+ public static function get_write_permission() {
35
+ $output = '';
36
+ $wp_upload_dir = wp_upload_dir( null, false );
37
+ $error = $wp_upload_dir['error'];
38
+ $tg_demo_pack_uploads_path = $wp_upload_dir['basedir'] . '/tg-demo-pack/';
39
+
40
+ if ( ! $error && is_writable( $tg_demo_pack_uploads_path ) ) {
41
+ $output = __( 'All Fine', 'themegrill-demo-importer' );
42
+ } else {
43
+ $output = __( 'There are some write permission errors on your site.', 'themegrill-demo-importer' );
44
+ }
45
+
46
+ return esc_html( $output );
47
+ }
48
+
49
+ /**
50
+ * Check if we can connect to GitHub server for demo import feature.
51
+ *
52
+ * @return string
53
+ */
54
+ public static function get_demo_server_connection_status() {
55
+ $output = '';
56
+ $package_file_server = wp_remote_get( 'https://github.com/' );
57
+ $http_response_code = wp_remote_retrieve_response_code( $package_file_server );
58
+
59
+ if ( is_wp_error( $package_file_server ) || 200 !== (int) $http_response_code ) {
60
+ $output = __( 'There is a connection issue of your site to our demo pack services.', 'themegrill-demo-importer' );
61
+ } else {
62
+ $output = __( 'Connected', 'themegrill-demo-importer' );
63
+ }
64
+
65
+ return esc_html( $output );
66
+ }
67
+
68
+ /**
69
+ * Get lists of active plugins.
70
+ *
71
+ * @return array
72
+ */
73
+ public static function get_active_plugins() {
74
+ // Ensure get_plugins function is loaded.
75
+ if ( ! function_exists( 'get_plugins' ) ) {
76
+ include ABSPATH . '/wp-admin/includes/plugin.php';
77
+ }
78
+
79
+ $active_plugins = get_option( 'active_plugins' );
80
+ $active_plugins = array_intersect_key( get_plugins(), array_flip( $active_plugins ) );
81
+
82
+ return $active_plugins;
83
+ }
84
+
85
+ /**
86
+ * Get lists of inactive plugins.
87
+ *
88
+ * @return array
89
+ */
90
+ public static function get_inactive_plugins() {
91
+ return array_diff_key( get_plugins(), self::get_active_plugins() );
92
+ }
93
+ }
includes/admin/views/html-admin-page-demo-import-faqs.php ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Admin View: Page - Demo Import FAQ's
4
+ *
5
+ * @package ThemeGrill_Demo_Importer
6
+ */
7
+
8
+ defined( 'ABSPATH' ) || exit;
9
+ ?>
10
+ <div class="demo-importer-faq">
11
+ <h2><?php esc_html_e( 'FAQ\'s', 'themegrill-demo-importer' ); ?></h2>
12
+
13
+ <?php
14
+ $faq_rss = 'https://docs.themegrill.com/themegrill-demo-importer/docs-category/faqs/feed/';
15
+
16
+ // Fetch the RSS feeds.
17
+ if ( is_string( $faq_rss ) ) {
18
+ $faq_rss = fetch_feed( $faq_rss );
19
+ } elseif ( is_array( $faq_rss ) && isset( $faq_rss['url'] ) ) {
20
+ $faq_rss = fetch_feed( $faq_rss['url'] );
21
+ } elseif ( ! is_object( $faq_rss ) ) {
22
+ return;
23
+ }
24
+
25
+ // If error, show them.
26
+ if ( is_wp_error( $faq_rss ) ) {
27
+ if ( is_admin() || current_user_can( 'switch_theme' ) ) {
28
+ echo '<p><strong>' . __( 'Error fetching the FAQ\'s', 'themegrill-demo-importer' ) . '</strong> ' . $faq_rss->get_error_message() . '</p>';
29
+ }
30
+
31
+ return;
32
+ }
33
+
34
+ // Return if empty quantity from RSS feed.
35
+ if ( ! $faq_rss->get_item_quantity() ) {
36
+ echo '<p>' . __( 'An error has occurred, which probably means our server is down. Try again later.', 'themegrill-demo-importer' ) . '</p>>';
37
+ $faq_rss->__destruct();
38
+ unset( $faq_rss );
39
+
40
+ return;
41
+ }
42
+
43
+ // Loop through RSS feeds.
44
+ echo '<div class="demo-importer-faq-wrapper">';
45
+ foreach ( $faq_rss->get_items( 0, 5 ) as $faq ) {
46
+ $link = $faq->get_permalink();
47
+ $title = $faq->get_title();
48
+ $description = $faq->get_content();
49
+ $description = substr( wpautop( $description ), 0, strpos( wpautop( $description ), '</p>' ) + 4 );
50
+
51
+ echo '<div class="postbox"><div class="inside"><div class="faq main">';
52
+ echo '<h3><a href="' . esc_url( strip_tags( $link ) ) . '" target="_blank">' . esc_html( strip_tags( $title ) ) . '</a></h3>';
53
+ echo '<p>' . strip_tags( $description ) . '</p>';
54
+ echo '</div></div></div>';
55
+ }
56
+ echo '</div>';
57
+
58
+ $faq_rss->__destruct();
59
+ unset( $faq_rss );
60
+ ?>
61
+
62
+ <a class="button button-primary button-hero" href="https://docs.themegrill.com/themegrill-demo-importer/docs-category/faqs/" target="_blank"><?php esc_html_e( 'View More FAQ\'s', 'themegrill-demo-importer' ); ?></a>
63
+ </div>
includes/admin/views/html-admin-page-status.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Admin View: Page - Status
4
+ *
5
+ * @package ThemeGrill_Demo_Importer
6
+ */
7
+
8
+ defined( 'ABSPATH' ) || exit;
9
+
10
+ // Tabs on status page.
11
+ $current_tab = ! empty( $_REQUEST['tab'] ) ? sanitize_title( $_REQUEST['tab'] ) : 'status';
12
+ $tabs = array(
13
+ 'status' => esc_html__( 'System Status', 'themegrill-demo-importer' ),
14
+ 'faq' => esc_html__( 'FAQ\'s', 'themegrill-demo-importer' ),
15
+ );
16
+ $tabs = apply_filters( 'themegrill_demo_importer_status_tabs', $tabs );
17
+ ?>
18
+ <div class="wrap demo-importer-status">
19
+ <nav class="nav-tab-wrapper">
20
+ <?php
21
+ foreach ( $tabs as $name => $label ) {
22
+ echo '<a href="' . admin_url( 'themes.php?page=demo-importer-status&tab=' . $name ) . '" class="nav-tab ';
23
+ if ( $current_tab == $name ) {
24
+ echo 'nav-tab-active';
25
+ }
26
+ echo '">' . $label . '</a>';
27
+ }
28
+ ?>
29
+ </nav>
30
+ <h1 class="screen-reader-text"><?php echo esc_html( $tabs[ $current_tab ] ); ?></h1>
31
+ <?php
32
+ switch ( $current_tab ) {
33
+ case 'status':
34
+ TG_Demo_Importer_Status::system_status();
35
+ break;
36
+
37
+ case 'faq':
38
+ TG_Demo_Importer_Status::demo_import_faqs();
39
+ break;
40
+
41
+ default:
42
+ do_action( 'themegrill_demo_importer_status_content_' . $current_tab );
43
+ break;
44
+ }
45
+ ?>
46
+ </div>
includes/admin/views/html-admin-page-system-status-report.php ADDED
@@ -0,0 +1,362 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Admin View: Page - System Status
4
+ *
5
+ * @package ThemeGrill_Demo_Importer
6
+ */
7
+
8
+ defined( 'ABSPATH' ) || exit;
9
+
10
+ global $wpdb, $wp_rewrite;;
11
+ $curl_data = function_exists( 'curl_version' ) ? curl_version() : false;
12
+ $gd_data = function_exists( 'gd_info' ) ? gd_info() : false;
13
+ $theme = wp_get_theme();
14
+ ?>
15
+ <div class="demo-importer-system-status">
16
+ <h2><?php esc_html_e( 'System Status', 'themegrill-demo-importer' ); ?></h2>
17
+
18
+ <table class="demo-importer-status-table widefat">
19
+ <thead>
20
+ <tr>
21
+ <th><?php esc_html_e( 'System Info', 'themegrill-demo-importer' ); ?></th>
22
+ <th></th>
23
+ <th></th>
24
+ </tr>
25
+ </thead>
26
+ <tbody>
27
+ <tr>
28
+ <td><?php esc_html_e( 'Operating System:', 'themegrill-demo-importer' ); ?></td>
29
+ <td><?php echo esc_html( PHP_OS ); ?></td>
30
+ <td></td>
31
+ </tr>
32
+ <tr>
33
+ <td><?php esc_html_e( 'Server:', 'themegrill-demo-importer' ); ?></td>
34
+ <td><?php echo esc_html( wp_unslash( $_SERVER['SERVER_SOFTWARE'] ) ); ?></td>
35
+ <td></td>
36
+ </tr>
37
+ <tr>
38
+ <td><?php esc_html_e( 'MySQL Version:', 'themegrill-demo-importer' ); ?></td>
39
+ <td><?php echo esc_html( $wpdb->get_var( 'SELECT VERSION()' ) ); ?></td>
40
+ <td></td>
41
+ </tr>
42
+ <tr>
43
+ <td><?php esc_html_e( 'PHP Version:', 'themegrill-demo-importer' ); ?></td>
44
+ <td><?php echo esc_html( PHP_VERSION ); ?></td>
45
+ <td></td>
46
+ </tr>
47
+ <tr>
48
+ <td><?php esc_html_e( 'PHP Max Execution Time:', 'themegrill-demo-importer' ); ?></td>
49
+ <td><?php echo esc_html( ini_get( 'max_execution_time' ) ); ?></td>
50
+ <td></td>
51
+ </tr>
52
+ <tr>
53
+ <td><?php esc_html_e( 'PHP Max Upload Size:', 'themegrill-demo-importer' ); ?></td>
54
+ <td><?php echo esc_html( ini_get( 'upload_max_filesize' ) ); ?></td>
55
+ <td></td>
56
+ </tr>
57
+ <tr>
58
+ <td><?php esc_html_e( 'PHP Post Max Size:', 'themegrill-demo-importer' ); ?></td>
59
+ <td><?php echo esc_html( ini_get( 'post_max_size' ) ); ?></td>
60
+ <td></td>
61
+ </tr>
62
+ <tr>
63
+ <td><?php esc_html_e( 'PHP Max Input Vars:', 'themegrill-demo-importer' ); ?></td>
64
+ <td><?php echo esc_html( ini_get( 'max_input_vars' ) ); ?></td>
65
+ <td></td>
66
+ </tr>
67
+ <tr>
68
+ <td><?php esc_html_e( 'PHP Memory Limit:', 'themegrill-demo-importer' ); ?></td>
69
+ <td><?php echo esc_html( ini_get( 'memory_limit' ) ); ?></td>
70
+ <td></td>
71
+ </tr>
72
+ <tr>
73
+ <td><?php esc_html_e( 'cURL Installed:', 'themegrill-demo-importer' ); ?></td>
74
+ <td><?php extension_loaded( 'curl' ) ? esc_html_e( 'Yes', 'themegrill-demo-importer' ) : esc_html_e( 'No', 'themegrill-demo-importer' ); ?></td>
75
+ <td></td>
76
+ </tr>
77
+ <?php if ( $curl_data ) : ?>
78
+ <tr>
79
+ <td><?php esc_html_e( 'cURL version:', 'themegrill-demo-importer' ); ?></td>
80
+ <td><?php echo esc_html( $curl_data['version'] ); ?></td>
81
+ <td></td>
82
+ </tr>
83
+ <?php endif; ?>
84
+ <tr>
85
+ <td><?php esc_html_e( 'GD Installed:', 'themegrill-demo-importer' ); ?></td>
86
+ <td><?php extension_loaded( 'gd' ) ? esc_html_e( 'Yes', 'themegrill-demo-importer' ) : esc_html_e( 'No', 'themegrill-demo-importer' ); ?></td>
87
+ <td></td>
88
+ </tr>
89
+ <?php if ( $gd_data ) : ?>
90
+ <tr>
91
+ <td><?php esc_html_e( 'GD version:', 'themegrill-demo-importer' ); ?></td>
92
+ <td><?php echo esc_html( $gd_data['GD Version'] ); ?></td>
93
+ <td></td>
94
+ </tr>
95
+ <?php endif; ?>
96
+ <tr>
97
+ <td><?php esc_html_e( 'Write Permission:', 'themegrill-demo-importer' ); ?></td>
98
+ <td><?php echo TG_Demo_Importer_Status::get_write_permission(); ?></td>
99
+ <td></td>
100
+ </tr>
101
+ <tr>
102
+ <td><?php esc_html_e( 'Demo Pack Server Connection:', 'themegrill-demo-importer' ); ?></td>
103
+ <td><?php echo TG_Demo_Importer_Status::get_demo_server_connection_status(); ?></td>
104
+ <td></td>
105
+ </tr>
106
+ </tbody>
107
+ </table>
108
+
109
+
110
+ <table class="demo-importer-status-table widefat">
111
+ <thead>
112
+ <tr>
113
+ <th><?php esc_html_e( 'WordPress Info', 'themegrill-demo-importer' ); ?></th>
114
+ <th></th>
115
+ <th></th>
116
+ </tr>
117
+ </thead>
118
+ <tbody>
119
+ <tr>
120
+ <td><?php esc_html_e( 'Version:', 'themegrill-demo-importer' ); ?></td>
121
+ <td><?php echo esc_html( get_bloginfo( 'version' ) ); ?></td>
122
+ <td></td>
123
+ </tr>
124
+ <tr>
125
+ <td><?php esc_html_e( 'Site URL:', 'themegrill-demo-importer' ); ?></td>
126
+ <td><?php echo esc_html( get_site_url() ); ?></td>
127
+ <td></td>
128
+ </tr>
129
+ <tr>
130
+ <td><?php esc_html_e( 'Home URL:', 'themegrill-demo-importer' ); ?></td>
131
+ <td><?php echo esc_html( get_home_url() ); ?></td>
132
+ <td></td>
133
+ </tr>
134
+ <tr>
135
+ <td><?php esc_html_e( 'Multisite:', 'themegrill-demo-importer' ); ?></td>
136
+ <td><?php is_multisite() ? esc_html_e( 'Yes', 'themegrill-demo-importer' ) : esc_html_e( 'No', 'themegrill-demo-importer' ); ?></td>
137
+ <td></td>
138
+ </tr>
139
+ <tr>
140
+ <td><?php esc_html_e( 'Max Upload Size:', 'themegrill-demo-importer' ); ?></td>
141
+ <td><?php echo esc_html( size_format( wp_max_upload_size() ) ); ?></td>
142
+ <td></td>
143
+ </tr>
144
+ <tr>
145
+ <td><?php esc_html_e( 'Memory Limit:', 'themegrill-demo-importer' ); ?></td>
146
+ <td><?php echo esc_html( WP_MEMORY_LIMIT ); ?></td>
147
+ <td></td>
148
+ </tr>
149
+ <tr>
150
+ <td><?php esc_html_e( 'Max Memory Limit:', 'themegrill-demo-importer' ); ?></td>
151
+ <td><?php echo esc_html( WP_MAX_MEMORY_LIMIT ); ?></td>
152
+ <td></td>
153
+ </tr>
154
+ <tr>
155
+ <td><?php esc_html_e( 'Permalink Structure:', 'themegrill-demo-importer' ); ?></td>
156
+ <td><?php echo '' !== $wp_rewrite->permalink_structure ? esc_html( $wp_rewrite->permalink_structure ) : esc_html__( 'Plain', 'themegrill-demo-importer' ); ?></td>
157
+ <td></td>
158
+ </tr>
159
+ <tr>
160
+ <td><?php esc_html_e( 'Language:', 'themegrill-demo-importer' ); ?></td>
161
+ <td><?php echo esc_html( get_bloginfo( 'language' ) ); ?></td>
162
+ <td></td>
163
+ </tr>
164
+ <tr>
165
+ <td><?php esc_html_e( 'Debug Mode Enabled:', 'themegrill-demo-importer' ); ?></td>
166
+ <td><?php WP_DEBUG ? esc_html_e( 'Yes', 'themegrill-demo-importer' ) : esc_html_e( 'No', 'themegrill-demo-importer' ); ?></td>
167
+ <td></td>
168
+ </tr>
169
+ <tr>
170
+ <td><?php esc_html_e( 'Script Debug Mode Enabled:', 'themegrill-demo-importer' ); ?></td>
171
+ <td><?php SCRIPT_DEBUG ? esc_html_e( 'Yes', 'themegrill-demo-importer' ) : esc_html_e( 'No', 'themegrill-demo-importer' ); ?></td>
172
+ <td></td>
173
+ </tr>
174
+ <tr>
175
+ <td><?php esc_html_e( 'ThemeGrill Demo Importer Version:', 'themegrill-demo-importer' ); ?></td>
176
+ <td><?php echo esc_html( TGDM_VERSION ); ?></td>
177
+ <td></td>
178
+ </tr>
179
+ </tbody>
180
+ </table>
181
+
182
+
183
+ <table class="demo-importer-status-table widefat">
184
+ <thead>
185
+ <tr>
186
+ <th><?php esc_html_e( 'Theme Info', 'themegrill-demo-importer' ); ?></th>
187
+ <th></th>
188
+ <th></th>
189
+ </tr>
190
+ </thead>
191
+ <tbody>
192
+ <tr>
193
+ <td><?php esc_html_e( 'Name:', 'themegrill-demo-importer' ); ?></td>
194
+ <td><?php echo esc_html( $theme->get( 'Name' ) ); ?></td>
195
+ <td></td>
196
+ </tr>
197
+ <tr>
198
+ <td><?php esc_html_e( 'Version:', 'themegrill-demo-importer' ); ?></td>
199
+ <td><?php echo esc_html( $theme->get( 'Version' ) ); ?></td>
200
+ <td></td>
201
+ </tr>
202
+ <tr>
203
+ <td><?php esc_html_e( 'Author:', 'themegrill-demo-importer' ); ?></td>
204
+ <td><?php echo esc_html( $theme->get( 'Author' ) ); ?></td>
205
+ <td></td>
206
+ </tr>
207
+ <tr>
208
+ <td><?php esc_html_e( 'Author URL:', 'themegrill-demo-importer' ); ?></td>
209
+ <td><?php echo esc_html( $theme->get( 'AuthorURI' ) ); ?></td>
210
+ <td></td>
211
+ </tr>
212
+ <tr>
213
+ <td><?php esc_html_e( 'Child Theme:', 'themegrill-demo-importer' ); ?></td>
214
+ <td><?php is_child_theme() ? esc_html_e( 'Yes', 'themegrill-demo-importer' ) : esc_html_e( 'No', 'themegrill-demo-importer' ); ?></td>
215
+ <td>
216
+ <?php
217
+ if ( ! is_child_theme() ) :
218
+ printf(
219
+ /* translators: 1. Opening anchor tag for ThemeGrill Child Tutorial, 2. Closing the anchor tag */
220
+ esc_html__( 'If you want to modify the features of the theme then, we recommend you to use %1$s child theme. %2$s', 'themegrill-demo-importer' ),
221
+ '<a href="https://themegrill.com/blog/tutorial-creating-wordpress-child-theme/" target="_blank">',
222
+ '</a>'
223
+ );
224
+ endif;
225
+ ?>
226
+ </td>
227
+ </tr>
228
+ <?php if ( is_child_theme() ) : ?>
229
+ <tr>
230
+ <td><?php esc_html_e( 'Parent Theme Name:', 'themegrill-demo-importer' ); ?></td>
231
+ <td><?php echo esc_html( $theme->parent()->get( 'Name' ) ); ?></td>
232
+ <td></td>
233
+ </tr>
234
+ <tr>
235
+ <td><?php esc_html_e( 'Parent Theme Version:', 'themegrill-demo-importer' ); ?></td>
236
+ <td><?php echo esc_html( $theme->parent()->get( 'Version' ) ); ?></td>
237
+ <td></td>
238
+ </tr>
239
+ <tr>
240
+ <td><?php esc_html_e( 'Parent Theme Author:', 'themegrill-demo-importer' ); ?></td>
241
+ <td><?php echo esc_html( $theme->parent()->get( 'Author' ) ); ?></td>
242
+ <td></td>
243
+ </tr>
244
+ <tr>
245
+ <td><?php esc_html_e( 'Parent Theme Author URL:', 'themegrill-demo-importer' ); ?></td>
246
+ <td><?php echo esc_html( $theme->parent()->get( 'AuthorURI' ) ); ?></td>
247
+ <td></td>
248
+ </tr>
249
+ <?php endif; ?>
250
+ </tbody>
251
+ </table>
252
+
253
+
254
+ <table class="demo-importer-status-table widefat">
255
+ <thead>
256
+ <tr>
257
+ <th><?php esc_html_e( 'Active Plugins', 'themegrill-demo-importer' ); ?></th>
258
+ <th></th>
259
+ <th></th>
260
+ </tr>
261
+ </thead>
262
+ <tbody>
263
+ <?php
264
+ $active_plugin_lists = TG_Demo_Importer_Status::get_active_plugins();
265
+
266
+ // Display the active plugin lists.
267
+ foreach ( $active_plugin_lists as $active_plugin_list ) :
268
+ echo '<tr>';
269
+ echo '<td>';
270
+ if ( $active_plugin_list['PluginURI'] ) :
271
+ $plugin_name = '<a href="' . $active_plugin_list['PluginURI'] . '" target="_blank">' . $active_plugin_list['Name'] . '</a>';
272
+ else :
273
+ $plugin_name = $active_plugin_list['Name'];
274
+ endif;
275
+
276
+ if ( $active_plugin_list['Version'] ) :
277
+ $plugin_name .= ' - ' . $active_plugin_list['Version'];
278
+ endif;
279
+
280
+ echo $plugin_name;
281
+ echo '</td>';
282
+
283
+ echo '<td>';
284
+ if ( $active_plugin_list['Author'] ) :
285
+ printf(
286
+ /* translators: 1. Plugin author name. */
287
+ esc_html__( 'By %s', 'themegrill-demo-importer' ),
288
+ esc_html( $active_plugin_list['Author'] )
289
+ );
290
+ endif;
291
+ echo '</td>';
292
+
293
+ echo '<td></td>';
294
+ echo '</tr>';
295
+ endforeach;
296
+ ?>
297
+ </tbody>
298
+ </table>
299
+
300
+
301
+ <table class="demo-importer-status-table widefat">
302
+ <thead>
303
+ <tr>
304
+ <th><?php esc_html_e( 'Inactive Plugins', 'themegrill-demo-importer' ); ?></th>
305
+ <th></th>
306
+ <th></th>
307
+ </tr>
308
+ </thead>
309
+ <tbody>
310
+ <?php
311
+ $inactive_plugin_lists = TG_Demo_Importer_Status::get_inactive_plugins();
312
+
313
+ // Display the inactive plugin lists.
314
+ foreach ( $inactive_plugin_lists as $inactive_plugin_list ) :
315
+ echo '<tr>';
316
+ echo '<td>';
317
+ if ( $inactive_plugin_list['PluginURI'] ) :
318
+ $plugin_name = '<a href="' . $inactive_plugin_list['PluginURI'] . '" target="_blank">' . $inactive_plugin_list['Name'] . '</a>';
319
+ else :
320
+ $plugin_name = $inactive_plugin_list['Name'];
321
+ endif;
322
+
323
+ if ( $inactive_plugin_list['Version'] ) :
324
+ $plugin_name .= ' - ' . $inactive_plugin_list['Version'];
325
+ endif;
326
+
327
+ echo $plugin_name;
328
+ echo '</td>';
329
+
330
+ echo '<td>';
331
+ if ( $inactive_plugin_list['Author'] ) :
332
+ printf(
333
+ /* translators: 1. Plugin author name. */
334
+ esc_html__( 'By %s', 'themegrill-demo-importer' ),
335
+ esc_html( $inactive_plugin_list['Author'] )
336
+ );
337
+ endif;
338
+ echo '</td>';
339
+
340
+ echo '<td></td>';
341
+ echo '</tr>';
342
+ endforeach;
343
+ ?>
344
+ </tbody>
345
+ </table>
346
+
347
+
348
+ <h2><?php esc_html_e( 'Copy &amp; Paste', 'themegrill-demo-importer' ); ?></h2>
349
+
350
+ <div class="demo-importer-status-report">
351
+ <p><?php esc_html_e( 'While creating support request, please provide us the details generated below within the support request. It might help us to tackle on the issue more conviniently.', 'themegrill-demo-importer' ); ?></p>
352
+ <div id="system-status-report">
353
+ <textarea readonly="readonly"></textarea>
354
+ </div>
355
+
356
+ <p class="submit">
357
+ <button id="copy-system-status-report" class="button-primary">
358
+ <?php esc_html_e( 'Copy System Status', 'themegrill-demo-importer' ); ?>
359
+ </button>
360
+ </p>
361
+ </div>
362
+ </div>
includes/admin/views/html-notice-reset-wizard-success.php DELETED
@@ -1,15 +0,0 @@
1
- <?php
2
- /**
3
- * Admin View: Notice - Reset Wizard Success
4
- *
5
- * @package ThemeGrill_Demo_Importer
6
- */
7
-
8
- defined( 'ABSPATH' ) || exit;
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/admin/views/html-notice-reset-wizard.php DELETED
@@ -1,19 +0,0 @@
1
- <?php
2
- /**
3
- * Admin View: Notice - Reset Wizard
4
- *
5
- * @package ThemeGrill_Demo_Importer
6
- */
7
-
8
- defined( 'ABSPATH' ) || exit;
9
-
10
- $reset_url = wp_nonce_url(
11
- add_query_arg( 'do_reset_wordpress', 'true', admin_url( 'themes.php?page=demo-importer' ) ),
12
- 'themegrill_demo_importer_reset',
13
- 'themegrill_demo_importer_reset_nonce'
14
- );
15
- ?>
16
- <div id="message" class="updated themegrill-demo-importer-message">
17
- <p><?php _e( '<strong>Reset Wizard</strong> &#8211; If you need to reset the WordPress back to default again :)', 'themegrill-demo-importer' ); ?></p>
18
- <p class="submit"><a href="<?php echo esc_url( $reset_url ); ?>" 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', admin_url( 'themes.php?page=demo-importer' ) ), 'themegrill_demo_importer_hide_notice_nonce', '_themegrill_demo_importer_notice_nonce' ) ); ?>"><?php _e( 'Hide this notice', 'themegrill-demo-importer' ); ?></a></p>
19
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-demo-importer.php CHANGED
@@ -39,11 +39,6 @@ class TG_Demo_Importer {
39
  add_action( 'current_screen', array( $this, 'add_help_tabs' ), 50 );
40
  }
41
 
42
- // Reset Wizard.
43
- add_action( 'wp_loaded', array( $this, 'hide_reset_notice' ) );
44
- add_action( 'admin_init', array( $this, 'reset_wizard_actions' ) );
45
- add_action( 'admin_notices', array( $this, 'reset_wizard_notice' ) );
46
-
47
  // Footer rating text.
48
  add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ), 1 );
49
 
@@ -81,6 +76,7 @@ class TG_Demo_Importer {
81
  public function includes() {
82
  include_once dirname( __FILE__ ) . '/importers/class-widget-importer.php';
83
  include_once dirname( __FILE__ ) . '/importers/class-customizer-importer.php';
 
84
  }
85
 
86
  /**
@@ -122,6 +118,7 @@ class TG_Demo_Importer {
122
  */
123
  public function admin_menu() {
124
  add_theme_page( __( 'Demo Importer', 'themegrill-demo-importer' ), __( 'Demo Importer', 'themegrill-demo-importer' ), 'switch_themes', 'demo-importer', array( $this, 'demo_importer' ) );
 
125
  }
126
 
127
  /**
@@ -161,6 +158,8 @@ class TG_Demo_Importer {
161
  // Register and enqueue admin notice files.
162
  wp_register_style( 'tg-demo-importer-notice', tgdm()->plugin_url() . '/includes/admin/assets/css/notice.css', array(), TGDM_VERSION );
163
  wp_enqueue_style( 'tg-demo-importer-notice' );
 
 
164
 
165
  // Add RTL support for admin styles.
166
  wp_style_add_data( 'tg-demo-importer', 'rtl', 'replace' );
@@ -173,27 +172,124 @@ class TG_Demo_Importer {
173
 
174
  // Demo Importer appearance page.
175
  if ( 'appearance_page_demo-importer' === $screen_id ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
  wp_enqueue_style( 'tg-demo-importer' );
177
  wp_enqueue_script( 'tg-demo-importer' );
178
  wp_localize_script(
179
  'tg-demo-updates',
180
  '_demoUpdatesSettings',
181
- array(
182
- 'l10n' => array(
183
- 'importing' => __( 'Importing...', 'themegrill-demo-importer' ),
184
- 'demoImportingLabel' => _x( 'Importing %s...', 'demo', 'themegrill-demo-importer' ), // no ellipsis
185
- 'importingMsg' => __( 'Importing... please wait.', 'themegrill-demo-importer' ),
186
- 'importedMsg' => __( 'Import completed successfully.', 'themegrill-demo-importer' ),
187
- 'importFailedShort' => __( 'Import Failed!', 'themegrill-demo-importer' ),
188
- 'importFailed' => __( 'Import failed: %s', 'themegrill-demo-importer' ),
189
- 'demoImportedLabel' => _x( '%s imported!', 'demo', 'themegrill-demo-importer' ),
190
- 'demoImportFailedLabel' => _x( '%s import failed', 'demo', 'themegrill-demo-importer' ),
191
- 'livePreview' => __( 'Live Preview', 'themegrill-demo-importer' ),
192
- 'livePreviewLabel' => _x( 'Live Preview %s', 'demo', 'themegrill-demo-importer' ),
193
- 'imported' => __( 'Imported!', 'themegrill-demo-importer' ),
194
- 'statusTextLink' => '<a href="https://docs.themegrill.com/knowledgebase/demo-import-process-failed/" target="_blank">' . __( 'Try this solution!', 'themegrill-demo-importer' ) . '</a>',
195
- ),
196
- )
197
  );
198
  wp_localize_script(
199
  'tg-demo-importer',
@@ -205,7 +301,6 @@ class TG_Demo_Importer {
205
  'ajaxUrl' => admin_url( 'admin-ajax.php' ),
206
  'adminUrl' => parse_url( self_admin_url(), PHP_URL_PATH ),
207
  'suggestURI' => apply_filters( 'themegrill_demo_importer_suggest_new', 'https://themegrill.com/contact/' ),
208
- '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' ),
209
  'confirmImport' => sprintf(
210
 
211
  __( 'Importing demo data will ensure that your site will look similar as theme demo. It makes you easy to modify the content instead of creating them from scratch. Also, consider before importing the demo: %1$s %2$s %3$s %4$s %5$s %6$s', 'themegrill-demo-importer' ),
@@ -279,12 +374,7 @@ class TG_Demo_Importer {
279
  * Add Contextual help tabs.
280
  */
281
  public function add_help_tabs() {
282
- $screen = get_current_screen();
283
- $reset_url = wp_nonce_url(
284
- add_query_arg( 'do_reset_wordpress', 'true', admin_url( 'themes.php?page=demo-importer' ) ),
285
- 'themegrill_demo_importer_reset',
286
- 'themegrill_demo_importer_reset_nonce'
287
- );
288
 
289
  if ( ! $screen || ! in_array( $screen->id, array( 'appearance_page_demo-importer' ) ) ) {
290
  return;
@@ -321,17 +411,6 @@ class TG_Demo_Importer {
321
  )
322
  );
323
 
324
- $screen->add_help_tab(
325
- array(
326
- 'id' => 'themegrill_demo_importer_reset_tab',
327
- 'title' => __( 'Reset wizard', 'themegrill-demo-importer' ),
328
- 'content' =>
329
- '<h2>' . __( 'Reset wizard', 'themegrill-demo-importer' ) . '</h2>' .
330
- '<p>' . __( 'If you need to reset the WordPress back to default again, please click on the button below.', 'themegrill-demo-importer' ) . '</p>' .
331
- '<p><a href="' . esc_url( $reset_url ) . '" class="button button-primary themegrill-reset-wordpress">' . __( 'Reset wizard', 'themegrill-demo-importer' ) . '</a></p>',
332
- )
333
- );
334
-
335
  $screen->set_help_sidebar(
336
  '<p><strong>' . __( 'For more information:', 'themegrill-demo-importer' ) . '</strong></p>' .
337
  '<p><a href="' . 'https://themegrill.com/demo-importer/' . '" target="_blank">' . __( 'About Demo Importer', 'themegrill-demo-importer' ) . '</a></p>' .
@@ -342,134 +421,6 @@ class TG_Demo_Importer {
342
  );
343
  }
344
 
345
- /**
346
- * Reset wizard notice.
347
- */
348
- public function reset_wizard_notice() {
349
- $screen = get_current_screen();
350
- $demo_activated_id = get_option( 'themegrill_demo_importer_activated_id' );
351
- $demo_notice_dismiss = get_option( 'themegrill_demo_importer_reset_notice' );
352
-
353
- if ( ! $screen || ! in_array( $screen->id, array( 'appearance_page_demo-importer' ) ) ) {
354
- return;
355
- }
356
-
357
- // Output reset wizard notice.
358
- if ( ! $demo_notice_dismiss && $demo_activated_id ) {
359
- include_once dirname( __FILE__ ) . '/admin/views/html-notice-reset-wizard.php';
360
- } elseif ( isset( $_GET['reset'] ) && 'true' === $_GET['reset'] ) {
361
- include_once dirname( __FILE__ ) . '/admin/views/html-notice-reset-wizard-success.php';
362
- }
363
- }
364
-
365
- /**
366
- * Hide a notice if the GET variable is set.
367
- */
368
- public function hide_reset_notice() {
369
- if ( isset( $_GET['themegrill-demo-importer-hide-notice'] ) && isset( $_GET['_themegrill_demo_importer_notice_nonce'] ) ) {
370
- if ( ! wp_verify_nonce( $_GET['_themegrill_demo_importer_notice_nonce'], 'themegrill_demo_importer_hide_notice_nonce' ) ) {
371
- wp_die( __( 'Action failed. Please refresh the page and retry.', 'themegrill-demo-importer' ) );
372
- }
373
-
374
- if ( ! current_user_can( 'manage_options' ) ) {
375
- wp_die( __( 'Cheatin&#8217; huh?', 'themegrill-demo-importer' ) );
376
- }
377
-
378
- $hide_notice = sanitize_text_field( $_GET['themegrill-demo-importer-hide-notice'] );
379
-
380
- if ( ! empty( $hide_notice ) && 'reset_notice' == $hide_notice ) {
381
- update_option( 'themegrill_demo_importer_reset_notice', 1 );
382
- }
383
- }
384
- }
385
-
386
- /**
387
- * Reset actions when a reset button is clicked.
388
- */
389
- public function reset_wizard_actions() {
390
- global $wpdb, $current_user;
391
-
392
-
393
- if ( isset( $_GET['themegrill_demo_importer_reset_nonce'], $_GET['do_reset_wordpress'] ) ) {
394
- if ( ! wp_verify_nonce( wp_unslash( $_GET['themegrill_demo_importer_reset_nonce'] ), 'themegrill_demo_importer_reset' ) ) { // WPCS: input var ok, sanitization ok.
395
- wp_die( esc_html__( 'Action failed. Please refresh the page and retry.', 'themegrill-demo-importer' ) );
396
- }
397
-
398
- if ( ! current_user_can( 'manage_options' ) ) {
399
- wp_die( esc_html__( 'You don&#8217;t have permission to do this.', 'themegrill-demo-importer' ) );
400
- }
401
-
402
- require_once ABSPATH . '/wp-admin/includes/upgrade.php';
403
-
404
- $template = get_option( 'template' );
405
- $blogname = get_option( 'blogname' );
406
- $admin_email = get_option( 'admin_email' );
407
- $blog_public = get_option( 'blog_public' );
408
- $footer_rated = get_option( 'themegrill_demo_importer_admin_footer_text_rated' );
409
-
410
- if ( 'admin' !== $current_user->user_login ) {
411
- $user = get_user_by( 'login', 'admin' );
412
- }
413
-
414
- if ( empty( $user->user_level ) || $user->user_level < 10 ) {
415
- $user = $current_user;
416
- }
417
-
418
- // Drop tables.
419
- $drop_tables = $wpdb->get_col( sprintf( "SHOW TABLES LIKE '%s%%'", str_replace( '_', '\_', $wpdb->prefix ) ) );
420
- foreach ( $drop_tables as $table ) {
421
- $wpdb->query( "DROP TABLE IF EXISTS $table" );
422
- }
423
-
424
- // Installs the site.
425
- $result = wp_install( $blogname, $user->user_login, $user->user_email, $blog_public );
426
-
427
- // Updates the user password with a old one.
428
- $wpdb->update(
429
- $wpdb->users,
430
- array(
431
- 'user_pass' => $user->user_pass,
432
- 'user_activation_key' => '',
433
- ),
434
- array( 'ID' => $result['user_id'] )
435
- );
436
-
437
- // Set up the Password change nag.
438
- $default_password_nag = get_user_option( 'default_password_nag', $result['user_id'] );
439
- if ( $default_password_nag ) {
440
- update_user_option( $result['user_id'], 'default_password_nag', false, true );
441
- }
442
-
443
- // Update footer text.
444
- if ( $footer_rated ) {
445
- update_option( 'themegrill_demo_importer_admin_footer_text_rated', $footer_rated );
446
- }
447
-
448
- // Switch current theme.
449
- $current_theme = wp_get_theme( $template );
450
- if ( $current_theme->exists() ) {
451
- switch_theme( $template );
452
- }
453
-
454
- // Activate required plugins.
455
- $required_plugins = (array) apply_filters( 'themegrill_demo_importer_' . $template . '_required_plugins', array() );
456
- if ( is_array( $required_plugins ) ) {
457
- if ( ! in_array( TGDM_PLUGIN_BASENAME, $required_plugins ) ) {
458
- $required_plugins = array_merge( $required_plugins, array( TGDM_PLUGIN_BASENAME ) );
459
- }
460
- activate_plugins( $required_plugins, '', is_network_admin(), true );
461
- }
462
-
463
- // Update the cookies.
464
- wp_clear_auth_cookie();
465
- wp_set_auth_cookie( $result['user_id'] );
466
-
467
- // Redirect to demo importer page to display reset success notice.
468
- wp_safe_redirect( admin_url( 'themes.php?page=demo-importer&browse=all&reset=true' ) );
469
- exit();
470
- }
471
- }
472
-
473
  /**
474
  * Disable the WooCommerce Setup Wizard on `ThemeGrill Demo Importer` page only.
475
  */
@@ -490,6 +441,13 @@ class TG_Demo_Importer {
490
  include_once dirname( __FILE__ ) . '/admin/views/html-admin-page-importer.php';
491
  }
492
 
 
 
 
 
 
 
 
493
  /**
494
  * Check for Zakra Premium theme plan.
495
  *
39
  add_action( 'current_screen', array( $this, 'add_help_tabs' ), 50 );
40
  }
41
 
 
 
 
 
 
42
  // Footer rating text.
43
  add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ), 1 );
44
 
76
  public function includes() {
77
  include_once dirname( __FILE__ ) . '/importers/class-widget-importer.php';
78
  include_once dirname( __FILE__ ) . '/importers/class-customizer-importer.php';
79
+ include_once dirname( __FILE__ ) . '/admin/class-demo-importer-status.php';
80
  }
81
 
82
  /**
118
  */
119
  public function admin_menu() {
120
  add_theme_page( __( 'Demo Importer', 'themegrill-demo-importer' ), __( 'Demo Importer', 'themegrill-demo-importer' ), 'switch_themes', 'demo-importer', array( $this, 'demo_importer' ) );
121
+ add_theme_page( __( 'Demo Importer Status', 'themegrill-demo-importer' ), __( 'Demo Importer Status', 'themegrill-demo-importer' ), 'switch_themes', 'demo-importer-status', array( $this, 'status_menu' ) );
122
  }
123
 
124
  /**
158
  // Register and enqueue admin notice files.
159
  wp_register_style( 'tg-demo-importer-notice', tgdm()->plugin_url() . '/includes/admin/assets/css/notice.css', array(), TGDM_VERSION );
160
  wp_enqueue_style( 'tg-demo-importer-notice' );
161
+ wp_register_script( 'tg-demo-importer-notice', tgdm()->plugin_url() . '/includes/admin/assets/js/notice.js', array( 'jquery' ), TGDM_VERSION, true );
162
+ wp_enqueue_script( 'tg-demo-importer-notice' );
163
 
164
  // Add RTL support for admin styles.
165
  wp_style_add_data( 'tg-demo-importer', 'rtl', 'replace' );
172
 
173
  // Demo Importer appearance page.
174
  if ( 'appearance_page_demo-importer' === $screen_id ) {
175
+ /**
176
+ * Default ThemeGrill Demo Importer update strings.
177
+ */
178
+ $demo_update_settings['l10n'] = array(
179
+ 'importing' => __( 'Importing...', 'themegrill-demo-importer' ),
180
+ 'demoImportingLabel' => _x( 'Importing %s...', 'demo', 'themegrill-demo-importer' ), // no ellipsis
181
+ 'importingMsg' => __( 'Importing... please wait.', 'themegrill-demo-importer' ),
182
+ 'importedMsg' => __( 'Import completed successfully.', 'themegrill-demo-importer' ),
183
+ 'importFailedShort' => __( 'Import Failed!', 'themegrill-demo-importer' ),
184
+ 'importFailed' => __( 'Import failed: %s', 'themegrill-demo-importer' ),
185
+ 'demoImportedLabel' => _x( '%s imported!', 'demo', 'themegrill-demo-importer' ),
186
+ 'demoImportFailedLabel' => _x( '%s import failed', 'demo', 'themegrill-demo-importer' ),
187
+ 'livePreview' => __( 'Live Preview', 'themegrill-demo-importer' ),
188
+ 'livePreviewLabel' => _x( 'Live Preview %s', 'demo', 'themegrill-demo-importer' ),
189
+ 'imported' => __( 'Imported!', 'themegrill-demo-importer' ),
190
+ 'statusTextLink' => '<a href="https://docs.themegrill.com/knowledgebase/demo-import-process-failed/" target="_blank">' . __( 'Try this solution!', 'themegrill-demo-importer' ) . '</a>',
191
+ );
192
+
193
+ /**
194
+ * Update strings from WordPress.
195
+ *
196
+ * Added since WordPress 5.5 has removed them causing demo import issues.
197
+ *
198
+ * @since 1.6.6
199
+ */
200
+ if ( version_compare( $GLOBALS['wp_version'], '5.5', '>=' ) ) {
201
+ $demo_update_settings_wordpress_translations = array(
202
+ /* translators: %s: Search query. */
203
+ 'searchResults' => __( 'Search results for &#8220;%s&#8221;', 'themegrill-demo-importer' ),
204
+ 'searchResultsLabel' => __( 'Search Results', 'themegrill-demo-importer' ),
205
+ 'noPlugins' => __( 'You do not appear to have any plugins available at this time.', 'themegrill-demo-importer' ),
206
+ 'noItemsSelected' => __( 'Please select at least one item to perform this action on.', 'themegrill-demo-importer' ),
207
+ 'updating' => __( 'Updating...', 'themegrill-demo-importer' ), // No ellipsis.
208
+ 'pluginUpdated' => _x( 'Updated!', 'plugin', 'themegrill-demo-importer' ),
209
+ 'themeUpdated' => _x( 'Updated!', 'theme', 'themegrill-demo-importer' ),
210
+ 'update' => __( 'Update', 'themegrill-demo-importer' ),
211
+ 'updateNow' => __( 'Update Now', 'themegrill-demo-importer' ),
212
+ /* translators: %s: Plugin name and version. */
213
+ 'pluginUpdateNowLabel' => _x( 'Update %s now', 'plugin', 'themegrill-demo-importer' ),
214
+ 'updateFailedShort' => __( 'Update Failed!', 'themegrill-demo-importer' ),
215
+ /* translators: %s: Error string for a failed update. */
216
+ 'updateFailed' => __( 'Update Failed: %s', 'themegrill-demo-importer' ),
217
+ /* translators: %s: Plugin name and version. */
218
+ 'pluginUpdatingLabel' => _x( 'Updating %s...', 'plugin', 'themegrill-demo-importer' ), // No ellipsis.
219
+ /* translators: %s: Plugin name and version. */
220
+ 'pluginUpdatedLabel' => _x( '%s updated!', 'plugin', 'themegrill-demo-importer' ),
221
+ /* translators: %s: Plugin name and version. */
222
+ 'pluginUpdateFailedLabel' => _x( '%s update failed', 'plugin', 'themegrill-demo-importer' ),
223
+ /* translators: Accessibility text. */
224
+ 'updatingMsg' => __( 'Updating... please wait.', 'themegrill-demo-importer' ), // No ellipsis.
225
+ /* translators: Accessibility text. */
226
+ 'updatedMsg' => __( 'Update completed successfully.', 'themegrill-demo-importer' ),
227
+ /* translators: Accessibility text. */
228
+ 'updateCancel' => __( 'Update canceled.', 'themegrill-demo-importer' ),
229
+ 'beforeunload' => __( 'Updates may not complete if you navigate away from this page.', 'themegrill-demo-importer' ),
230
+ 'installNow' => __( 'Install Now', 'themegrill-demo-importer' ),
231
+ /* translators: %s: Plugin name. */
232
+ 'pluginInstallNowLabel' => _x( 'Install %s now', 'plugin', 'themegrill-demo-importer' ),
233
+ 'installing' => __( 'Installing...', 'themegrill-demo-importer' ),
234
+ 'pluginInstalled' => _x( 'Installed!', 'plugin', 'themegrill-demo-importer' ),
235
+ 'themeInstalled' => _x( 'Installed!', 'theme', 'themegrill-demo-importer' ),
236
+ 'installFailedShort' => __( 'Installation Failed!', 'themegrill-demo-importer' ),
237
+ /* translators: %s: Error string for a failed installation. */
238
+ 'installFailed' => __( 'Installation failed: %s', 'themegrill-demo-importer' ),
239
+ /* translators: %s: Plugin name and version. */
240
+ 'pluginInstallingLabel' => _x( 'Installing %s...', 'plugin', 'themegrill-demo-importer' ), // No ellipsis.
241
+ /* translators: %s: Theme name and version. */
242
+ 'themeInstallingLabel' => _x( 'Installing %s...', 'theme', 'themegrill-demo-importer' ), // No ellipsis.
243
+ /* translators: %s: Plugin name and version. */
244
+ 'pluginInstalledLabel' => _x( '%s installed!', 'plugin', 'themegrill-demo-importer' ),
245
+ /* translators: %s: Theme name and version. */
246
+ 'themeInstalledLabel' => _x( '%s installed!', 'theme', 'themegrill-demo-importer' ),
247
+ /* translators: %s: Plugin name and version. */
248
+ 'pluginInstallFailedLabel' => _x( '%s installation failed', 'plugin', 'themegrill-demo-importer' ),
249
+ /* translators: %s: Theme name and version. */
250
+ 'themeInstallFailedLabel' => _x( '%s installation failed', 'theme', 'themegrill-demo-importer' ),
251
+ 'installingMsg' => __( 'Installing... please wait.', 'themegrill-demo-importer' ),
252
+ 'installedMsg' => __( 'Installation completed successfully.', 'themegrill-demo-importer' ),
253
+ /* translators: %s: Activation URL. */
254
+ 'importerInstalledMsg' => __( 'Importer installed successfully. <a href="%s">Run importer</a>', 'themegrill-demo-importer' ),
255
+ /* translators: %s: Theme name. */
256
+ 'aysDelete' => __( 'Are you sure you want to delete %s?', 'themegrill-demo-importer' ),
257
+ /* translators: %s: Plugin name. */
258
+ 'aysDeleteUninstall' => __( 'Are you sure you want to delete %s and its data?', 'themegrill-demo-importer' ),
259
+ 'aysBulkDelete' => __( 'Are you sure you want to delete the selected plugins and their data?', 'themegrill-demo-importer' ),
260
+ 'aysBulkDeleteThemes' => __( 'Caution: These themes may be active on other sites in the network. Are you sure you want to proceed?', 'themegrill-demo-importer' ),
261
+ 'deleting' => __( 'Deleting...', 'themegrill-demo-importer' ),
262
+ /* translators: %s: Error string for a failed deletion. */
263
+ 'deleteFailed' => __( 'Deletion failed: %s', 'themegrill-demo-importer' ),
264
+ 'pluginDeleted' => _x( 'Deleted!', 'plugin', 'themegrill-demo-importer' ),
265
+ 'themeDeleted' => _x( 'Deleted!', 'theme', 'themegrill-demo-importer' ),
266
+ 'livePreview' => __( 'Live Preview', 'themegrill-demo-importer' ),
267
+ 'activatePlugin' => is_network_admin() ? __( 'Network Activate', 'themegrill-demo-importer' ) : __( 'Activate', 'themegrill-demo-importer' ),
268
+ 'activateTheme' => is_network_admin() ? __( 'Network Enable', 'themegrill-demo-importer' ) : __( 'Activate', 'themegrill-demo-importer' ),
269
+ /* translators: %s: Plugin name. */
270
+ 'activatePluginLabel' => is_network_admin() ? _x( 'Network Activate %s', 'plugin', 'themegrill-demo-importer' ) : _x( 'Activate %s', 'plugin', 'themegrill-demo-importer' ),
271
+ /* translators: %s: Theme name. */
272
+ 'activateThemeLabel' => is_network_admin() ? _x( 'Network Activate %s', 'theme', 'themegrill-demo-importer' ) : _x( 'Activate %s', 'theme', 'themegrill-demo-importer' ),
273
+ 'activateImporter' => __( 'Run Importer', 'themegrill-demo-importer' ),
274
+ /* translators: %s: Importer name. */
275
+ 'activateImporterLabel' => __( 'Run %s', 'themegrill-demo-importer' ),
276
+ 'unknownError' => __( 'Something went wrong.', 'themegrill-demo-importer' ),
277
+ 'connectionError' => __( 'Connection lost or the server is busy. Please try again later.', 'themegrill-demo-importer' ),
278
+ 'nonceError' => __( 'An error has occurred. Please reload the page and try again.', 'themegrill-demo-importer' ),
279
+ /* translators: %s: Number of plugins. */
280
+ 'pluginsFound' => __( 'Number of plugins found: %d', 'themegrill-demo-importer' ),
281
+ 'noPluginsFound' => __( 'No plugins found. Try a different search.', 'themegrill-demo-importer' ),
282
+ );
283
+
284
+ $demo_update_settings['l10n'] = array_merge( $demo_update_settings['l10n'], $demo_update_settings_wordpress_translations );
285
+ }
286
+
287
  wp_enqueue_style( 'tg-demo-importer' );
288
  wp_enqueue_script( 'tg-demo-importer' );
289
  wp_localize_script(
290
  'tg-demo-updates',
291
  '_demoUpdatesSettings',
292
+ $demo_update_settings
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
  );
294
  wp_localize_script(
295
  'tg-demo-importer',
301
  'ajaxUrl' => admin_url( 'admin-ajax.php' ),
302
  'adminUrl' => parse_url( self_admin_url(), PHP_URL_PATH ),
303
  'suggestURI' => apply_filters( 'themegrill_demo_importer_suggest_new', 'https://themegrill.com/contact/' ),
 
304
  'confirmImport' => sprintf(
305
 
306
  __( 'Importing demo data will ensure that your site will look similar as theme demo. It makes you easy to modify the content instead of creating them from scratch. Also, consider before importing the demo: %1$s %2$s %3$s %4$s %5$s %6$s', 'themegrill-demo-importer' ),
374
  * Add Contextual help tabs.
375
  */
376
  public function add_help_tabs() {
377
+ $screen = get_current_screen();
 
 
 
 
 
378
 
379
  if ( ! $screen || ! in_array( $screen->id, array( 'appearance_page_demo-importer' ) ) ) {
380
  return;
411
  )
412
  );
413
 
 
 
 
 
 
 
 
 
 
 
 
414
  $screen->set_help_sidebar(
415
  '<p><strong>' . __( 'For more information:', 'themegrill-demo-importer' ) . '</strong></p>' .
416
  '<p><a href="' . 'https://themegrill.com/demo-importer/' . '" target="_blank">' . __( 'About Demo Importer', 'themegrill-demo-importer' ) . '</a></p>' .
421
  );
422
  }
423
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
424
  /**
425
  * Disable the WooCommerce Setup Wizard on `ThemeGrill Demo Importer` page only.
426
  */
441
  include_once dirname( __FILE__ ) . '/admin/views/html-admin-page-importer.php';
442
  }
443
 
444
+ /**
445
+ * Demo Importer status page output.
446
+ */
447
+ public function status_menu() {
448
+ include_once dirname( __FILE__ ) . '/admin/views/html-admin-page-status.php';
449
+ }
450
+
451
  /**
452
  * Check for Zakra Premium theme plan.
453
  *
includes/class-themegrill-demo-importer.php CHANGED
@@ -20,7 +20,7 @@ final class ThemeGrill_Demo_Importer {
20
  *
21
  * @var string
22
  */
23
- public $version = '1.6.5';
24
 
25
  /**
26
  * Theme single instance of this class.
20
  *
21
  * @var string
22
  */
23
+ public $version = '1.6.6';
24
 
25
  /**
26
  * Theme single instance of this class.
includes/functions-demo-update.php CHANGED
@@ -17,8 +17,7 @@ defined( 'ABSPATH' ) || exit;
17
  */
18
  function tg_update_demo_importer_options() {
19
  $migrate_options = array(
20
- 'themegrill_demo_imported_id' => 'themegrill_demo_importer_activated_id',
21
- 'themegrill_demo_imported_notice_dismiss' => 'themegrill_demo_importer_reset_notice',
22
  );
23
 
24
  foreach ( $migrate_options as $old_option => $new_option ) {
17
  */
18
  function tg_update_demo_importer_options() {
19
  $migrate_options = array(
20
+ 'themegrill_demo_imported_id' => 'themegrill_demo_importer_activated_id',
 
21
  );
22
 
23
  foreach ( $migrate_options as $old_option => $new_option ) {
languages/themegrill-demo-importer.pot CHANGED
@@ -2,10 +2,10 @@
2
  # This file is distributed under the GPLv3 or later.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: ThemeGrill Demo Importer 1.6.5\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://github.com/themegrill/themegrill-demo-importer/issues\n"
8
- "POT-Creation-Date: 2020-07-23 09:12:51+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
@@ -14,6 +14,22 @@ msgstr ""
14
  "Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
15
  "X-Generator: grunt-wp-i18n 1.0.3\n"
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  #: includes/admin/class-demo-pack-upgrader.php:35
18
  msgid "Install package not available."
19
  msgstr ""
@@ -67,8 +83,7 @@ msgid "Deactivate"
67
  msgstr ""
68
 
69
  #: includes/admin/class-plugin-deactivate-notice.php:78
70
- #: includes/class-demo-importer.php:371 includes/class-demo-importer.php:395
71
- #: includes/class-demo-importer.php:1429
72
  msgid "Action failed. Please refresh the page and retry."
73
  msgstr ""
74
 
@@ -96,8 +111,27 @@ msgstr ""
96
  msgid "Got plugin support question?"
97
  msgstr ""
98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  #: includes/admin/views/html-admin-page-importer.php:12
100
- #: includes/class-demo-importer.php:124
101
  #: includes/class-themegrill-demo-importer.php:236
102
  msgid "Demo Importer"
103
  msgstr ""
@@ -133,7 +167,7 @@ msgid "Themes list"
133
  msgstr ""
134
 
135
  #: includes/admin/views/html-admin-page-importer.php:67
136
- #: includes/class-demo-importer.php:235
137
  msgid "No demos found. Try a different search."
138
  msgstr ""
139
 
@@ -149,7 +183,10 @@ msgstr ""
149
 
150
  #: includes/admin/views/html-admin-page-importer.php:91
151
  #: includes/admin/views/html-admin-page-importer.php:172
 
 
152
  #. translators: %s: Demo author name
 
153
  msgid "By %s"
154
  msgstr ""
155
 
@@ -161,7 +198,7 @@ msgstr ""
161
  #: includes/admin/views/html-admin-page-importer.php:109
162
  #: includes/admin/views/html-admin-page-importer.php:150
163
  #: includes/admin/views/html-admin-page-importer.php:254
164
- #: includes/class-demo-importer.php:191
165
  msgid "Live Preview"
166
  msgstr ""
167
 
@@ -177,6 +214,7 @@ msgstr ""
177
  #: includes/admin/views/html-admin-page-importer.php:116
178
  #: includes/admin/views/html-admin-page-importer.php:147
179
  #: includes/admin/views/html-admin-page-importer.php:251
 
180
  msgid "Update"
181
  msgstr ""
182
 
@@ -224,7 +262,7 @@ msgid "No plugins are required for this demo."
224
  msgstr ""
225
 
226
  #: includes/admin/views/html-admin-page-importer.php:260
227
- #: includes/class-demo-importer.php:236
228
  msgid "Collapse Sidebar"
229
  msgstr ""
230
 
@@ -244,61 +282,404 @@ msgstr ""
244
  msgid "Enter mobile preview mode"
245
  msgstr ""
246
 
247
- #: includes/admin/views/html-notice-reset-wizard-success.php:14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  msgid ""
249
- "WordPress has been reset back to defaults. The user "
250
- "<strong>\"%1$s\"</strong> was recreated with its previous password."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
251
  msgstr ""
252
 
253
- #: includes/admin/views/html-notice-reset-wizard.php:17
254
  msgid ""
255
- "<strong>Reset Wizard</strong> &#8211; If you need to reset the WordPress "
256
- "back to default again :)"
 
257
  msgstr ""
258
 
259
- #: includes/admin/views/html-notice-reset-wizard.php:18
260
- msgid "Run the Reset Wizard"
261
  msgstr ""
262
 
263
- #: includes/admin/views/html-notice-reset-wizard.php:18
264
- msgid "Hide this notice"
265
  msgstr ""
266
 
267
- #: includes/class-demo-importer.php:183
268
  msgid "Importing..."
269
  msgstr ""
270
 
271
- #: includes/class-demo-importer.php:185
272
  msgid "Importing... please wait."
273
  msgstr ""
274
 
275
- #: includes/class-demo-importer.php:186
276
  msgid "Import completed successfully."
277
  msgstr ""
278
 
279
- #: includes/class-demo-importer.php:187
280
  msgid "Import Failed!"
281
  msgstr ""
282
 
283
- #: includes/class-demo-importer.php:188
284
  msgid "Import failed: %s"
285
  msgstr ""
286
 
287
- #: includes/class-demo-importer.php:193
288
  msgid "Imported!"
289
  msgstr ""
290
 
291
- #: includes/class-demo-importer.php:194
292
  msgid "Try this solution!"
293
  msgstr ""
294
 
295
- #: includes/class-demo-importer.php:208
296
- msgid ""
297
- "It is strongly recommended that you backup your database before proceeding. "
298
- "Are you sure you wish to run the reset wizard now?"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
299
  msgstr ""
300
 
301
  #: includes/class-demo-importer.php:211
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
  msgid ""
303
  "Importing demo data will ensure that your site will look similar as theme "
304
  "demo. It makes you easy to modify the content instead of creating them from "
@@ -306,47 +687,47 @@ msgid ""
306
  "%6$s"
307
  msgstr ""
308
 
309
- #: includes/class-demo-importer.php:213
310
  msgid ""
311
  "Importing the demo on the site if you have already added the content is "
312
  "highly discouraged."
313
  msgstr ""
314
 
315
- #: includes/class-demo-importer.php:215
316
  msgid ""
317
  "You need to import demo on fresh WordPress install to exactly replicate the "
318
  "theme demo."
319
  msgstr ""
320
 
321
- #: includes/class-demo-importer.php:217
322
  msgid ""
323
  "It will install the required plugins as well as activate them for "
324
  "installing the required theme demo within your site."
325
  msgstr ""
326
 
327
- #: includes/class-demo-importer.php:219
328
  msgid "Copyright images will get replaced with other placeholder images."
329
  msgstr ""
330
 
331
- #: includes/class-demo-importer.php:221
332
  msgid ""
333
  "None of the posts, pages, attachments or any other data already existing in "
334
  "your site will be deleted or modified."
335
  msgstr ""
336
 
337
- #: includes/class-demo-importer.php:223
338
  msgid "It will take some time to import the theme demo."
339
  msgstr ""
340
 
341
- #: includes/class-demo-importer.php:228
342
  msgid "Search Demos"
343
  msgstr ""
344
 
345
- #: includes/class-demo-importer.php:229
346
  msgid "Search demos..."
347
  msgstr ""
348
 
349
- #: includes/class-demo-importer.php:231
350
  #. translators: %s: support forums URL
351
  msgid ""
352
  "An unexpected error occurred. Something may be wrong with ThemeGrill demo "
@@ -354,32 +735,32 @@ msgid ""
354
  "the <a href=\"%s\">support forums</a>."
355
  msgstr ""
356
 
357
- #: includes/class-demo-importer.php:232
358
  msgid "Try Again"
359
  msgstr ""
360
 
361
- #: includes/class-demo-importer.php:233
362
  msgid "Please suggest us!"
363
  msgstr ""
364
 
365
- #: includes/class-demo-importer.php:234
366
  msgid "Number of Demos found: %d"
367
  msgstr ""
368
 
369
- #: includes/class-demo-importer.php:237
370
  msgid "Expand Sidebar"
371
  msgstr ""
372
 
373
- #: includes/class-demo-importer.php:239
374
  #. translators: accessibility text
375
  msgid "Select one or more Demo features to filter by"
376
  msgstr ""
377
 
378
- #: includes/class-demo-importer.php:240
379
  msgid "Confirm!"
380
  msgstr ""
381
 
382
- #: includes/class-demo-importer.php:266
383
  #. translators: 1: ThemeGrill Demo Importer 2: five stars
384
  msgid "If you like %1$s please leave us a %2$s rating. A huge thanks in advance!"
385
  msgstr ""
@@ -388,45 +769,45 @@ msgstr ""
388
  msgid "ThemeGrill Demo Importer"
389
  msgstr ""
390
 
391
- #: includes/class-demo-importer.php:268
392
  msgid "Thanks :)"
393
  msgstr ""
394
 
395
- #: includes/class-demo-importer.php:271
396
  msgid "Thank you for importing with ThemeGrill Demo Importer."
397
  msgstr ""
398
 
399
- #: includes/class-demo-importer.php:296 includes/class-demo-importer.php:298
400
  msgid "Help &amp; Support"
401
  msgstr ""
402
 
403
- #: includes/class-demo-importer.php:300
404
  msgid ""
405
  "Should you need help understanding, using, or extending ThemeGrill Demo "
406
  "Importer, <a href=\"%s\">please read our documentation</a>. You will find "
407
  "all kinds of resources including snippets, tutorials and much more."
408
  msgstr ""
409
 
410
- #: includes/class-demo-importer.php:304
411
  msgid ""
412
  "For further assistance with ThemeGrill Demo Importer core you can use the "
413
  "<a href=\"%1$s\">community forum</a>. If you need help with premium themes "
414
  "sold by ThemeGrill, please <a href=\"%2$s\">use our free support forum</a>."
415
  msgstr ""
416
 
417
- #: includes/class-demo-importer.php:308
418
  msgid "Community forum"
419
  msgstr ""
420
 
421
- #: includes/class-demo-importer.php:308
422
  msgid "ThemeGrill Support"
423
  msgstr ""
424
 
425
- #: includes/class-demo-importer.php:315 includes/class-demo-importer.php:317
426
  msgid "Found a bug?"
427
  msgstr ""
428
 
429
- #: includes/class-demo-importer.php:318
430
  msgid ""
431
  "If you find a bug within ThemeGrill Demo Importer you can create a ticket "
432
  "via <a href=\"%1$s\">Github issues</a>. Ensure you read the <a "
@@ -434,86 +815,65 @@ msgid ""
434
  "help us solve your issue, please be as descriptive as possible."
435
  msgstr ""
436
 
437
- #: includes/class-demo-importer.php:319
438
  msgid "Report a bug"
439
  msgstr ""
440
 
441
- #: includes/class-demo-importer.php:327 includes/class-demo-importer.php:329
442
- #: includes/class-demo-importer.php:331
443
- msgid "Reset wizard"
444
- msgstr ""
445
-
446
- #: includes/class-demo-importer.php:330
447
- msgid ""
448
- "If you need to reset the WordPress back to default again, please click on "
449
- "the button below."
450
- msgstr ""
451
-
452
- #: includes/class-demo-importer.php:336
453
  msgid "For more information:"
454
  msgstr ""
455
 
456
- #: includes/class-demo-importer.php:337
457
  msgid "About Demo Importer"
458
  msgstr ""
459
 
460
- #: includes/class-demo-importer.php:338
461
  msgid "WordPress.org project"
462
  msgstr ""
463
 
464
- #: includes/class-demo-importer.php:339
465
  msgid "Github project"
466
  msgstr ""
467
 
468
- #: includes/class-demo-importer.php:340
469
  msgid "Official themes"
470
  msgstr ""
471
 
472
- #: includes/class-demo-importer.php:341
473
  msgid "Official plugins"
474
  msgstr ""
475
 
476
- #: includes/class-demo-importer.php:375
477
- #: includes/class-themegrill-demo-importer.php:50
478
- #: includes/class-themegrill-demo-importer.php:59
479
- msgid "Cheatin&#8217; huh?"
480
- msgstr ""
481
-
482
- #: includes/class-demo-importer.php:399
483
- msgid "You don&#8217;t have permission to do this."
484
- msgstr ""
485
-
486
- #: includes/class-demo-importer.php:624 includes/class-demo-importer.php:685
487
  msgid "This demo requires %1$s version of %2$s theme to get imported"
488
  msgstr ""
489
 
490
- #: includes/class-demo-importer.php:630 includes/class-demo-importer.php:658
491
  msgid ""
492
  "This demo requires %1$s version of %2$s theme and %3$s version of %4$s as "
493
  "well as %5$s version of %6$s plugins to get imported"
494
  msgstr ""
495
 
496
- #: includes/class-demo-importer.php:634 includes/class-demo-importer.php:644
497
- #: includes/class-demo-importer.php:650 includes/class-demo-importer.php:662
498
  msgid "Zakra Pro"
499
  msgstr ""
500
 
501
- #: includes/class-demo-importer.php:636 includes/class-demo-importer.php:664
502
- #: includes/class-demo-importer.php:672 includes/class-demo-importer.php:678
503
  msgid "Companion Elementor"
504
  msgstr ""
505
 
506
- #: includes/class-demo-importer.php:640 includes/class-demo-importer.php:668
507
  msgid ""
508
  "This demo requires %1$s version of %2$s theme and %3$s version of %4$s "
509
  "plugin to get imported"
510
  msgstr ""
511
 
512
- #: includes/class-demo-importer.php:648 includes/class-demo-importer.php:676
513
  msgid "This demo requires %1$s version of %2$s plugin to get imported"
514
  msgstr ""
515
 
516
- #: includes/class-demo-importer.php:696
517
  msgid "%s Pro"
518
  msgstr ""
519
 
@@ -521,31 +881,36 @@ msgstr ""
521
  msgid "ThemeGrill"
522
  msgstr ""
523
 
524
- #: includes/class-demo-importer.php:760
525
  msgid "No demo specified."
526
  msgstr ""
527
 
528
- #: includes/class-demo-importer.php:776
529
  msgid "Sorry, you are not allowed to import content."
530
  msgstr ""
531
 
532
- #: includes/class-demo-importer.php:808
533
  #: includes/functions-demo-importer.php:110
534
  msgid "Unable to connect to the filesystem. Please confirm your credentials."
535
  msgstr ""
536
 
537
- #: includes/class-demo-importer.php:891
538
  msgid "The XML file dummy content is missing."
539
  msgstr ""
540
 
541
- #: includes/class-demo-importer.php:982
542
  msgid "The DAT file customizer data is missing."
543
  msgstr ""
544
 
545
- #: includes/class-demo-importer.php:1007
546
  msgid "The WIE file widget content is missing."
547
  msgstr ""
548
 
 
 
 
 
 
549
  #: includes/class-themegrill-demo-importer.php:236
550
  msgid "View Demo Importer"
551
  msgstr ""
@@ -892,22 +1257,22 @@ msgctxt "demo"
892
  msgid "Imported"
893
  msgstr ""
894
 
895
- #: includes/class-demo-importer.php:184
896
  msgctxt "demo"
897
  msgid "Importing %s..."
898
  msgstr ""
899
 
900
- #: includes/class-demo-importer.php:189
901
  msgctxt "demo"
902
  msgid "%s imported!"
903
  msgstr ""
904
 
905
- #: includes/class-demo-importer.php:190
906
  msgctxt "demo"
907
  msgid "%s import failed"
908
  msgstr ""
909
 
910
- #: includes/class-demo-importer.php:192
911
  msgctxt "demo"
912
  msgid "Live Preview %s"
913
  msgstr ""
@@ -922,7 +1287,125 @@ msgctxt "Button label for a demo"
922
  msgid "Next"
923
  msgstr ""
924
 
925
- #: includes/class-demo-importer.php:139
926
  msgctxt "Admin menu name"
927
  msgid "Demo Importer"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
928
  msgstr ""
2
  # This file is distributed under the GPLv3 or later.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: ThemeGrill Demo Importer 1.6.6\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://github.com/themegrill/themegrill-demo-importer/issues\n"
8
+ "POT-Creation-Date: 2020-08-06 07:44:05+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
14
  "Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
15
  "X-Generator: grunt-wp-i18n 1.0.3\n"
16
 
17
+ #: includes/admin/class-demo-importer-status.php:41
18
+ msgid "All Fine"
19
+ msgstr ""
20
+
21
+ #: includes/admin/class-demo-importer-status.php:43
22
+ msgid "There are some write permission errors on your site."
23
+ msgstr ""
24
+
25
+ #: includes/admin/class-demo-importer-status.php:60
26
+ msgid "There is a connection issue of your site to our demo pack services."
27
+ msgstr ""
28
+
29
+ #: includes/admin/class-demo-importer-status.php:62
30
+ msgid "Connected"
31
+ msgstr ""
32
+
33
  #: includes/admin/class-demo-pack-upgrader.php:35
34
  msgid "Install package not available."
35
  msgstr ""
83
  msgstr ""
84
 
85
  #: includes/admin/class-plugin-deactivate-notice.php:78
86
+ #: includes/class-demo-importer.php:1387
 
87
  msgid "Action failed. Please refresh the page and retry."
88
  msgstr ""
89
 
111
  msgid "Got plugin support question?"
112
  msgstr ""
113
 
114
+ #: includes/admin/views/html-admin-page-demo-import-faqs.php:11
115
+ #: includes/admin/views/html-admin-page-status.php:14
116
+ msgid "FAQ's"
117
+ msgstr ""
118
+
119
+ #: includes/admin/views/html-admin-page-demo-import-faqs.php:28
120
+ msgid "Error fetching the FAQ's"
121
+ msgstr ""
122
+
123
+ #: includes/admin/views/html-admin-page-demo-import-faqs.php:36
124
+ msgid ""
125
+ "An error has occurred, which probably means our server is down. Try again "
126
+ "later."
127
+ msgstr ""
128
+
129
+ #: includes/admin/views/html-admin-page-demo-import-faqs.php:62
130
+ msgid "View More FAQ's"
131
+ msgstr ""
132
+
133
  #: includes/admin/views/html-admin-page-importer.php:12
134
+ #: includes/class-demo-importer.php:120
135
  #: includes/class-themegrill-demo-importer.php:236
136
  msgid "Demo Importer"
137
  msgstr ""
167
  msgstr ""
168
 
169
  #: includes/admin/views/html-admin-page-importer.php:67
170
+ #: includes/class-demo-importer.php:330
171
  msgid "No demos found. Try a different search."
172
  msgstr ""
173
 
183
 
184
  #: includes/admin/views/html-admin-page-importer.php:91
185
  #: includes/admin/views/html-admin-page-importer.php:172
186
+ #: includes/admin/views/html-admin-page-system-status-report.php:287
187
+ #: includes/admin/views/html-admin-page-system-status-report.php:334
188
  #. translators: %s: Demo author name
189
+ #. translators: 1. Plugin author name.
190
  msgid "By %s"
191
  msgstr ""
192
 
198
  #: includes/admin/views/html-admin-page-importer.php:109
199
  #: includes/admin/views/html-admin-page-importer.php:150
200
  #: includes/admin/views/html-admin-page-importer.php:254
201
+ #: includes/class-demo-importer.php:187 includes/class-demo-importer.php:266
202
  msgid "Live Preview"
203
  msgstr ""
204
 
214
  #: includes/admin/views/html-admin-page-importer.php:116
215
  #: includes/admin/views/html-admin-page-importer.php:147
216
  #: includes/admin/views/html-admin-page-importer.php:251
217
+ #: includes/class-demo-importer.php:210
218
  msgid "Update"
219
  msgstr ""
220
 
262
  msgstr ""
263
 
264
  #: includes/admin/views/html-admin-page-importer.php:260
265
+ #: includes/class-demo-importer.php:331
266
  msgid "Collapse Sidebar"
267
  msgstr ""
268
 
282
  msgid "Enter mobile preview mode"
283
  msgstr ""
284
 
285
+ #: includes/admin/views/html-admin-page-status.php:13
286
+ #: includes/admin/views/html-admin-page-system-status-report.php:16
287
+ msgid "System Status"
288
+ msgstr ""
289
+
290
+ #: includes/admin/views/html-admin-page-system-status-report.php:21
291
+ msgid "System Info"
292
+ msgstr ""
293
+
294
+ #: includes/admin/views/html-admin-page-system-status-report.php:28
295
+ msgid "Operating System:"
296
+ msgstr ""
297
+
298
+ #: includes/admin/views/html-admin-page-system-status-report.php:33
299
+ msgid "Server:"
300
+ msgstr ""
301
+
302
+ #: includes/admin/views/html-admin-page-system-status-report.php:38
303
+ msgid "MySQL Version:"
304
+ msgstr ""
305
+
306
+ #: includes/admin/views/html-admin-page-system-status-report.php:43
307
+ msgid "PHP Version:"
308
+ msgstr ""
309
+
310
+ #: includes/admin/views/html-admin-page-system-status-report.php:48
311
+ msgid "PHP Max Execution Time:"
312
+ msgstr ""
313
+
314
+ #: includes/admin/views/html-admin-page-system-status-report.php:53
315
+ msgid "PHP Max Upload Size:"
316
+ msgstr ""
317
+
318
+ #: includes/admin/views/html-admin-page-system-status-report.php:58
319
+ msgid "PHP Post Max Size:"
320
+ msgstr ""
321
+
322
+ #: includes/admin/views/html-admin-page-system-status-report.php:63
323
+ msgid "PHP Max Input Vars:"
324
+ msgstr ""
325
+
326
+ #: includes/admin/views/html-admin-page-system-status-report.php:68
327
+ msgid "PHP Memory Limit:"
328
+ msgstr ""
329
+
330
+ #: includes/admin/views/html-admin-page-system-status-report.php:73
331
+ msgid "cURL Installed:"
332
+ msgstr ""
333
+
334
+ #: includes/admin/views/html-admin-page-system-status-report.php:74
335
+ #: includes/admin/views/html-admin-page-system-status-report.php:86
336
+ #: includes/admin/views/html-admin-page-system-status-report.php:136
337
+ #: includes/admin/views/html-admin-page-system-status-report.php:166
338
+ #: includes/admin/views/html-admin-page-system-status-report.php:171
339
+ #: includes/admin/views/html-admin-page-system-status-report.php:214
340
+ msgid "Yes"
341
+ msgstr ""
342
+
343
+ #: includes/admin/views/html-admin-page-system-status-report.php:74
344
+ #: includes/admin/views/html-admin-page-system-status-report.php:86
345
+ #: includes/admin/views/html-admin-page-system-status-report.php:136
346
+ #: includes/admin/views/html-admin-page-system-status-report.php:166
347
+ #: includes/admin/views/html-admin-page-system-status-report.php:171
348
+ #: includes/admin/views/html-admin-page-system-status-report.php:214
349
+ msgid "No"
350
+ msgstr ""
351
+
352
+ #: includes/admin/views/html-admin-page-system-status-report.php:79
353
+ msgid "cURL version:"
354
+ msgstr ""
355
+
356
+ #: includes/admin/views/html-admin-page-system-status-report.php:85
357
+ msgid "GD Installed:"
358
+ msgstr ""
359
+
360
+ #: includes/admin/views/html-admin-page-system-status-report.php:91
361
+ msgid "GD version:"
362
+ msgstr ""
363
+
364
+ #: includes/admin/views/html-admin-page-system-status-report.php:97
365
+ msgid "Write Permission:"
366
+ msgstr ""
367
+
368
+ #: includes/admin/views/html-admin-page-system-status-report.php:102
369
+ msgid "Demo Pack Server Connection:"
370
+ msgstr ""
371
+
372
+ #: includes/admin/views/html-admin-page-system-status-report.php:113
373
+ msgid "WordPress Info"
374
+ msgstr ""
375
+
376
+ #: includes/admin/views/html-admin-page-system-status-report.php:120
377
+ #: includes/admin/views/html-admin-page-system-status-report.php:198
378
+ msgid "Version:"
379
+ msgstr ""
380
+
381
+ #: includes/admin/views/html-admin-page-system-status-report.php:125
382
+ msgid "Site URL:"
383
+ msgstr ""
384
+
385
+ #: includes/admin/views/html-admin-page-system-status-report.php:130
386
+ msgid "Home URL:"
387
+ msgstr ""
388
+
389
+ #: includes/admin/views/html-admin-page-system-status-report.php:135
390
+ msgid "Multisite:"
391
+ msgstr ""
392
+
393
+ #: includes/admin/views/html-admin-page-system-status-report.php:140
394
+ msgid "Max Upload Size:"
395
+ msgstr ""
396
+
397
+ #: includes/admin/views/html-admin-page-system-status-report.php:145
398
+ msgid "Memory Limit:"
399
+ msgstr ""
400
+
401
+ #: includes/admin/views/html-admin-page-system-status-report.php:150
402
+ msgid "Max Memory Limit:"
403
+ msgstr ""
404
+
405
+ #: includes/admin/views/html-admin-page-system-status-report.php:155
406
+ msgid "Permalink Structure:"
407
+ msgstr ""
408
+
409
+ #: includes/admin/views/html-admin-page-system-status-report.php:156
410
+ msgid "Plain"
411
+ msgstr ""
412
+
413
+ #: includes/admin/views/html-admin-page-system-status-report.php:160
414
+ msgid "Language:"
415
+ msgstr ""
416
+
417
+ #: includes/admin/views/html-admin-page-system-status-report.php:165
418
+ msgid "Debug Mode Enabled:"
419
+ msgstr ""
420
+
421
+ #: includes/admin/views/html-admin-page-system-status-report.php:170
422
+ msgid "Script Debug Mode Enabled:"
423
+ msgstr ""
424
+
425
+ #: includes/admin/views/html-admin-page-system-status-report.php:175
426
+ msgid "ThemeGrill Demo Importer Version:"
427
+ msgstr ""
428
+
429
+ #: includes/admin/views/html-admin-page-system-status-report.php:186
430
+ msgid "Theme Info"
431
+ msgstr ""
432
+
433
+ #: includes/admin/views/html-admin-page-system-status-report.php:193
434
+ msgid "Name:"
435
+ msgstr ""
436
+
437
+ #: includes/admin/views/html-admin-page-system-status-report.php:203
438
+ msgid "Author:"
439
+ msgstr ""
440
+
441
+ #: includes/admin/views/html-admin-page-system-status-report.php:208
442
+ msgid "Author URL:"
443
+ msgstr ""
444
+
445
+ #: includes/admin/views/html-admin-page-system-status-report.php:213
446
+ msgid "Child Theme:"
447
+ msgstr ""
448
+
449
+ #: includes/admin/views/html-admin-page-system-status-report.php:220
450
+ #. translators: 1. Opening anchor tag for ThemeGrill Child Tutorial, 2. Closing
451
+ #. the anchor tag
452
  msgid ""
453
+ "If you want to modify the features of the theme then, we recommend you to "
454
+ "use %1$s child theme. %2$s"
455
+ msgstr ""
456
+
457
+ #: includes/admin/views/html-admin-page-system-status-report.php:230
458
+ msgid "Parent Theme Name:"
459
+ msgstr ""
460
+
461
+ #: includes/admin/views/html-admin-page-system-status-report.php:235
462
+ msgid "Parent Theme Version:"
463
+ msgstr ""
464
+
465
+ #: includes/admin/views/html-admin-page-system-status-report.php:240
466
+ msgid "Parent Theme Author:"
467
+ msgstr ""
468
+
469
+ #: includes/admin/views/html-admin-page-system-status-report.php:245
470
+ msgid "Parent Theme Author URL:"
471
+ msgstr ""
472
+
473
+ #: includes/admin/views/html-admin-page-system-status-report.php:257
474
+ msgid "Active Plugins"
475
+ msgstr ""
476
+
477
+ #: includes/admin/views/html-admin-page-system-status-report.php:304
478
+ msgid "Inactive Plugins"
479
+ msgstr ""
480
+
481
+ #: includes/admin/views/html-admin-page-system-status-report.php:348
482
+ msgid "Copy &amp; Paste"
483
  msgstr ""
484
 
485
+ #: includes/admin/views/html-admin-page-system-status-report.php:351
486
  msgid ""
487
+ "While creating support request, please provide us the details generated "
488
+ "below within the support request. It might help us to tackle on the issue "
489
+ "more conviniently."
490
  msgstr ""
491
 
492
+ #: includes/admin/views/html-admin-page-system-status-report.php:358
493
+ msgid "Copy System Status"
494
  msgstr ""
495
 
496
+ #: includes/class-demo-importer.php:121
497
+ msgid "Demo Importer Status"
498
  msgstr ""
499
 
500
+ #: includes/class-demo-importer.php:179
501
  msgid "Importing..."
502
  msgstr ""
503
 
504
+ #: includes/class-demo-importer.php:181
505
  msgid "Importing... please wait."
506
  msgstr ""
507
 
508
+ #: includes/class-demo-importer.php:182
509
  msgid "Import completed successfully."
510
  msgstr ""
511
 
512
+ #: includes/class-demo-importer.php:183
513
  msgid "Import Failed!"
514
  msgstr ""
515
 
516
+ #: includes/class-demo-importer.php:184
517
  msgid "Import failed: %s"
518
  msgstr ""
519
 
520
+ #: includes/class-demo-importer.php:189
521
  msgid "Imported!"
522
  msgstr ""
523
 
524
+ #: includes/class-demo-importer.php:190
525
  msgid "Try this solution!"
526
  msgstr ""
527
 
528
+ #: includes/class-demo-importer.php:203
529
+ #. translators: %s: Search query.
530
+ msgid "Search results for &#8220;%s&#8221;"
531
+ msgstr ""
532
+
533
+ #: includes/class-demo-importer.php:204
534
+ msgid "Search Results"
535
+ msgstr ""
536
+
537
+ #: includes/class-demo-importer.php:205
538
+ msgid "You do not appear to have any plugins available at this time."
539
+ msgstr ""
540
+
541
+ #: includes/class-demo-importer.php:206
542
+ msgid "Please select at least one item to perform this action on."
543
+ msgstr ""
544
+
545
+ #: includes/class-demo-importer.php:207
546
+ msgid "Updating..."
547
  msgstr ""
548
 
549
  #: includes/class-demo-importer.php:211
550
+ msgid "Update Now"
551
+ msgstr ""
552
+
553
+ #: includes/class-demo-importer.php:214
554
+ msgid "Update Failed!"
555
+ msgstr ""
556
+
557
+ #: includes/class-demo-importer.php:216
558
+ #. translators: %s: Error string for a failed update.
559
+ msgid "Update Failed: %s"
560
+ msgstr ""
561
+
562
+ #: includes/class-demo-importer.php:224
563
+ #. translators: Accessibility text.
564
+ msgid "Updating... please wait."
565
+ msgstr ""
566
+
567
+ #: includes/class-demo-importer.php:226
568
+ #. translators: Accessibility text.
569
+ msgid "Update completed successfully."
570
+ msgstr ""
571
+
572
+ #: includes/class-demo-importer.php:228
573
+ #. translators: Accessibility text.
574
+ msgid "Update canceled."
575
+ msgstr ""
576
+
577
+ #: includes/class-demo-importer.php:229
578
+ msgid "Updates may not complete if you navigate away from this page."
579
+ msgstr ""
580
+
581
+ #: includes/class-demo-importer.php:230
582
+ msgid "Install Now"
583
+ msgstr ""
584
+
585
+ #: includes/class-demo-importer.php:233
586
+ msgid "Installing..."
587
+ msgstr ""
588
+
589
+ #: includes/class-demo-importer.php:236
590
+ msgid "Installation Failed!"
591
+ msgstr ""
592
+
593
+ #: includes/class-demo-importer.php:238
594
+ #. translators: %s: Error string for a failed installation.
595
+ msgid "Installation failed: %s"
596
+ msgstr ""
597
+
598
+ #: includes/class-demo-importer.php:251
599
+ msgid "Installing... please wait."
600
+ msgstr ""
601
+
602
+ #: includes/class-demo-importer.php:252
603
+ msgid "Installation completed successfully."
604
+ msgstr ""
605
+
606
+ #: includes/class-demo-importer.php:254
607
+ #. translators: %s: Activation URL.
608
+ msgid "Importer installed successfully. <a href=\"%s\">Run importer</a>"
609
+ msgstr ""
610
+
611
+ #: includes/class-demo-importer.php:256
612
+ #. translators: %s: Theme name.
613
+ msgid "Are you sure you want to delete %s?"
614
+ msgstr ""
615
+
616
+ #: includes/class-demo-importer.php:258
617
+ #. translators: %s: Plugin name.
618
+ msgid "Are you sure you want to delete %s and its data?"
619
+ msgstr ""
620
+
621
+ #: includes/class-demo-importer.php:259
622
+ msgid "Are you sure you want to delete the selected plugins and their data?"
623
+ msgstr ""
624
+
625
+ #: includes/class-demo-importer.php:260
626
+ msgid ""
627
+ "Caution: These themes may be active on other sites in the network. Are you "
628
+ "sure you want to proceed?"
629
+ msgstr ""
630
+
631
+ #: includes/class-demo-importer.php:261
632
+ msgid "Deleting..."
633
+ msgstr ""
634
+
635
+ #: includes/class-demo-importer.php:263
636
+ #. translators: %s: Error string for a failed deletion.
637
+ msgid "Deletion failed: %s"
638
+ msgstr ""
639
+
640
+ #: includes/class-demo-importer.php:267
641
+ msgid "Network Activate"
642
+ msgstr ""
643
+
644
+ #: includes/class-demo-importer.php:267 includes/class-demo-importer.php:268
645
+ msgid "Activate"
646
+ msgstr ""
647
+
648
+ #: includes/class-demo-importer.php:268
649
+ msgid "Network Enable"
650
+ msgstr ""
651
+
652
+ #: includes/class-demo-importer.php:273
653
+ msgid "Run Importer"
654
+ msgstr ""
655
+
656
+ #: includes/class-demo-importer.php:275
657
+ #. translators: %s: Importer name.
658
+ msgid "Run %s"
659
+ msgstr ""
660
+
661
+ #: includes/class-demo-importer.php:276
662
+ msgid "Something went wrong."
663
+ msgstr ""
664
+
665
+ #: includes/class-demo-importer.php:277
666
+ msgid "Connection lost or the server is busy. Please try again later."
667
+ msgstr ""
668
+
669
+ #: includes/class-demo-importer.php:278
670
+ msgid "An error has occurred. Please reload the page and try again."
671
+ msgstr ""
672
+
673
+ #: includes/class-demo-importer.php:280
674
+ #. translators: %s: Number of plugins.
675
+ msgid "Number of plugins found: %d"
676
+ msgstr ""
677
+
678
+ #: includes/class-demo-importer.php:281
679
+ msgid "No plugins found. Try a different search."
680
+ msgstr ""
681
+
682
+ #: includes/class-demo-importer.php:306
683
  msgid ""
684
  "Importing demo data will ensure that your site will look similar as theme "
685
  "demo. It makes you easy to modify the content instead of creating them from "
687
  "%6$s"
688
  msgstr ""
689
 
690
+ #: includes/class-demo-importer.php:308
691
  msgid ""
692
  "Importing the demo on the site if you have already added the content is "
693
  "highly discouraged."
694
  msgstr ""
695
 
696
+ #: includes/class-demo-importer.php:310
697
  msgid ""
698
  "You need to import demo on fresh WordPress install to exactly replicate the "
699
  "theme demo."
700
  msgstr ""
701
 
702
+ #: includes/class-demo-importer.php:312
703
  msgid ""
704
  "It will install the required plugins as well as activate them for "
705
  "installing the required theme demo within your site."
706
  msgstr ""
707
 
708
+ #: includes/class-demo-importer.php:314
709
  msgid "Copyright images will get replaced with other placeholder images."
710
  msgstr ""
711
 
712
+ #: includes/class-demo-importer.php:316
713
  msgid ""
714
  "None of the posts, pages, attachments or any other data already existing in "
715
  "your site will be deleted or modified."
716
  msgstr ""
717
 
718
+ #: includes/class-demo-importer.php:318
719
  msgid "It will take some time to import the theme demo."
720
  msgstr ""
721
 
722
+ #: includes/class-demo-importer.php:323
723
  msgid "Search Demos"
724
  msgstr ""
725
 
726
+ #: includes/class-demo-importer.php:324
727
  msgid "Search demos..."
728
  msgstr ""
729
 
730
+ #: includes/class-demo-importer.php:326
731
  #. translators: %s: support forums URL
732
  msgid ""
733
  "An unexpected error occurred. Something may be wrong with ThemeGrill demo "
735
  "the <a href=\"%s\">support forums</a>."
736
  msgstr ""
737
 
738
+ #: includes/class-demo-importer.php:327
739
  msgid "Try Again"
740
  msgstr ""
741
 
742
+ #: includes/class-demo-importer.php:328
743
  msgid "Please suggest us!"
744
  msgstr ""
745
 
746
+ #: includes/class-demo-importer.php:329
747
  msgid "Number of Demos found: %d"
748
  msgstr ""
749
 
750
+ #: includes/class-demo-importer.php:332
751
  msgid "Expand Sidebar"
752
  msgstr ""
753
 
754
+ #: includes/class-demo-importer.php:334
755
  #. translators: accessibility text
756
  msgid "Select one or more Demo features to filter by"
757
  msgstr ""
758
 
759
+ #: includes/class-demo-importer.php:335
760
  msgid "Confirm!"
761
  msgstr ""
762
 
763
+ #: includes/class-demo-importer.php:361
764
  #. translators: 1: ThemeGrill Demo Importer 2: five stars
765
  msgid "If you like %1$s please leave us a %2$s rating. A huge thanks in advance!"
766
  msgstr ""
769
  msgid "ThemeGrill Demo Importer"
770
  msgstr ""
771
 
772
+ #: includes/class-demo-importer.php:363
773
  msgid "Thanks :)"
774
  msgstr ""
775
 
776
+ #: includes/class-demo-importer.php:366
777
  msgid "Thank you for importing with ThemeGrill Demo Importer."
778
  msgstr ""
779
 
780
+ #: includes/class-demo-importer.php:386 includes/class-demo-importer.php:388
781
  msgid "Help &amp; Support"
782
  msgstr ""
783
 
784
+ #: includes/class-demo-importer.php:390
785
  msgid ""
786
  "Should you need help understanding, using, or extending ThemeGrill Demo "
787
  "Importer, <a href=\"%s\">please read our documentation</a>. You will find "
788
  "all kinds of resources including snippets, tutorials and much more."
789
  msgstr ""
790
 
791
+ #: includes/class-demo-importer.php:394
792
  msgid ""
793
  "For further assistance with ThemeGrill Demo Importer core you can use the "
794
  "<a href=\"%1$s\">community forum</a>. If you need help with premium themes "
795
  "sold by ThemeGrill, please <a href=\"%2$s\">use our free support forum</a>."
796
  msgstr ""
797
 
798
+ #: includes/class-demo-importer.php:398
799
  msgid "Community forum"
800
  msgstr ""
801
 
802
+ #: includes/class-demo-importer.php:398
803
  msgid "ThemeGrill Support"
804
  msgstr ""
805
 
806
+ #: includes/class-demo-importer.php:405 includes/class-demo-importer.php:407
807
  msgid "Found a bug?"
808
  msgstr ""
809
 
810
+ #: includes/class-demo-importer.php:408
811
  msgid ""
812
  "If you find a bug within ThemeGrill Demo Importer you can create a ticket "
813
  "via <a href=\"%1$s\">Github issues</a>. Ensure you read the <a "
815
  "help us solve your issue, please be as descriptive as possible."
816
  msgstr ""
817
 
818
+ #: includes/class-demo-importer.php:409
819
  msgid "Report a bug"
820
  msgstr ""
821
 
822
+ #: includes/class-demo-importer.php:415
 
 
 
 
 
 
 
 
 
 
 
823
  msgid "For more information:"
824
  msgstr ""
825
 
826
+ #: includes/class-demo-importer.php:416
827
  msgid "About Demo Importer"
828
  msgstr ""
829
 
830
+ #: includes/class-demo-importer.php:417
831
  msgid "WordPress.org project"
832
  msgstr ""
833
 
834
+ #: includes/class-demo-importer.php:418
835
  msgid "Github project"
836
  msgstr ""
837
 
838
+ #: includes/class-demo-importer.php:419
839
  msgid "Official themes"
840
  msgstr ""
841
 
842
+ #: includes/class-demo-importer.php:420
843
  msgid "Official plugins"
844
  msgstr ""
845
 
846
+ #: includes/class-demo-importer.php:582 includes/class-demo-importer.php:643
 
 
 
 
 
 
 
 
 
 
847
  msgid "This demo requires %1$s version of %2$s theme to get imported"
848
  msgstr ""
849
 
850
+ #: includes/class-demo-importer.php:588 includes/class-demo-importer.php:616
851
  msgid ""
852
  "This demo requires %1$s version of %2$s theme and %3$s version of %4$s as "
853
  "well as %5$s version of %6$s plugins to get imported"
854
  msgstr ""
855
 
856
+ #: includes/class-demo-importer.php:592 includes/class-demo-importer.php:602
857
+ #: includes/class-demo-importer.php:608 includes/class-demo-importer.php:620
858
  msgid "Zakra Pro"
859
  msgstr ""
860
 
861
+ #: includes/class-demo-importer.php:594 includes/class-demo-importer.php:622
862
+ #: includes/class-demo-importer.php:630 includes/class-demo-importer.php:636
863
  msgid "Companion Elementor"
864
  msgstr ""
865
 
866
+ #: includes/class-demo-importer.php:598 includes/class-demo-importer.php:626
867
  msgid ""
868
  "This demo requires %1$s version of %2$s theme and %3$s version of %4$s "
869
  "plugin to get imported"
870
  msgstr ""
871
 
872
+ #: includes/class-demo-importer.php:606 includes/class-demo-importer.php:634
873
  msgid "This demo requires %1$s version of %2$s plugin to get imported"
874
  msgstr ""
875
 
876
+ #: includes/class-demo-importer.php:654
877
  msgid "%s Pro"
878
  msgstr ""
879
 
881
  msgid "ThemeGrill"
882
  msgstr ""
883
 
884
+ #: includes/class-demo-importer.php:718
885
  msgid "No demo specified."
886
  msgstr ""
887
 
888
+ #: includes/class-demo-importer.php:734
889
  msgid "Sorry, you are not allowed to import content."
890
  msgstr ""
891
 
892
+ #: includes/class-demo-importer.php:766
893
  #: includes/functions-demo-importer.php:110
894
  msgid "Unable to connect to the filesystem. Please confirm your credentials."
895
  msgstr ""
896
 
897
+ #: includes/class-demo-importer.php:849
898
  msgid "The XML file dummy content is missing."
899
  msgstr ""
900
 
901
+ #: includes/class-demo-importer.php:940
902
  msgid "The DAT file customizer data is missing."
903
  msgstr ""
904
 
905
+ #: includes/class-demo-importer.php:965
906
  msgid "The WIE file widget content is missing."
907
  msgstr ""
908
 
909
+ #: includes/class-themegrill-demo-importer.php:50
910
+ #: includes/class-themegrill-demo-importer.php:59
911
+ msgid "Cheatin&#8217; huh?"
912
+ msgstr ""
913
+
914
  #: includes/class-themegrill-demo-importer.php:236
915
  msgid "View Demo Importer"
916
  msgstr ""
1257
  msgid "Imported"
1258
  msgstr ""
1259
 
1260
+ #: includes/class-demo-importer.php:180
1261
  msgctxt "demo"
1262
  msgid "Importing %s..."
1263
  msgstr ""
1264
 
1265
+ #: includes/class-demo-importer.php:185
1266
  msgctxt "demo"
1267
  msgid "%s imported!"
1268
  msgstr ""
1269
 
1270
+ #: includes/class-demo-importer.php:186
1271
  msgctxt "demo"
1272
  msgid "%s import failed"
1273
  msgstr ""
1274
 
1275
+ #: includes/class-demo-importer.php:188
1276
  msgctxt "demo"
1277
  msgid "Live Preview %s"
1278
  msgstr ""
1287
  msgid "Next"
1288
  msgstr ""
1289
 
1290
+ #: includes/class-demo-importer.php:136
1291
  msgctxt "Admin menu name"
1292
  msgid "Demo Importer"
1293
+ msgstr ""
1294
+
1295
+ #: includes/class-demo-importer.php:208
1296
+ msgctxt "plugin"
1297
+ msgid "Updated!"
1298
+ msgstr ""
1299
+
1300
+ #: includes/class-demo-importer.php:213
1301
+ #. translators: %s: Plugin name and version.
1302
+ msgctxt "plugin"
1303
+ msgid "Update %s now"
1304
+ msgstr ""
1305
+
1306
+ #: includes/class-demo-importer.php:218
1307
+ #. translators: %s: Plugin name and version.
1308
+ msgctxt "plugin"
1309
+ msgid "Updating %s..."
1310
+ msgstr ""
1311
+
1312
+ #: includes/class-demo-importer.php:220
1313
+ #. translators: %s: Plugin name and version.
1314
+ msgctxt "plugin"
1315
+ msgid "%s updated!"
1316
+ msgstr ""
1317
+
1318
+ #: includes/class-demo-importer.php:222
1319
+ #. translators: %s: Plugin name and version.
1320
+ msgctxt "plugin"
1321
+ msgid "%s update failed"
1322
+ msgstr ""
1323
+
1324
+ #: includes/class-demo-importer.php:232
1325
+ #. translators: %s: Plugin name.
1326
+ msgctxt "plugin"
1327
+ msgid "Install %s now"
1328
+ msgstr ""
1329
+
1330
+ #: includes/class-demo-importer.php:234
1331
+ msgctxt "plugin"
1332
+ msgid "Installed!"
1333
+ msgstr ""
1334
+
1335
+ #: includes/class-demo-importer.php:240
1336
+ #. translators: %s: Plugin name and version.
1337
+ msgctxt "plugin"
1338
+ msgid "Installing %s..."
1339
+ msgstr ""
1340
+
1341
+ #: includes/class-demo-importer.php:244
1342
+ #. translators: %s: Plugin name and version.
1343
+ msgctxt "plugin"
1344
+ msgid "%s installed!"
1345
+ msgstr ""
1346
+
1347
+ #: includes/class-demo-importer.php:248
1348
+ #. translators: %s: Plugin name and version.
1349
+ msgctxt "plugin"
1350
+ msgid "%s installation failed"
1351
+ msgstr ""
1352
+
1353
+ #: includes/class-demo-importer.php:264
1354
+ msgctxt "plugin"
1355
+ msgid "Deleted!"
1356
+ msgstr ""
1357
+
1358
+ #: includes/class-demo-importer.php:270
1359
+ #. translators: %s: Plugin name.
1360
+ msgctxt "plugin"
1361
+ msgid "Network Activate %s"
1362
+ msgstr ""
1363
+
1364
+ #: includes/class-demo-importer.php:270
1365
+ msgctxt "plugin"
1366
+ msgid "Activate %s"
1367
+ msgstr ""
1368
+
1369
+ #: includes/class-demo-importer.php:209
1370
+ msgctxt "theme"
1371
+ msgid "Updated!"
1372
+ msgstr ""
1373
+
1374
+ #: includes/class-demo-importer.php:235
1375
+ msgctxt "theme"
1376
+ msgid "Installed!"
1377
+ msgstr ""
1378
+
1379
+ #: includes/class-demo-importer.php:242
1380
+ #. translators: %s: Theme name and version.
1381
+ msgctxt "theme"
1382
+ msgid "Installing %s..."
1383
+ msgstr ""
1384
+
1385
+ #: includes/class-demo-importer.php:246
1386
+ #. translators: %s: Theme name and version.
1387
+ msgctxt "theme"
1388
+ msgid "%s installed!"
1389
+ msgstr ""
1390
+
1391
+ #: includes/class-demo-importer.php:250
1392
+ #. translators: %s: Theme name and version.
1393
+ msgctxt "theme"
1394
+ msgid "%s installation failed"
1395
+ msgstr ""
1396
+
1397
+ #: includes/class-demo-importer.php:265
1398
+ msgctxt "theme"
1399
+ msgid "Deleted!"
1400
+ msgstr ""
1401
+
1402
+ #: includes/class-demo-importer.php:272
1403
+ #. translators: %s: Theme name.
1404
+ msgctxt "theme"
1405
+ msgid "Network Activate %s"
1406
+ msgstr ""
1407
+
1408
+ #: includes/class-demo-importer.php:272
1409
+ msgctxt "theme"
1410
+ msgid "Activate %s"
1411
  msgstr ""
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: ThemeGrill, shivapoudel
3
  Tags: themegrill, theme demos, demo, importer, one click import
4
  Requires at least: 4.7
5
- Tested up to: 5.4
6
- Stable tag: 1.6.5
7
  License: GPLv3 or later
8
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
9
 
@@ -72,6 +72,11 @@ Yes you can! Join in on our [GitHub repository](https://github.com/themegrill/th
72
  3. Finally, Import the Demo with just one click.
73
 
74
  == Changelog ==
 
 
 
 
 
75
  = 1.6.5 - 23-07-2020 =
76
  * Fix - Demo not importing completely in certain conditions.
77
 
2
  Contributors: ThemeGrill, shivapoudel
3
  Tags: themegrill, theme demos, demo, importer, one click import
4
  Requires at least: 4.7
5
+ Tested up to: 5.5
6
+ Stable tag: 1.6.6
7
  License: GPLv3 or later
8
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
9
 
72
  3. Finally, Import the Demo with just one click.
73
 
74
  == Changelog ==
75
+ = 1.6.6 - 06-08-2020 =
76
+ * Introduce - Demo Importer Status page
77
+ * Tweak - Added compatibility with WordPress v5.5
78
+ * Remove - `Reset wizard` feature to reset the site to fresh WordPress install.
79
+
80
  = 1.6.5 - 23-07-2020 =
81
  * Fix - Demo not importing completely in certain conditions.
82
 
themegrill-demo-importer.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: ThemeGrill Demo Importer
4
  * Plugin URI: https://themegrill.com/demo-importer/
5
  * Description: Import ThemeGrill official themes demo content, widgets and theme settings with just one click.
6
- * Version: 1.6.5
7
  * Author: ThemeGrill
8
  * Author URI: https://themegrill.com
9
  * License: GPLv3 or later
3
  * Plugin Name: ThemeGrill Demo Importer
4
  * Plugin URI: https://themegrill.com/demo-importer/
5
  * Description: Import ThemeGrill official themes demo content, widgets and theme settings with just one click.
6
+ * Version: 1.6.6
7
  * Author: ThemeGrill
8
  * Author URI: https://themegrill.com
9
  * License: GPLv3 or later