Version Description
Download this release
Release Info
Developer | cory@lamle.org |
Plugin | Duplicator – WordPress Migration Plugin |
Version | 1.1.0 |
Comparing to | |
See all releases |
Code changes from version 0.5.34 to 1.1.0
- assets/css/style.css +1 -5
- assets/img/logo-box.png +0 -0
- assets/img/logo-menu.png +0 -0
- assets/img/logo-menu.svg +12 -0
- assets/img/logo-pro-32.png +0 -0
- assets/img/paypal.png +0 -0
- assets/js/jquery.qtip/jquery.qtip.min.css +3 -0
- assets/js/jquery.qtip/jquery.qtip.min.js +5 -0
- classes/package.database.php +19 -9
- classes/package.php +10 -5
- classes/utility.php +1 -1
- define.php +2 -2
- duplicator.php +14 -8
- installer/build/ajax.step1.php +3 -2
- installer/build/classes/class.logging.php +1 -1
- installer/build/classes/class.utils.php +33 -1
- installer/build/view.step1.php +14 -13
- readme.txt +11 -14
- views/actions.php +4 -1
- views/help/about.php +12 -12
- views/help/gopro.php +20 -10
- views/help/help.php +19 -19
- views/inc.header.php +2 -10
- views/javascript.php +21 -1
- views/packages/controller.php +13 -5
- views/packages/list-nodata.php +10 -10
- views/packages/list.base.php +50 -50
- views/packages/new1.base.php +35 -33
- views/packages/new1.inc.form.php +110 -55
- views/packages/new2.base.php +35 -10
- views/packages/new3.base.php +36 -32
- views/settings/controller.php +1 -5
- views/settings/general.php +39 -39
- views/tools/cleanup.php +1 -1
- views/tools/controller.php +5 -4
- views/tools/diagnostics.php +47 -47
- views/tools/logging.php +11 -11
assets/css/style.css
CHANGED
@@ -11,11 +11,7 @@ fieldset {border:1px solid gray; padding:0px 5px 5px 5px; }
|
|
11 |
label {font-size:13px}
|
12 |
.no-select {user-select:none; -o-user-select:none; -moz-user-select:none; -khtml-user-select:none; -webkit-user-select:none;}
|
13 |
hr {border: 0; border-top: 1px solid #ddd; border-bottom: 1px solid #fafafa; margin: 10px 0px 2px 0px;}
|
14 |
-
|
15 |
-
/* HEADER BAR */
|
16 |
-
div.dup-header {padding:0px 0px 0px 0px; margin:0px 0px 7px 0px;}
|
17 |
-
div.dup-header input {border:1px solid silver; border-radius:4px}
|
18 |
-
div.dup-header input:hover {border:1px solid black;}
|
19 |
|
20 |
/*BOXES: Expandable sections */
|
21 |
div.dup-box {padding:0px; display: block; background-color: #fff; border: 1px solid #e5e5e5; box-shadow: 0 1px 1px rgba(0,0,0,.04);}
|
11 |
label {font-size:13px}
|
12 |
.no-select {user-select:none; -o-user-select:none; -moz-user-select:none; -khtml-user-select:none; -webkit-user-select:none;}
|
13 |
hr {border: 0; border-top: 1px solid #ddd; border-bottom: 1px solid #fafafa; margin: 10px 0px 2px 0px;}
|
14 |
+
i[data-tooltip].fa-question-circle {cursor: pointer; color:gray}
|
|
|
|
|
|
|
|
|
15 |
|
16 |
/*BOXES: Expandable sections */
|
17 |
div.dup-box {padding:0px; display: block; background-color: #fff; border: 1px solid #e5e5e5; box-shadow: 0 1px 1px rgba(0,0,0,.04);}
|
assets/img/logo-box.png
CHANGED
Binary file
|
assets/img/logo-menu.png
ADDED
Binary file
|
assets/img/logo-menu.svg
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
4 |
+
<svg version="1.1" id="Artwork" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
5 |
+
width="23.25px" height="22.375px" viewBox="0 0 23.25 22.375" enable-background="new 0 0 23.25 22.375" xml:space="preserve">
|
6 |
+
<path fill="#9CA1A6" d="M18.011,1.188c-1.995,0-3.615,1.618-3.615,3.614c0,0.085,0.008,0.167,0.016,0.25L7.733,8.184
|
7 |
+
C7.084,7.565,6.208,7.182,5.24,7.182c-1.996,0-3.615,1.619-3.615,3.614c0,1.996,1.619,3.613,3.615,3.613
|
8 |
+
c0.629,0,1.222-0.162,1.737-0.445l2.89,2.438c-0.126,0.368-0.198,0.763-0.198,1.173c0,1.995,1.618,3.613,3.614,3.613
|
9 |
+
c1.995,0,3.615-1.618,3.615-3.613c0-1.997-1.62-3.614-3.615-3.614c-0.63,0-1.222,0.162-1.737,0.443l-2.89-2.435
|
10 |
+
c0.126-0.368,0.198-0.763,0.198-1.173c0-0.084-0.008-0.166-0.013-0.25l6.676-3.133c0.648,0.619,1.525,1.002,2.495,1.002
|
11 |
+
c1.994,0,3.613-1.617,3.613-3.613C21.625,2.806,20.006,1.188,18.011,1.188z"/>
|
12 |
+
</svg>
|
assets/img/logo-pro-32.png
ADDED
Binary file
|
assets/img/paypal.png
CHANGED
Binary file
|
assets/js/jquery.qtip/jquery.qtip.min.css
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
/* qTip2 v2.2.1 | Plugins: tips modal viewport svg imagemap ie6 | Styles: core basic css3 | qtip2.com | Licensed MIT | Sat Sep 06 2014 23:12:07 */
|
2 |
+
|
3 |
+
.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:350px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;z-index:11;cursor:pointer;outline:0;border:1px solid transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-icon .ui-icon,.qtip-titlebar .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:-100em -100em no-repeat}.qtip-default{border:1px solid #F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}.qtip-light{background-color:#fff;border-color:#E2E2E2;color:#454545}.qtip-light .qtip-titlebar{background-color:#f1f1f1}.qtip-dark{background-color:#505050;border-color:#303030;color:#f3f3f3}.qtip-dark .qtip-titlebar{background-color:#404040}.qtip-dark .qtip-icon{border-color:#444}.qtip-dark .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-cream{background-color:#FBF7AA;border-color:#F9E98E;color:#A27D35}.qtip-cream .qtip-titlebar{background-color:#F0DE7D}.qtip-cream .qtip-close .qtip-icon{background-position:-82px 0}.qtip-red{background-color:#F78B83;border-color:#D95252;color:#912323}.qtip-red .qtip-titlebar{background-color:#F06D65}.qtip-red .qtip-close .qtip-icon{background-position:-102px 0}.qtip-red .qtip-icon,.qtip-red .qtip-titlebar .ui-state-hover{border-color:#D95252}.qtip-green{background-color:#CAED9E;border-color:#90D93F;color:#3F6219}.qtip-green .qtip-titlebar{background-color:#B0DE78}.qtip-green .qtip-close .qtip-icon{background-position:-42px 0}.qtip-blue{background-color:#E5F6FE;border-color:#ADD9ED;color:#5E99BD}.qtip-blue .qtip-titlebar{background-color:#D0E9F5}.qtip-blue .qtip-close .qtip-icon{background-position:-2px 0}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-bootstrap,.qtip-rounded,.qtip-tipsy{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border:0 solid transparent;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:transparent}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)"}.qtip-jtools .qtip-content,.qtip-jtools .qtip-titlebar{background:0 0;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:0 0}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}.qtip .qtip-tip,x:-o-prefocus{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:0 0;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}#qtip-overlay{position:fixed;left:0;top:0;width:100%;height:100%}#qtip-overlay.blurs{cursor:pointer}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#000;opacity:.7;filter:alpha(opacity=70);-ms-filter:"alpha(Opacity=70)"}.qtipmodal-ie6fix{position:absolute!important}
|
assets/js/jquery.qtip/jquery.qtip.min.js
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* qTip2 v2.2.1 | Plugins: tips modal viewport svg imagemap ie6 | Styles: core basic css3 | qtip2.com | Licensed MIT | Sat Sep 06 2014 23:12:07 */
|
2 |
+
|
3 |
+
!function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=F,this.elements={target:a},this._id=S+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:E,attr:e,onTooltip:E,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=E}function f(a){return a===F||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?E:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?E:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==E,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,F,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(d.isPlainObject(b.title)&&(b.button=b.title.button,b.title=b.title.text),g(b.title||E)&&(b.title=E))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===D?{ready:D}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(R,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d<f.length&&(c=e);return[c||a,f.pop()]}function j(a,b){var c,d,e;for(c in this.checks)for(d in this.checks[c])(e=new RegExp(d,"i").exec(a))&&(b.push(e),("builtin"===c||this.plugins[c])&&this.checks[c][d].apply(this.plugins[c]||this,b))}function k(a){return V.concat("").join(a?"-"+a+" ":" ")}function l(a,b){return b>0?setTimeout(d.proxy(a,this),b):void a.call(this)}function m(a){this.tooltip.hasClass(ab)||(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=l.call(this,function(){this.toggle(D,a)},this.options.show.delay))}function n(a){if(!this.tooltip.hasClass(ab)&&!this.destroyed){var b=d(a.relatedTarget),c=b.closest(W)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=l.call(this,function(){this.toggle(E,a)},this.options.hide.delay,this)}}function o(a){!this.tooltip.hasClass(ab)&&this.options.hide.inactive&&(clearTimeout(this.timers.inactive),this.timers.inactive=l.call(this,function(){this.hide(a)},this.options.hide.inactive))}function p(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function q(a,c,e){d(b.body).delegate(a,(c.split?c:c.join("."+S+" "))+"."+S,function(){var a=y.api[d.attr(this,U)];a&&!a.disabled&&e.apply(a,arguments)})}function r(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):F,p="html5"===f.metadata.type&&o?o[f.metadata.name]:F,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(D,{},y.defaults,f,"object"==typeof q?h(q):F,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===E||!j)return E;k.content.text=j}if(i.container.length||(i.container=m),i.target===E&&(i.target=n),k.show.target===E&&(k.show.target=n),k.show.solo===D&&(k.show.solo=i.container.closest("body")),k.hide.target===E&&(k.hide.target=n),k.position.viewport===D&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new A(i.at,D),i.my=new A(i.my),a.data(S))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===E)return E;return a.attr(T,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(cb,l).attr("title",""),g=new e(a,k,c,!!j),a.data(S,g),g}function s(a){return a.charAt(0).toUpperCase()+a.slice(1)}function t(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+rb.join(f+" ")+f).split(" "),h=0;if(qb[b])return a.css(qb[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return qb[b]=d,e}function u(a,b){return Math.ceil(parseFloat(t(a,b)))}function v(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.init(this.qtip=a)}function w(a,b){this.options=b,this._ns="-modal",this.init(this.qtip=a)}function x(a){this._ns="ie6",this.init(this.qtip=a)}var y,z,A,B,C,D=!0,E=!1,F=null,G="x",H="y",I="width",J="height",K="top",L="left",M="bottom",N="right",O="center",P="flipinvert",Q="shift",R={},S="qtip",T="data-hasqtip",U="data-qtip-id",V=["ui-widget","ui-tooltip"],W="."+S,X="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),Y=S+"-fixed",Z=S+"-default",$=S+"-focus",_=S+"-hover",ab=S+"-disabled",bb="_replacedByqTip",cb="oldtitle",db={ie:function(){for(var a=4,c=b.createElement("div");(c.innerHTML="<!--[if gt IE "+a+"]><i></i><![endif]-->")&&c.getElementsByTagName("i")[0];a+=1);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||E};z=e.prototype,z._when=function(a){return d.when.apply(d,a)},z.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),f.posClass=this._createPosClass((this.position={my:k.my,at:k.at}).my),this.tooltip=g.tooltip=b=d("<div/>",{id:this._id,"class":[S,Z,e.style.classes,f.posClass].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":E,"aria-describedby":this._id+"-content","aria-hidden":D}).toggleClass(ab,this.disabled).attr(U,this.id).data(S,this).appendTo(k.container).append(g.content=d("<div />",{"class":S+"-content",id:this._id+"-content","aria-atomic":D})),this.rendered=-1,this.positioning=D,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,E))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,E)),this.rendered=D,this._setWidget(),d.each(R,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=E,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(D,f.event,E),c.hiddenDuringWait=E}),y.api[this.id]=this,this},z.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=D;var a,b=this.target,c=b.attr(cb);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()});for(a in this.timers)clearTimeout(this.timers[a]);b.removeData(S).removeAttr(U).removeAttr(T).removeAttr("aria-describedby"),this.options.suppress&&c&&b.attr("title",c).removeAttr(cb),this._unassignEvents(),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=F,delete y.api[this.id]}}return this.destroyed?this.target:(a===D&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},B=z.checks={builtin:{"^id$":function(a,b,c,e){var f=c===D?y.nextid:c,g=S+"-"+f;f!==E&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),void this._updateTitle(c)):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(this.position[b]=a[b]=new A(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(D)||this.toggle(D))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass(Z,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},z.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var eb=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,fb=/^prerender|show\.ready/i;z.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=E,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&fb.test(b))return void delete a[b];var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=eb.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=D,d.each(a,d.proxy(j,this)),this.positioning=E,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?F:this.cache.event),this},z._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=D,a.then(function(a){return e.waiting=E,c._update(a,b)},F,function(a){return c._update(a,b)})):a===E||!a&&""!==a?E:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):E},z._waitForContent=function(a){var b=this.cache;return b.waiting=D,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=E}).promise()},z._updateContent=function(a,b){this._update(a,this.elements.content,b)},z._updateTitle=function(a,b){this._update(a,this.elements.title,b)===E&&this._removeTitle(E)},z._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("<div />",{"class":S+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("<div />",{id:b,"class":S+"-title","aria-atomic":D})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},z._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=F,a!==E&&this.reposition())},z._createPosClass=function(a){return S+"-pos-"+(a||this.options.position.my).abbrev()},z.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=D;var f,g,h,i,j=this.cache,k=this.tooltip,l=this.options.position,m=l.target,n=l.my,o=l.at,p=l.viewport,q=l.container,r=l.adjust,s=r.method.split(" "),t=k.outerWidth(E),u=k.outerHeight(E),v=0,w=0,x=k.css("position"),y={left:0,top:0},z=k[0].offsetWidth>0,A=c&&"scroll"===c.type,B=d(a),C=q[0].ownerDocument,F=this.mouse;if(d.isArray(m)&&2===m.length)o={x:L,y:K},y={left:m[0],top:m[1]};else if("mouse"===m)o={x:L,y:K},(!r.mouse||this.options.hide.distance)&&j.origin&&j.origin.pageX?c=j.origin:!c||c&&("resize"===c.type||"scroll"===c.type)?c=j.event:F&&F.pageX&&(c=F),"static"!==x&&(y=q.offset()),C.body.offsetWidth!==(a.innerWidth||C.documentElement.clientWidth)&&(g=d(b.body).offset()),y={left:c.pageX-y.left+(g&&g.left||0),top:c.pageY-y.top+(g&&g.top||0)},r.mouse&&A&&F&&(y.left-=(F.scrollX||0)-B.scrollLeft(),y.top-=(F.scrollY||0)-B.scrollTop());else{if("event"===m?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?j.target=d(c.target):c.target||(j.target=this.elements.target):"event"!==m&&(j.target=d(m.jquery?m:this.elements.target)),m=j.target,m=d(m).eq(0),0===m.length)return this;m[0]===b||m[0]===a?(v=db.iOS?a.innerWidth:m.width(),w=db.iOS?a.innerHeight:m.height(),m[0]===a&&(y={top:(p||m).scrollTop(),left:(p||m).scrollLeft()})):R.imagemap&&m.is("area")?f=R.imagemap(this,m,o,R.viewport?s:E):R.svg&&m&&m[0].ownerSVGElement?f=R.svg(this,m,o,R.viewport?s:E):(v=m.outerWidth(E),w=m.outerHeight(E),y=m.offset()),f&&(v=f.width,w=f.height,g=f.offset,y=f.position),y=this.reposition.offset(m,y,q),(db.iOS>3.1&&db.iOS<4.1||db.iOS>=4.3&&db.iOS<4.33||!db.iOS&&"fixed"===x)&&(y.left-=B.scrollLeft(),y.top-=B.scrollTop()),(!f||f&&f.adjustable!==E)&&(y.left+=o.x===N?v:o.x===O?v/2:0,y.top+=o.y===M?w:o.y===O?w/2:0)}return y.left+=r.x+(n.x===N?-t:n.x===O?-t/2:0),y.top+=r.y+(n.y===M?-u:n.y===O?-u/2:0),R.viewport?(h=y.adjusted=R.viewport(this,y,l,v,w,t,u),g&&h.left&&(y.left+=g.left),g&&h.top&&(y.top+=g.top),h.my&&(this.position.my=h.my)):y.adjusted={left:0,top:0},j.posClass!==(i=this._createPosClass(this.position.my))&&k.removeClass(j.posClass).addClass(j.posClass=i),this._trigger("move",[y,p.elem||p],c)?(delete y.adjusted,e===E||!z||isNaN(y.left)||isNaN(y.top)||"mouse"===m||!d.isFunction(l.effect)?k.css(y):d.isFunction(l.effect)&&(l.effect.call(k,this,d.extend({},y)),k.queue(function(a){d(this).css({opacity:"",height:""}),db.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=E,this):this},z.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!db.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var gb=(A=z.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,O).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?H:G}).prototype;gb.invert=function(a,b){this[a]=this[a]===L?N:this[a]===N?L:b||this[a]},gb.string=function(a){var b=this.x,c=this.y,d=b!==c?"center"===b||"center"!==c&&(this.precedance===H||this.forceY)?[c,b]:[b,c]:[b];return a!==!1?d.join(" "):d},gb.abbrev=function(){var a=this.string(!1);return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},gb.clone=function(){return new A(this.string(),this.forceY)},z.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&e.event&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=d.event.fix(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=D),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",l=this.options[k],m=(this.options[a?"hide":"show"],this.options.position),n=this.options.content,o=this.tooltip.css("width"),p=this.tooltip.is(":visible"),q=a||1===l.target.length,r=!c||l.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!p),h=!g.is(":animated")&&p===a&&r,i=h?F:!!this._trigger(k,[90]),this.destroyed?this:(i!==E&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(this.mouse&&(e.origin=d.event.fix(this.mouse)),d.isFunction(n.text)&&this._updateContent(n.text,E),d.isFunction(n.title)&&this._updateTitle(n.title,E),!C&&"mouse"===m.target&&m.adjust.mouse&&(d(b).bind("mousemove."+S,this._storeMouse),C=D),o||g.css("width",g.outerWidth(E)),this.reposition(c,arguments[2]),o||g.css("width",""),l.solo&&("string"==typeof l.solo?d(l.solo):d(W,l.solo)).not(g).not(l.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,C&&!d(W+'[tracking="true"]:visible',l.solo).not(g).length&&(d(b).unbind("mousemove."+S),C=E),this.blur(c)),j=d.proxy(function(){a?(db.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof l.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),l.effect===E||q===E?(g[k](),j()):d.isFunction(l.effect)?(g.stop(1,1),l.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&l.target.trigger("qtip-"+this.id+"-inactive"),this))},z.show=function(a){return this.toggle(D,a)},z.hide=function(a){return this.toggle(E,a)},z.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(W),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=y.zindex+b.length;return c.hasClass($)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+$).qtip("blur",a)),c.addClass($)[0].style.zIndex=f),this},z.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass($),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},z.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(ab):this.disabled):"boolean"!=typeof a&&(a=D),this.rendered&&this.tooltip.toggleClass(ab,a).attr("aria-disabled",a),this.disabled=!!a,this)},z.enable=function(){return this.disable(E)},z._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("<a />",{"class":"qtip-close "+(this.options.style.widget?"":S+"-icon"),title:g,"aria-label":g}).prepend(d("<span />",{"class":"ui-icon ui-icon-close",html:"×"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(ab)||a.hide(b),E})},z._updateButton=function(a){if(!this.rendered)return E;var b=this.elements.button;a?this._createButton():b.remove()},z._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(ab);c.removeClass(ab),ab=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(ab,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass(Z,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(S+"-icon",!a)},z._storeMouse=function(a){return(this.mouse=d.event.fix(a)).type="mousemove",this},z._bind=function(a,b,c,e,f){if(a&&c&&b.length){var g="."+this._id+(e?"-"+e:"");return d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this)),this}},z._unbind=function(a,b){return a&&d(a).unbind("."+this._id+(b?"-"+b:"")),this},z._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||F,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=E,!e.isDefaultPrevented()},z._bindEvents=function(a,b,c,e,f,g){var h=c.filter(e).add(e.filter(c)),i=[];h.length&&(d.each(b,function(b,c){var e=d.inArray(c,a);e>-1&&i.push(a.splice(e,1)[0])}),i.length&&(this._bind(h,i,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)}),c=c.not(h),e=e.not(h))),this._bind(c,a,f),this._bind(e,b,g)},z._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?E:(this.cache.event=a&&d.event.fix(a),this.cache.target=a&&d(a.target),clearTimeout(this.timers.show),void(this.timers.show=l.call(this,function(){this.render("object"==typeof a||c.show.ready)},c.prerender?0:c.show.delay)))}var c=this.options,e=c.show.target,f=c.hide.target,g=c.show.event?d.trim(""+c.show.event).split(" "):[],h=c.hide.event?d.trim(""+c.hide.event).split(" "):[];this._bind(this.elements.target,["remove","removeqtip"],function(){this.destroy(!0)},"destroy"),/mouse(over|enter)/i.test(c.show.event)&&!/mouse(out|leave)/i.test(c.hide.event)&&h.push("mouseleave"),this._bind(e,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=D}),this._bindEvents(g,h,e,f,b,function(){return this.timers?void clearTimeout(this.timers.show):E}),(c.show.ready||c.prerender)&&b.call(this,a)},z._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),q=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(Y)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(ab)&&this.tooltip[0].offsetWidth>0,e=b.parents(W).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",o,"inactive"),this._bind(i.add(g),y.inactiveEvents,o)),this._bindEvents(r,s,h,i,m,n),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){return this.cache?void(this.cache.onTarget="mouseenter"===a.type):E}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(ab)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:q,"resize",p),f.adjust.scroll&&this._bind(q.add(f.container),"scroll",p)},z._unassignEvents=function(){var c=this.options,e=c.show.target,f=c.hide.target,g=d.grep([this.elements.target[0],this.rendered&&this.tooltip[0],c.position.container[0],c.position.viewport[0],c.position.container.closest("html")[0],a,b],function(a){return"object"==typeof a});e&&e.toArray&&(g=g.concat(e.toArray())),f&&f.toArray&&(g=g.concat(f.toArray())),this._unbind(g)._unbind(g,"destroy")._unbind(g,"inactive")},d(function(){q(W,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(Y)&&!c.hasClass(ab)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.position.adjust.mouse&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(_,b)}),q("["+U+"]",X,o)}),y=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=F,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],S):F;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,S);if(!a)return D;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),E;a.set(b,e)}}),g!==F?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(D,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===E||c.length<1||y.api[c]?y.nextid++:c,b=r(d(this),c,k),b===E?D:(y.api[c]=b,d.each(R,function(){"initialize"===this.initialize&&this(b)}),void b._assignInitialEvents(j))}))},d.qtip=e,y.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,cb):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(cb,b))}return d.fn["attr"+bb].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+bb].apply(this,arguments));return a||b.filter("["+cb+"]").attr("title",function(){return d.attr(this,cb)}).removeAttr(cb),b}},function(a,b){if(!b||d.fn[a+bb])return D;var c=d.fn[a+bb]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+bb]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(T))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+bb].apply(this,arguments)}),y.version="2.2.1",y.nextid=0,y.inactiveEvents=X,y.zindex=15e3,y.defaults={prerender:E,id:E,overwrite:D,suppress:D,content:{text:D,attr:"title",title:E,button:E},position:{my:"top left",at:"bottom right",target:E,container:E,viewport:E,adjust:{x:0,y:0,mouse:D,scroll:D,resize:D,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:E})}},show:{target:E,event:"mouseenter",effect:D,delay:90,solo:E,ready:E,autofocus:E},hide:{target:E,event:"mouseleave",effect:D,delay:0,fixed:E,inactive:E,leave:"window",distance:E},style:{classes:"",widget:E,width:E,height:E,def:D},events:{render:F,move:F,show:F,hide:F,toggle:F,visible:F,hidden:F,focus:F,blur:F}};var hb,ib="margin",jb="border",kb="color",lb="background-color",mb="transparent",nb=" !important",ob=!!b.createElement("canvas").getContext,pb=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,qb={},rb=["Webkit","O","Moz","ms"];if(ob)var sb=a.devicePixelRatio||1,tb=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),ub=sb/tb;else var vb=function(a,b,c){return"<qtipvml:"+a+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(b||"")+' style="behavior: url(#default#VML); '+(c||"")+'" />'};d.extend(v.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("<div />",{"class":S+"-tip"}).prependTo(a.tooltip),ob?(b=d("<canvas />").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=vb("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===K||a.y===O&&this.element.position().top+this.size[1]/2+this.options.offset<b.outerHeight(D))},_parseCorner:function(a){var b=this.qtip.options.position.my;return a===E||b===E?a=E:a===D?a=new A(b.string()):a.string||(a=new A(a),a.fixed=D),a},_parseWidth:function(a,b,c){var d=this.qtip.elements,e=jb+s(b)+"Width";return(c?u(c,e):u(d.content,e)||u(this._useTitle(a)&&d.titlebar||d.content,e)||u(d.tooltip,e))||0},_parseRadius:function(a){var b=this.qtip.elements,c=jb+s(a.y)+s(a.x)+"Radius";return db.ie<9?0:u(this._useTitle(a)&&b.titlebar||b.content,c)||u(b.tooltip,c)||0},_invalidColour:function(a,b,c){var d=a.css(b);return!d||c&&d===a.css(c)||pb.test(d)?E:d},_parseColours:function(a){var b=this.qtip.elements,c=this.element.css("cssText",""),e=jb+s(a[a.precedance])+s(kb),f=this._useTitle(a)&&b.titlebar||b.content,g=this._invalidColour,h=[];return h[0]=g(c,lb)||g(f,lb)||g(b.content,lb)||g(b.tooltip,lb)||c.css(lb),h[1]=g(c,e,kb)||g(f,e,kb)||g(b.content,e,kb)||g(b.tooltip,e,kb)||b.tooltip.css(e),d("*",c).add(c).css("cssText",lb+":"+mb+nb+";"+jb+":0"+nb+";"),h},_calculateSize:function(a){var b,c,d,e=a.precedance===H,f=this.options.width,g=this.options.height,h="c"===a.abbrev(),i=(e?f:g)*(h?.5:1),j=Math.pow,k=Math.round,l=Math.sqrt(j(i,2)+j(g,2)),m=[this.border/i*l,this.border/g*l];return m[2]=Math.sqrt(j(m[0],2)-j(this.border,2)),m[3]=Math.sqrt(j(m[1],2)-j(this.border,2)),b=l+m[2]+m[3]+(h?0:m[0]),c=b/l,d=[k(c*f),k(c*g)],e?d:d.reverse()},_calculateTip:function(a,b,c){c=c||1,b=b||this.size;var d=b[0]*c,e=b[1]*c,f=Math.ceil(d/2),g=Math.ceil(e/2),h={br:[0,0,d,e,d,0],bl:[0,0,d,0,0,e],tr:[0,e,d,0,d,e],tl:[0,0,0,e,d,e],tc:[0,e,f,0,d,e],bc:[0,0,d,0,f,e],rc:[0,0,d,g,0,e],lc:[d,0,d,e,0,g]};return h.lt=h.br,h.rt=h.bl,h.lb=h.tr,h.rb=h.tl,h[a.abbrev()]},_drawCoords:function(a,b){a.beginPath(),a.moveTo(b[0],b[1]),a.lineTo(b[2],b[3]),a.lineTo(b[4],b[5]),a.closePath()},create:function(){var a=this.corner=(ob||db.ie)&&this._parseCorner(this.options.corner);return(this.enabled=!!this.corner&&"c"!==this.corner.abbrev())&&(this.qtip.cache.corner=a.clone(),this.update()),this.element.toggle(this.enabled),this.corner},update:function(b,c){if(!this.enabled)return this;var e,f,g,h,i,j,k,l,m=this.qtip.elements,n=this.element,o=n.children(),p=this.options,q=this.size,r=p.mimic,s=Math.round;b||(b=this.qtip.cache.corner||this.corner),r===E?r=b:(r=new A(r),r.precedance=b.precedance,"inherit"===r.x?r.x=b.x:"inherit"===r.y?r.y=b.y:r.x===r.y&&(r[b.precedance]=b[b.precedance])),f=r.precedance,b.precedance===G?this._swapDimensions():this._resetDimensions(),e=this.color=this._parseColours(b),e[1]!==mb?(l=this.border=this._parseWidth(b,b[b.precedance]),p.border&&1>l&&!pb.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==D?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===H?[s(r.x===L?l:r.x===N?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===K?k[1]-q[1]:0)]:[s(r.x===L?k[0]-q[0]:0),s(r.y===K?l:r.y===M?k[1]-q[1]-l:(k[1]-q[1])/2)],ob?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,ub),i=this._calculateTip(r,this.size,ub),o.attr(I,k[0]*ub).attr(J,k[1]*ub),o.css(I,k[0]).css(J,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*ub,j[1]*ub),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===db.ie?2:1:0,o.css({coordsize:k[0]+l+" "+(k[1]+l),antialias:""+(r.string().indexOf(O)>-1),left:j[0]-j[2]*Number(f===G),top:j[1]-j[2]*Number(f===H),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+(k[1]+l),path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(vb("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==E&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return E;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j=(g.tooltip.hasClass("ui-widget"),{});return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===G&&e.reverse(),d.each(e,function(d,e){var h,k,l;
|
4 |
+
e===O?(h=c===H?L:K,j[h]="50%",j[ib+"-"+h]=-Math.round(b[c===H?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))}),j[a[c]]-=b[c===G?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j},reposition:function(a,b,d){function e(a,b,c,d,e){a===Q&&j.precedance===b&&k[d]&&j[c]!==O?j.precedance=j.precedance===G?H:G:a!==Q&&k[d]&&(j[b]=j[b]===O?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===O?p[ib+"-"+b]=o[a]=g[ib+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=E),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:E,top:E,x:0,y:0},p={};this.corner.fixed!==D&&(e(m,G,H,L,N),e(n,H,G,K,M),(j.string()!==i.corner.string()||i.cornerTop!==k.top||i.cornerLeft!==k.left)&&this.update(j,E)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,(o.left=m===Q&&!!k.left)&&f(G,L,N),(o.top=n===Q&&!!k.top)&&f(H,K,M),this.element.css(p).toggle(!(o.x&&o.y||j.x===O&&o.y||j.y===O&&o.x)),d.left-=g.left.charAt?g.user:m!==Q||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==Q||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),hb=R.tip=function(a){return new v(a,a.options.style.tip)},hb.initialize="render",hb.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=D)}},B.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(D,y.defaults,{style:{tip:{corner:D,mimic:E,width:6,height:6,border:D,offset:0}}});var wb,xb,yb="qtip-modal",zb="."+yb;xb=function(){function a(a){if(d.expr[":"].focusable)return d.expr[":"].focusable;var b,c,e,f=!isNaN(d.attr(a,"tabindex")),g=a.nodeName&&a.nodeName.toLowerCase();return"area"===g?(b=a.parentNode,c=b.name,a.href&&c&&"map"===b.nodeName.toLowerCase()?(e=d("img[usemap=#"+c+"]")[0],!!e&&e.is(":visible")):!1):/input|select|textarea|button|object/.test(g)?!a.disabled:"a"===g?a.href||f:f}function c(a){k.length<1&&a.length?a.not("body").blur():k.first().focus()}function e(a){if(i.is(":visible")){var b,e=d(a.target),h=f.tooltip,j=e.closest(W);b=j.length<1?E:parseInt(j[0].style.zIndex,10)>parseInt(h[0].style.zIndex,10),b||e.closest(W)[0]===h[0]||c(e),g=a.target===k[k.length-1]}}var f,g,h,i,j=this,k={};d.extend(j,{init:function(){return i=j.elem=d("<div />",{id:"qtip-overlay",html:"<div></div>",mousedown:function(){return E}}).hide(),d(b.body).bind("focusin"+zb,e),d(b).bind("keydown"+zb,function(a){f&&f.options.show.modal.escape&&27===a.keyCode&&f.hide(a)}),i.bind("click"+zb,function(a){f&&f.options.show.modal.blur&&f.hide(a)}),j},update:function(b){f=b,k=b.options.show.modal.stealfocus!==E?b.tooltip.find("*").filter(function(){return a(this)}):[]},toggle:function(a,e,g){var k=(d(b.body),a.tooltip),l=a.options.show.modal,m=l.effect,n=e?"show":"hide",o=i.is(":visible"),p=d(zb).filter(":visible:not(:animated)").not(k);return j.update(a),e&&l.stealfocus!==E&&c(d(":focus")),i.toggleClass("blurs",l.blur),e&&i.appendTo(b.body),i.is(":animated")&&o===e&&h!==E||!e&&p.length?j:(i.stop(D,E),d.isFunction(m)?m.call(i,e):m===E?i[n]():i.fadeTo(parseInt(g,10)||90,e?1:0,function(){e||i.hide()}),e||i.queue(function(a){i.css({left:"",top:""}),d(zb).length||i.detach(),a()}),h=e,f.destroyed&&(f=F),j)}}),j.init()},xb=new xb,d.extend(w.prototype,{init:function(a){var b=a.tooltip;return this.options.on?(a.elements.overlay=xb.elem,b.addClass(yb).css("z-index",y.modal_zindex+d(zb).length),a._bind(b,["tooltipshow","tooltiphide"],function(a,c,e){var f=a.originalEvent;if(a.target===b[0])if(f&&"tooltiphide"===a.type&&/mouse(leave|enter)/.test(f.type)&&d(f.relatedTarget).closest(xb.elem[0]).length)try{a.preventDefault()}catch(g){}else(!f||f&&"tooltipsolo"!==f.type)&&this.toggle(a,"tooltipshow"===a.type,e)},this._ns,this),a._bind(b,"tooltipfocus",function(a,c){if(!a.isDefaultPrevented()&&a.target===b[0]){var e=d(zb),f=y.modal_zindex+e.length,g=parseInt(b[0].style.zIndex,10);xb.elem[0].style.zIndex=f-1,e.each(function(){this.style.zIndex>g&&(this.style.zIndex-=1)}),e.filter("."+$).qtip("blur",a.originalEvent),b.addClass($)[0].style.zIndex=f,xb.update(c);try{a.preventDefault()}catch(h){}}},this._ns,this),void a._bind(b,"tooltiphide",function(a){a.target===b[0]&&d(zb).filter(":visible").not(b).last().qtip("focus",a)},this._ns,this)):this},toggle:function(a,b,c){return a&&a.isDefaultPrevented()?this:void xb.toggle(this.qtip,!!b,c)},destroy:function(){this.qtip.tooltip.removeClass(yb),this.qtip._unbind(this.qtip.tooltip,this._ns),xb.toggle(this.qtip,E),delete this.qtip.elements.overlay}}),wb=R.modal=function(a){return new w(a,a.options.show.modal)},wb.sanitize=function(a){a.show&&("object"!=typeof a.show.modal?a.show.modal={on:!!a.show.modal}:"undefined"==typeof a.show.modal.on&&(a.show.modal.on=D))},y.modal_zindex=y.zindex-200,wb.initialize="render",B.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},d.extend(D,y.defaults,{show:{modal:{on:E,effect:D,blur:D,stealfocus:D,escape:D}}}),R.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],s=u[a],t=v[a],w=c===Q,x=s===f?j:s===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=q[f]+r[f]-(n?0:m[f]),A=z-k,B=k+j-(h===I?o:p)-z,C=x-(u.precedance===a||s===u[b]?y:0)-(t===O?i/2:0);return w?(C=(s===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-m[f]+r[f],k-C,Math.min(Math.max(-m[f]+r[f]+(h===I?o:p),k+C),d[f],"center"===s?k-x:1e9))):(e*=c===P?2:0,A>0&&(s!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(s!==g||A>0)&&(d[f]-=(s===O?-C:C)+e,l.invert(a,g)),d[f]<q&&-d[f]>B&&(d[f]=k,l=u.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s=e.target,t=c.elements.tooltip,u=e.my,v=e.at,w=e.adjust,x=w.method.split(" "),y=x[0],z=x[1]||x[0],A=e.viewport,B=e.container,C=(c.cache,{left:0,top:0});return A.jquery&&s[0]!==a&&s[0]!==b.body&&"none"!==w.method?(m=B.offset()||C,n="static"===B.css("position"),k="fixed"===t.css("position"),o=A[0]===a?A.width():A.outerWidth(E),p=A[0]===a?A.height():A.outerHeight(E),q={left:k?0:A.scrollLeft(),top:k?0:A.scrollTop()},r=A.offset()||C,("shift"!==y||"shift"!==z)&&(l=u.clone()),C={left:"none"!==y?j(G,H,y,w.x,L,N,I,f,h):0,top:"none"!==z?j(H,G,z,w.y,K,M,J,g,i):0,my:l}):C},R.polys={polygon:function(a,b){var c,d,e,f={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:E},g=0,h=[],i=1,j=1,k=0,l=0;for(g=a.length;g--;)c=[parseInt(a[--g],10),parseInt(a[g+1],10)],c[0]>f.position.right&&(f.position.right=c[0]),c[0]<f.position.left&&(f.position.left=c[0]),c[1]>f.position.bottom&&(f.position.bottom=c[1]),c[1]<f.position.top&&(f.position.top=c[1]),h.push(c);if(d=f.width=Math.abs(f.position.right-f.position.left),e=f.height=Math.abs(f.position.bottom-f.position.top),"c"===b.abbrev())f.position={left:f.position.left+f.width/2,top:f.position.top+f.height/2};else{for(;d>0&&e>0&&i>0&&j>0;)for(d=Math.floor(d/2),e=Math.floor(e/2),b.x===L?i=d:b.x===N?i=f.width-d:i+=Math.floor(d/2),b.y===K?j=e:b.y===M?j=f.height-e:j+=Math.floor(e/2),g=h.length;g--&&!(h.length<2);)k=h[g][0]-f.position.left,l=h[g][1]-f.position.top,(b.x===L&&k>=i||b.x===N&&i>=k||b.x===O&&(i>k||k>f.width-i)||b.y===K&&l>=j||b.y===M&&j>=l||b.y===O&&(j>l||l>f.height-j))&&h.splice(g,1);f.position={left:h[0][0],top:h[0][1]}}return f},rect:function(a,b,c,d){return{width:Math.abs(c-a),height:Math.abs(d-b),position:{left:Math.min(a,c),top:Math.min(b,d)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(a,b,c,d,e){var f=R.polys._angles[e.abbrev()],g=0===f?0:c*Math.cos(f*Math.PI),h=d*Math.sin(f*Math.PI);return{width:2*c-Math.abs(g),height:2*d-Math.abs(h),position:{left:a+g,top:b+h},adjustable:E}},circle:function(a,b,c,d){return R.polys.ellipse(a,b,c,c,d)}},R.svg=function(a,c,e){for(var f,g,h,i,j,k,l,m,n,o=(d(b),c[0]),p=d(o.ownerSVGElement),q=o.ownerDocument,r=(parseInt(c.css("stroke-width"),10)||0)/2;!o.getBBox;)o=o.parentNode;if(!o.getBBox||!o.parentNode)return E;switch(o.nodeName){case"ellipse":case"circle":m=R.polys.ellipse(o.cx.baseVal.value,o.cy.baseVal.value,(o.rx||o.r).baseVal.value+r,(o.ry||o.r).baseVal.value+r,e);break;case"line":case"polygon":case"polyline":for(l=o.points||[{x:o.x1.baseVal.value,y:o.y1.baseVal.value},{x:o.x2.baseVal.value,y:o.y2.baseVal.value}],m=[],k=-1,i=l.numberOfItems||l.length;++k<i;)j=l.getItem?l.getItem(k):l[k],m.push.apply(m,[j.x,j.y]);m=R.polys.polygon(m,e);break;default:m=o.getBBox(),m={width:m.width,height:m.height,position:{left:m.x,top:m.y}}}return n=m.position,p=p[0],p.createSVGPoint&&(g=o.getScreenCTM(),l=p.createSVGPoint(),l.x=n.left,l.y=n.top,h=l.matrixTransform(g),n.left=h.x,n.top=h.y),q!==b&&"mouse"!==a.position.target&&(f=d((q.defaultView||q.parentWindow).frameElement).offset(),f&&(n.left+=f.left,n.top+=f.top)),q=d(q),n.left+=q.scrollLeft(),n.top+=q.scrollTop(),m},R.imagemap=function(a,b,c){b.jquery||(b=d(b));var e,f,g,h,i,j=(b.attr("shape")||"rect").toLowerCase().replace("poly","polygon"),k=d('img[usemap="#'+b.parent("map").attr("name")+'"]'),l=d.trim(b.attr("coords")),m=l.replace(/,$/,"").split(",");if(!k.length)return E;if("polygon"===j)h=R.polys.polygon(m,c);else{if(!R.polys[j])return E;for(g=-1,i=m.length,f=[];++g<i;)f.push(parseInt(m[g],10));h=R.polys[j].apply(this,f.concat(c))}return e=k.offset(),e.left+=Math.ceil((k.outerWidth(E)-k.width())/2),e.top+=Math.ceil((k.outerHeight(E)-k.height())/2),h.position.left+=e.left,h.position.top+=e.top,h};var Ab,Bb='<iframe class="qtip-bgiframe" frameborder="0" tabindex="-1" src="javascript:\'\';" style="display:block; position:absolute; z-index:-1; filter:alpha(opacity=0); -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";"></iframe>';d.extend(x.prototype,{_scroll:function(){var b=this.qtip.elements.overlay;b&&(b[0].style.top=d(a).scrollTop()+"px")},init:function(c){var e=c.tooltip;d("select, object").length<1&&(this.bgiframe=c.elements.bgiframe=d(Bb).appendTo(e),c._bind(e,"tooltipmove",this.adjustBGIFrame,this._ns,this)),this.redrawContainer=d("<div/>",{id:S+"-rcontainer"}).appendTo(b.body),c.elements.overlay&&c.elements.overlay.addClass("qtipmodal-ie6fix")&&(c._bind(a,["scroll","resize"],this._scroll,this._ns,this),c._bind(e,["tooltipshow"],this._scroll,this._ns,this)),this.redraw()},adjustBGIFrame:function(){var a,b,c=this.qtip.tooltip,d={height:c.outerHeight(E),width:c.outerWidth(E)},e=this.qtip.plugins.tip,f=this.qtip.elements.tip;b=parseInt(c.css("borderLeftWidth"),10)||0,b={left:-b,top:-b},e&&f&&(a="x"===e.corner.precedance?[I,L]:[J,K],b[a[1]]-=f[a[0]]()),this.bgiframe.css(b).css(d)},redraw:function(){if(this.qtip.rendered<1||this.drawing)return this;var a,b,c,d,e=this.qtip.tooltip,f=this.qtip.options.style,g=this.qtip.options.position.container;return this.qtip.drawing=1,f.height&&e.css(J,f.height),f.width?e.css(I,f.width):(e.css(I,"").appendTo(this.redrawContainer),b=e.width(),1>b%2&&(b+=1),c=e.css("maxWidth")||"",d=e.css("minWidth")||"",a=(c+d).indexOf("%")>-1?g.width()/100:0,c=(c.indexOf("%")>-1?a:1)*parseInt(c,10)||b,d=(d.indexOf("%")>-1?a:1)*parseInt(d,10)||0,b=c+d?Math.min(Math.max(b,d),c):b,e.css(I,Math.round(b)).appendTo(g)),this.drawing=0,this},destroy:function(){this.bgiframe&&this.bgiframe.remove(),this.qtip._unbind([a,this.qtip.tooltip],this._ns)}}),Ab=R.ie6=function(a){return 6===db.ie?new x(a):E},Ab.initialize="render",B.ie6={"^content|style$":function(){this.redraw()}}})}(window,document);
|
5 |
+
//# sourceMappingURL=jquery.qtip.min.js.map
|
classes/package.database.php
CHANGED
@@ -11,6 +11,7 @@ class DUP_Database {
|
|
11 |
public $FilterTables;
|
12 |
public $FilterOn;
|
13 |
public $Name;
|
|
|
14 |
|
15 |
//PROTECTED
|
16 |
protected $Package;
|
@@ -74,11 +75,11 @@ class DUP_Database {
|
|
74 |
|
75 |
//File below 10k will be incomplete
|
76 |
$sql_file_size = filesize($this->dbStorePath);
|
77 |
-
DUP_Log::Info(
|
78 |
if ($sql_file_size < 10000) {
|
79 |
DUP_Log::Error("SQL file size too low.", "File does not look complete. Check permission on file and parent directory at [{$this->dbStorePath}]");
|
80 |
}
|
81 |
-
|
82 |
DUP_Log::Info("SQL FILE TIME: " . date("Y-m-d H:i:s"));
|
83 |
DUP_Log::Info("SQL RUNTIME: {$time_sum}");
|
84 |
|
@@ -206,6 +207,8 @@ class DUP_Database {
|
|
206 |
$host = reset($host);
|
207 |
$port = strpos(DB_HOST, ':') ? end(explode( ':', DB_HOST ) ) : '';
|
208 |
$name = DB_NAME;
|
|
|
|
|
209 |
//Build command
|
210 |
$cmd = escapeshellarg($exePath);
|
211 |
$cmd .= ' --no-create-db';
|
@@ -213,9 +216,15 @@ class DUP_Database {
|
|
213 |
$cmd .= ' --hex-blob';
|
214 |
$cmd .= ' --skip-add-drop-table';
|
215 |
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
//Filter tables
|
217 |
-
$tables
|
218 |
-
$filterTables
|
219 |
$tblAllCount = count($tables);
|
220 |
$tblFilterOn = ($this->FilterOn) ? 'ON' : 'OFF';
|
221 |
|
@@ -227,9 +236,7 @@ class DUP_Database {
|
|
227 |
}
|
228 |
}
|
229 |
}
|
230 |
-
|
231 |
-
$tblFilterCount = $tblAllCount - $tblCreateCount;
|
232 |
-
|
233 |
$cmd .= ' -u ' . escapeshellarg(DB_USER);
|
234 |
$cmd .= (DB_PASSWORD) ?
|
235 |
' -p' . escapeshellarg(DB_PASSWORD) : '';
|
@@ -248,9 +255,12 @@ class DUP_Database {
|
|
248 |
}
|
249 |
$output = (strlen($output)) ? $output : "Ran from {$exePath}";
|
250 |
|
251 |
-
|
252 |
-
|
|
|
|
|
253 |
DUP_Log::Info("RESPONSE: {$output}");
|
|
|
254 |
|
255 |
$sql_footer = "\n\n/* Duplicator WordPress Timestamp: " . date("Y-m-d H:i:s") . "*/\n";
|
256 |
$sql_footer .= "/* " . DUPLICATOR_DB_EOF_MARKER . " */\n";
|
11 |
public $FilterTables;
|
12 |
public $FilterOn;
|
13 |
public $Name;
|
14 |
+
public $Compatible;
|
15 |
|
16 |
//PROTECTED
|
17 |
protected $Package;
|
75 |
|
76 |
//File below 10k will be incomplete
|
77 |
$sql_file_size = filesize($this->dbStorePath);
|
78 |
+
DUP_Log::Info("SQL FILE SIZE: " . DUP_Util::ByteSize($sql_file_size) . " ({$sql_file_size})");
|
79 |
if ($sql_file_size < 10000) {
|
80 |
DUP_Log::Error("SQL file size too low.", "File does not look complete. Check permission on file and parent directory at [{$this->dbStorePath}]");
|
81 |
}
|
82 |
+
|
83 |
DUP_Log::Info("SQL FILE TIME: " . date("Y-m-d H:i:s"));
|
84 |
DUP_Log::Info("SQL RUNTIME: {$time_sum}");
|
85 |
|
207 |
$host = reset($host);
|
208 |
$port = strpos(DB_HOST, ':') ? end(explode( ':', DB_HOST ) ) : '';
|
209 |
$name = DB_NAME;
|
210 |
+
$mysqlcompat_on = isset($this->Compatible) && strlen($this->Compatible);
|
211 |
+
|
212 |
//Build command
|
213 |
$cmd = escapeshellarg($exePath);
|
214 |
$cmd .= ' --no-create-db';
|
216 |
$cmd .= ' --hex-blob';
|
217 |
$cmd .= ' --skip-add-drop-table';
|
218 |
|
219 |
+
//Compatibility mode
|
220 |
+
if ($mysqlcompat_on) {
|
221 |
+
DUP_Log::Info("COMPATIBLE: [{$this->Compatible}]");
|
222 |
+
$cmd .= " --compatible={$this->Compatible}";
|
223 |
+
}
|
224 |
+
|
225 |
//Filter tables
|
226 |
+
$tables = $wpdb->get_col('SHOW TABLES');
|
227 |
+
$filterTables = isset($this->FilterTables) ? explode(',', $this->FilterTables) : null;
|
228 |
$tblAllCount = count($tables);
|
229 |
$tblFilterOn = ($this->FilterOn) ? 'ON' : 'OFF';
|
230 |
|
236 |
}
|
237 |
}
|
238 |
}
|
239 |
+
|
|
|
|
|
240 |
$cmd .= ' -u ' . escapeshellarg(DB_USER);
|
241 |
$cmd .= (DB_PASSWORD) ?
|
242 |
' -p' . escapeshellarg(DB_PASSWORD) : '';
|
255 |
}
|
256 |
$output = (strlen($output)) ? $output : "Ran from {$exePath}";
|
257 |
|
258 |
+
$tblCreateCount = count($tables);
|
259 |
+
$tblFilterCount = $tblAllCount - $tblCreateCount;
|
260 |
+
|
261 |
+
DUP_Log::Info("FILTERED: [{$this->FilterTables}]");
|
262 |
DUP_Log::Info("RESPONSE: {$output}");
|
263 |
+
DUP_Log::Info("TABLES: total:{$tblAllCount} | filtered:{$tblFilterCount} | create:{$tblCreateCount}");
|
264 |
|
265 |
$sql_footer = "\n\n/* Duplicator WordPress Timestamp: " . date("Y-m-d H:i:s") . "*/\n";
|
266 |
$sql_footer .= "/* " . DUPLICATOR_DB_EOF_MARKER . " */\n";
|
classes/package.php
CHANGED
@@ -132,10 +132,13 @@ class DUP_Package {
|
|
132 |
$report['ARC']['Status']['Size'],
|
133 |
$report['ARC']['Status']['Names'],
|
134 |
$report['ARC']['Status']['Big'],
|
135 |
-
$db['Status']
|
|
|
136 |
|
137 |
-
$warn_counts = array_count_values($warnings);
|
|
|
138 |
$report['RPT']['Warnings'] = $warn_counts['Warn'];
|
|
|
139 |
$report['RPT']['ScanTime'] = DUP_Util::ElapsedTime(DUP_Util::GetMicrotime(), $timerStart);
|
140 |
$fp = fopen(DUPLICATOR_SSDIR_PATH_TMP . "/{$this->ScanFile}", 'w');
|
141 |
fwrite($fp, json_encode($report));
|
@@ -276,9 +279,10 @@ class DUP_Package {
|
|
276 |
$name = substr(sanitize_file_name($name), 0 , 40);
|
277 |
$name = str_replace($name_chars, '', $name);
|
278 |
|
279 |
-
$filter_dirs
|
280 |
-
$filter_exts
|
281 |
-
$tablelist
|
|
|
282 |
|
283 |
//PACKAGE
|
284 |
$this->Version = DUPLICATOR_VERSION;
|
@@ -305,6 +309,7 @@ class DUP_Package {
|
|
305 |
//DATABASE
|
306 |
$this->Database->FilterOn = isset($post['dbfilter-on']) ? 1 : 0;
|
307 |
$this->Database->FilterTables = esc_html($tablelist);
|
|
|
308 |
|
309 |
update_option(self::OPT_ACTIVE, $this);
|
310 |
}
|
132 |
$report['ARC']['Status']['Size'],
|
133 |
$report['ARC']['Status']['Names'],
|
134 |
$report['ARC']['Status']['Big'],
|
135 |
+
$db['Status']['Size'],
|
136 |
+
$db['Status']['Rows']);
|
137 |
|
138 |
+
$warn_counts = array_count_values($warnings);
|
139 |
+
|
140 |
$report['RPT']['Warnings'] = $warn_counts['Warn'];
|
141 |
+
$report['RPT']['Success'] = $warn_counts['Good'];
|
142 |
$report['RPT']['ScanTime'] = DUP_Util::ElapsedTime(DUP_Util::GetMicrotime(), $timerStart);
|
143 |
$fp = fopen(DUPLICATOR_SSDIR_PATH_TMP . "/{$this->ScanFile}", 'w');
|
144 |
fwrite($fp, json_encode($report));
|
279 |
$name = substr(sanitize_file_name($name), 0 , 40);
|
280 |
$name = str_replace($name_chars, '', $name);
|
281 |
|
282 |
+
$filter_dirs = isset($post['filter-dirs']) ? $this->parseDirectoryFilter($post['filter-dirs']) : '';
|
283 |
+
$filter_exts = isset($post['filter-exts']) ? $this->parseExtensionFilter($post['filter-exts']) : '';
|
284 |
+
$tablelist = isset($post['dbtables']) ? implode(',', $post['dbtables']) : '';
|
285 |
+
$compatlist = isset($post['dbcompat']) ? implode(',', $post['dbcompat']) : '';
|
286 |
|
287 |
//PACKAGE
|
288 |
$this->Version = DUPLICATOR_VERSION;
|
309 |
//DATABASE
|
310 |
$this->Database->FilterOn = isset($post['dbfilter-on']) ? 1 : 0;
|
311 |
$this->Database->FilterTables = esc_html($tablelist);
|
312 |
+
$this->Database->Compatible = $compatlist;
|
313 |
|
314 |
update_option(self::OPT_ACTIVE, $this);
|
315 |
}
|
classes/utility.php
CHANGED
@@ -255,7 +255,7 @@ class DUP_Util {
|
|
255 |
$capability = apply_filters('wpfront_user_role_editor_duplicator_translate_capability', $capability);
|
256 |
|
257 |
if(!current_user_can($capability)) {
|
258 |
-
wp_die(__('You do not have sufficient permissions to access this page.', '
|
259 |
return;
|
260 |
}
|
261 |
}
|
255 |
$capability = apply_filters('wpfront_user_role_editor_duplicator_translate_capability', $capability);
|
256 |
|
257 |
if(!current_user_can($capability)) {
|
258 |
+
wp_die(__('You do not have sufficient permissions to access this page.', 'duplicator'));
|
259 |
return;
|
260 |
}
|
261 |
}
|
define.php
CHANGED
@@ -3,14 +3,14 @@
|
|
3 |
if (function_exists('plugin_dir_url')) {
|
4 |
|
5 |
|
6 |
-
define('DUPLICATOR_VERSION', '
|
7 |
define("DUPLICATOR_HOMEPAGE", "http://lifeinthegrid.com/labs/duplicator");
|
8 |
define("DUPLICATOR_GIVELINK", "http://lifeinthegrid.com/partner");
|
9 |
define("DUPLICATOR_HELPLINK", "http://lifeinthegrid.com/duplicator-docs");
|
10 |
define("DUPLICATOR_CERTIFIED", "http://lifeinthegrid.com/duplicator-hosts");
|
11 |
define('DUPLICATOR_PLUGIN_URL', plugin_dir_url(__FILE__));
|
12 |
define('DUPLICATOR_SITE_URL', get_site_url());
|
13 |
-
define('DUPLICATOR_LANG_SLUG', '
|
14 |
|
15 |
/* Paths should ALWAYS read "/"
|
16 |
uni: /home/path/file.txt
|
3 |
if (function_exists('plugin_dir_url')) {
|
4 |
|
5 |
|
6 |
+
define('DUPLICATOR_VERSION', '1.1.0');
|
7 |
define("DUPLICATOR_HOMEPAGE", "http://lifeinthegrid.com/labs/duplicator");
|
8 |
define("DUPLICATOR_GIVELINK", "http://lifeinthegrid.com/partner");
|
9 |
define("DUPLICATOR_HELPLINK", "http://lifeinthegrid.com/duplicator-docs");
|
10 |
define("DUPLICATOR_CERTIFIED", "http://lifeinthegrid.com/duplicator-hosts");
|
11 |
define('DUPLICATOR_PLUGIN_URL', plugin_dir_url(__FILE__));
|
12 |
define('DUPLICATOR_SITE_URL', get_site_url());
|
13 |
+
define('DUPLICATOR_LANG_SLUG', 'duplicator');
|
14 |
|
15 |
/* Paths should ALWAYS read "/"
|
16 |
uni: /home/path/file.txt
|
duplicator.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Duplicator
|
4 |
Plugin URI: http://www.lifeinthegrid.com/duplicator/
|
5 |
Description: Create a backup of your WordPress files and database. Duplicate and move an entire site from one location to another in a few steps. Create a full snapshot of your site at any point in time.
|
6 |
-
Version:
|
7 |
Author: LifeInTheGrid
|
8 |
Author URI: http://www.lifeinthegrid.com
|
9 |
Text Domain: wpduplicator
|
@@ -84,7 +84,7 @@ if (is_admin() == true) {
|
|
84 |
if (DUPLICATOR_VERSION != get_option("duplicator_version_plugin")) {
|
85 |
duplicator_activate();
|
86 |
}
|
87 |
-
load_plugin_textdomain('
|
88 |
}
|
89 |
|
90 |
/* DEACTIVATION / UNINSTALL
|
@@ -100,8 +100,8 @@ if (is_admin() == true) {
|
|
100 |
$plugin = plugin_basename(__FILE__);
|
101 |
// create link
|
102 |
if ($file == $plugin) {
|
103 |
-
$links[] = '<a href="admin.php?page=duplicator-help" title="' . __('Get Help', '
|
104 |
-
$links[] = '<a href="admin.php?page=duplicator-about" title="' . __('Support the Plugin', '
|
105 |
return $links;
|
106 |
}
|
107 |
return $links;
|
@@ -140,8 +140,10 @@ if (is_admin() == true) {
|
|
140 |
wp_register_style('dup-jquery-ui', DUPLICATOR_PLUGIN_URL . 'assets/css/jquery-ui.css', null, "1.11.2");
|
141 |
wp_register_style('dup-font-awesome', DUPLICATOR_PLUGIN_URL . 'assets/css/font-awesome.min.css', null, '4.1.0');
|
142 |
wp_register_style('dup-plugin-style', DUPLICATOR_PLUGIN_URL . 'assets/css/style.css', null, DUPLICATOR_VERSION);
|
|
|
143 |
/* JS */
|
144 |
wp_register_script('dup-parsley', DUPLICATOR_PLUGIN_URL . 'assets/js/parsley-standalone.min.js', array('jquery'), '1.1.18');
|
|
|
145 |
}
|
146 |
|
147 |
//PAGE VIEWS
|
@@ -168,11 +170,13 @@ if (is_admin() == true) {
|
|
168 |
* Loads the menu item into the WP tools section and queues the actions for only this plugin */
|
169 |
function duplicator_menu() {
|
170 |
$wpfront_caps_translator = 'wpfront_user_role_editor_duplicator_translate_capability';
|
171 |
-
|
172 |
-
|
|
|
173 |
$perms = 'export';
|
174 |
$perms = apply_filters($wpfront_caps_translator, $perms);
|
175 |
-
$main_menu = add_menu_page('Duplicator Plugin', 'Duplicator', $perms, 'duplicator', 'duplicator_get_menu',
|
|
|
176 |
|
177 |
$perms = 'export';
|
178 |
$perms = apply_filters($wpfront_caps_translator, $perms);
|
@@ -224,6 +228,7 @@ if (is_admin() == true) {
|
|
224 |
wp_enqueue_script('jquery-ui-core');
|
225 |
wp_enqueue_script('jquery-ui-progressbar');
|
226 |
wp_enqueue_script('dup-parsley');
|
|
|
227 |
}
|
228 |
|
229 |
/**
|
@@ -233,6 +238,7 @@ if (is_admin() == true) {
|
|
233 |
wp_enqueue_style('dup-jquery-ui');
|
234 |
wp_enqueue_style('dup-font-awesome');
|
235 |
wp_enqueue_style('dup-plugin-style');
|
|
|
236 |
}
|
237 |
|
238 |
/**
|
@@ -244,7 +250,7 @@ if (is_admin() == true) {
|
|
244 |
$this_plugin = plugin_basename(__FILE__);
|
245 |
|
246 |
if ($file == $this_plugin) {
|
247 |
-
$settings_link = '<a href="admin.php?page=duplicator">' . __("Manage", '
|
248 |
array_unshift($links, $settings_link);
|
249 |
}
|
250 |
return $links;
|
3 |
Plugin Name: Duplicator
|
4 |
Plugin URI: http://www.lifeinthegrid.com/duplicator/
|
5 |
Description: Create a backup of your WordPress files and database. Duplicate and move an entire site from one location to another in a few steps. Create a full snapshot of your site at any point in time.
|
6 |
+
Version: 1.1.0
|
7 |
Author: LifeInTheGrid
|
8 |
Author URI: http://www.lifeinthegrid.com
|
9 |
Text Domain: wpduplicator
|
84 |
if (DUPLICATOR_VERSION != get_option("duplicator_version_plugin")) {
|
85 |
duplicator_activate();
|
86 |
}
|
87 |
+
load_plugin_textdomain('duplicator', FALSE, dirname(plugin_basename(__FILE__)) . '/lang/');
|
88 |
}
|
89 |
|
90 |
/* DEACTIVATION / UNINSTALL
|
100 |
$plugin = plugin_basename(__FILE__);
|
101 |
// create link
|
102 |
if ($file == $plugin) {
|
103 |
+
$links[] = '<a href="admin.php?page=duplicator-help" title="' . __('Get Help', 'duplicator') . '" >' . __('Help', 'duplicator') . '</a>';
|
104 |
+
$links[] = '<a href="admin.php?page=duplicator-about" title="' . __('Support the Plugin', 'duplicator') . '">' . __('About', 'duplicator') . '</a>';
|
105 |
return $links;
|
106 |
}
|
107 |
return $links;
|
140 |
wp_register_style('dup-jquery-ui', DUPLICATOR_PLUGIN_URL . 'assets/css/jquery-ui.css', null, "1.11.2");
|
141 |
wp_register_style('dup-font-awesome', DUPLICATOR_PLUGIN_URL . 'assets/css/font-awesome.min.css', null, '4.1.0');
|
142 |
wp_register_style('dup-plugin-style', DUPLICATOR_PLUGIN_URL . 'assets/css/style.css', null, DUPLICATOR_VERSION);
|
143 |
+
wp_register_style('dup-jquery-qtip',DUPLICATOR_PLUGIN_URL . 'assets/js/jquery.qtip/jquery.qtip.min.css', null, '2.2.1');
|
144 |
/* JS */
|
145 |
wp_register_script('dup-parsley', DUPLICATOR_PLUGIN_URL . 'assets/js/parsley-standalone.min.js', array('jquery'), '1.1.18');
|
146 |
+
wp_register_script('dup-jquery-qtip', DUPLICATOR_PLUGIN_URL . 'assets/js/jquery.qtip/jquery.qtip.min.js', array('jquery'), '2.2.1');
|
147 |
}
|
148 |
|
149 |
//PAGE VIEWS
|
170 |
* Loads the menu item into the WP tools section and queues the actions for only this plugin */
|
171 |
function duplicator_menu() {
|
172 |
$wpfront_caps_translator = 'wpfront_user_role_editor_duplicator_translate_capability';
|
173 |
+
$icon_svg = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQXJ0d29yayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMy4yNXB4IiBoZWlnaHQ9IjIyLjM3NXB4IiB2aWV3Qm94PSIwIDAgMjMuMjUgMjIuMzc1IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyMy4yNSAyMi4zNzUiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGZpbGw9IiM5Q0ExQTYiIGQ9Ik0xOC4wMTEsMS4xODhjLTEuOTk1LDAtMy42MTUsMS42MTgtMy42MTUsMy42MTRjMCwwLjA4NSwwLjAwOCwwLjE2NywwLjAxNiwwLjI1TDcuNzMzLDguMTg0QzcuMDg0LDcuNTY1LDYuMjA4LDcuMTgyLDUuMjQsNy4xODJjLTEuOTk2LDAtMy42MTUsMS42MTktMy42MTUsMy42MTRjMCwxLjk5NiwxLjYxOSwzLjYxMywzLjYxNSwzLjYxM2MwLjYyOSwwLDEuMjIyLTAuMTYyLDEuNzM3LTAuNDQ1bDIuODksMi40MzhjLTAuMTI2LDAuMzY4LTAuMTk4LDAuNzYzLTAuMTk4LDEuMTczYzAsMS45OTUsMS42MTgsMy42MTMsMy42MTQsMy42MTNjMS45OTUsMCwzLjYxNS0xLjYxOCwzLjYxNS0zLjYxM2MwLTEuOTk3LTEuNjItMy42MTQtMy42MTUtMy42MTRjLTAuNjMsMC0xLjIyMiwwLjE2Mi0xLjczNywwLjQ0M2wtMi44OS0yLjQzNWMwLjEyNi0wLjM2OCwwLjE5OC0wLjc2MywwLjE5OC0xLjE3M2MwLTAuMDg0LTAuMDA4LTAuMTY2LTAuMDEzLTAuMjVsNi42NzYtMy4xMzNjMC42NDgsMC42MTksMS41MjUsMS4wMDIsMi40OTUsMS4wMDJjMS45OTQsMCwzLjYxMy0xLjYxNywzLjYxMy0zLjYxM0MyMS42MjUsMi44MDYsMjAuMDA2LDEuMTg4LDE4LjAxMSwxLjE4OHoiLz48L3N2Zz4=';
|
174 |
+
|
175 |
+
//Main Menu
|
176 |
$perms = 'export';
|
177 |
$perms = apply_filters($wpfront_caps_translator, $perms);
|
178 |
+
$main_menu = add_menu_page('Duplicator Plugin', 'Duplicator', $perms, 'duplicator', 'duplicator_get_menu', $icon_svg);
|
179 |
+
//$main_menu = add_menu_page('Duplicator Plugin', 'Duplicator', $perms, 'duplicator', 'duplicator_get_menu', plugins_url('duplicator/assets/img/logo-menu.svg'));
|
180 |
|
181 |
$perms = 'export';
|
182 |
$perms = apply_filters($wpfront_caps_translator, $perms);
|
228 |
wp_enqueue_script('jquery-ui-core');
|
229 |
wp_enqueue_script('jquery-ui-progressbar');
|
230 |
wp_enqueue_script('dup-parsley');
|
231 |
+
wp_enqueue_script('dup-jquery-qtip');
|
232 |
}
|
233 |
|
234 |
/**
|
238 |
wp_enqueue_style('dup-jquery-ui');
|
239 |
wp_enqueue_style('dup-font-awesome');
|
240 |
wp_enqueue_style('dup-plugin-style');
|
241 |
+
wp_enqueue_style('dup-jquery-qtip');
|
242 |
}
|
243 |
|
244 |
/**
|
250 |
$this_plugin = plugin_basename(__FILE__);
|
251 |
|
252 |
if ($file == $this_plugin) {
|
253 |
+
$settings_link = '<a href="admin.php?page=duplicator">' . __("Manage", 'duplicator') . '</a>';
|
254 |
array_unshift($links, $settings_link);
|
255 |
}
|
256 |
return $links;
|
installer/build/ajax.step1.php
CHANGED
@@ -393,8 +393,9 @@ if ($result = mysqli_query($dbh, "SHOW TABLES")) {
|
|
393 |
}
|
394 |
|
395 |
if ($dbtable_count == 0) {
|
396 |
-
DUPX_Log::
|
397 |
-
|
|
|
398 |
}
|
399 |
|
400 |
|
393 |
}
|
394 |
|
395 |
if ($dbtable_count == 0) {
|
396 |
+
DUPX_Log::Error("No tables where created during step 1 of the install. Please review the installer-log.txt file for sql error messages.
|
397 |
+
You may have to manually run the installer-data.sql with a tool like phpmyadmin to validate the data input. If you have enabled compatibility mode
|
398 |
+
during the package creation process then the database server version your using may not be compatible with this script.\n");
|
399 |
}
|
400 |
|
401 |
|
installer/build/classes/class.logging.php
CHANGED
@@ -9,7 +9,7 @@ if (! defined('DUPLICATOR_INIT')) {
|
|
9 |
}
|
10 |
|
11 |
define('ERR_CONFIG_FOUND', 'A wp-config.php already exists in this location. This error prevents users from accidentally overwriting the wrong directories contents. You have two options: <ul><li>Empty this root directory except for the package and installer and try again.</li><li>Delete just the wp-config.php file and try again. This will over-write all other files in the directory.</li></ul>');
|
12 |
-
define('ERR_ZIPNOTFOUND', 'The packaged zip file was not found. Be sure the zip package is in the same directory as the installer file. If you are trying to reinstall a package you can copy the package from the "' . DUPLICATOR_SSDIR_NAME . '" directory back up to your root which is the same location as your installer.php file.');
|
13 |
define('ERR_ZIPOPEN', 'Failed to open zip archive file. Please be sure the archive is completely downloaded before running the installer. Try to extract the archive manually to make sure the file is not corrupted.');
|
14 |
define('ERR_ZIPEXTRACTION', 'Errors extracting zip file. Portions or part of the zip archive did not extract correctly. Try to extract the archive manually with a client side program like unzip/win-zip/winrar to make sure the file is not corrupted. If the file extracts correctly then there is an invalid file or directory that PHP is unable to extract. This can happen if your moving from one operating system to another where certain naming conventions work on one environment and not another. <br/><br/> Workarounds: <br/> 1. Create a new package and be sure to exclude any directories that have invalid names or files in them. This warning will be displayed on the scan results under "Invalid Names". <br/> 2. Manually extract the zip file with a client side program. Then under advanced options in step 1 of the installer check the "Manual package extraction" option and perform the install.');
|
15 |
define('ERR_ZIPMANUAL', 'When choosing manual package extraction, the contents of the package must already be extracted and the wp-config.php and database.sql files must be present in the same directory as the installer.php for the process to continue. Please manually extract the package into the current directory before continuing in manual extraction mode. Also validate that the wp-config.php and database.sql files are present.');
|
9 |
}
|
10 |
|
11 |
define('ERR_CONFIG_FOUND', 'A wp-config.php already exists in this location. This error prevents users from accidentally overwriting the wrong directories contents. You have two options: <ul><li>Empty this root directory except for the package and installer and try again.</li><li>Delete just the wp-config.php file and try again. This will over-write all other files in the directory.</li></ul>');
|
12 |
+
define('ERR_ZIPNOTFOUND', 'The packaged zip file was not found. Be sure the zip package is in the same directory as the installer file and as the correct permissions. If you are trying to reinstall a package you can copy the package from the "' . DUPLICATOR_SSDIR_NAME . '" directory back up to your root which is the same location as your installer.php file.');
|
13 |
define('ERR_ZIPOPEN', 'Failed to open zip archive file. Please be sure the archive is completely downloaded before running the installer. Try to extract the archive manually to make sure the file is not corrupted.');
|
14 |
define('ERR_ZIPEXTRACTION', 'Errors extracting zip file. Portions or part of the zip archive did not extract correctly. Try to extract the archive manually with a client side program like unzip/win-zip/winrar to make sure the file is not corrupted. If the file extracts correctly then there is an invalid file or directory that PHP is unable to extract. This can happen if your moving from one operating system to another where certain naming conventions work on one environment and not another. <br/><br/> Workarounds: <br/> 1. Create a new package and be sure to exclude any directories that have invalid names or files in them. This warning will be displayed on the scan results under "Invalid Names". <br/> 2. Manually extract the zip file with a client side program. Then under advanced options in step 1 of the installer check the "Manual package extraction" option and perform the install.');
|
15 |
define('ERR_ZIPMANUAL', 'When choosing manual package extraction, the contents of the package must already be extracted and the wp-config.php and database.sql files must be present in the same directory as the installer.php for the process to continue. Please manually extract the package into the current directory before continuing in manual extraction mode. Also validate that the wp-config.php and database.sql files are present.');
|
installer/build/classes/class.utils.php
CHANGED
@@ -164,7 +164,7 @@ class DupUtil {
|
|
164 |
while ($table = @mysqli_fetch_array($query)) {
|
165 |
$all_tables[] = $table[0];
|
166 |
}
|
167 |
-
if (is_array($all_tables)) {
|
168 |
return $all_tables;
|
169 |
}
|
170 |
}
|
@@ -310,6 +310,38 @@ class DupUtil {
|
|
310 |
}
|
311 |
}
|
312 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
313 |
|
314 |
}
|
315 |
?>
|
164 |
while ($table = @mysqli_fetch_array($query)) {
|
165 |
$all_tables[] = $table[0];
|
166 |
}
|
167 |
+
if (isset($all_tables) && is_array($all_tables)) {
|
168 |
return $all_tables;
|
169 |
}
|
170 |
}
|
310 |
}
|
311 |
}
|
312 |
|
313 |
+
/**
|
314 |
+
* GET_ZIP_FILES
|
315 |
+
* Returns an array of zip files found in the current directory
|
316 |
+
* @return array of zip files
|
317 |
+
*/
|
318 |
+
static public function get_zip_files() {
|
319 |
+
|
320 |
+
$files = array();
|
321 |
+
foreach (glob("*.zip") as $name) {
|
322 |
+
if (file_exists($name)) {
|
323 |
+
$files[] = $name;
|
324 |
+
}
|
325 |
+
}
|
326 |
+
|
327 |
+
if (count($files) > 0) {
|
328 |
+
return $files;
|
329 |
+
}
|
330 |
+
|
331 |
+
//FALL BACK: Windows XP has bug with glob,
|
332 |
+
//add secondary check for PHP lameness
|
333 |
+
$dh = opendir('.');
|
334 |
+
while (false !== ($name = readdir($dh))) {
|
335 |
+
$ext = substr($name, strrpos($name, '.') + 1);
|
336 |
+
if(in_array($ext, array("zip"))) {
|
337 |
+
$files[] = $name;
|
338 |
+
}
|
339 |
+
}
|
340 |
+
closedir($dh);
|
341 |
+
|
342 |
+
return $files;
|
343 |
+
}
|
344 |
+
|
345 |
|
346 |
}
|
347 |
?>
|
installer/build/view.step1.php
CHANGED
@@ -8,14 +8,15 @@
|
|
8 |
exit;
|
9 |
}
|
10 |
//DETECT ARCHIVE FILES
|
11 |
-
$
|
12 |
-
$
|
13 |
-
|
14 |
-
|
15 |
-
$
|
16 |
-
}
|
17 |
-
|
18 |
-
|
|
|
19 |
}
|
20 |
|
21 |
$req01a = @is_writeable($GLOBALS["CURRENT_ROOT_PATH"]) ? 'Pass' : 'Fail';
|
@@ -26,7 +27,7 @@
|
|
26 |
$req01a = 'Fail';
|
27 |
}
|
28 |
}
|
29 |
-
$req01b = ($
|
30 |
$req01 = ($req01a == 'Pass' && $req01b == 'Pass') ? 'Pass' : 'Fail';
|
31 |
$safe_ini = strtolower(@ini_get('safe_mode'));
|
32 |
$req02 = $safe_ini != 'on' || $safe_ini != 'yes' || $safe_ini != 'true' || ini_get("safe_mode") != 1 ? 'Pass' : 'Fail';
|
@@ -156,7 +157,7 @@ VIEW: STEP 1- INPUT -->
|
|
156 |
<form id='dup-step1-input-form' method="post" class="content-form" parsley-validate>
|
157 |
<input type="hidden" name="action_ajax" value="1" />
|
158 |
<input type="hidden" name="action_step" value="1" />
|
159 |
-
<input type="hidden" name="package_name" value="<?php echo $
|
160 |
|
161 |
<div class="dup-logfile-link">
|
162 |
<select name="logging" id="logging">
|
@@ -336,7 +337,7 @@ VIEW: STEP 1 - AJAX RESULT
|
|
336 |
Auto Posts to view.step2.php -->
|
337 |
<form id='dup-step1-result-form' method="post" class="content-form" style="display:none">
|
338 |
<input type="hidden" name="action_step" value="2" />
|
339 |
-
<input type="hidden" name="package_name" value="<?php echo $
|
340 |
<input type="hidden" name="logging" id="ajax-logging" />
|
341 |
<input type="hidden" name="dbhost" id="ajax-dbhost" />
|
342 |
<input type="hidden" name="dbport" id="ajax-dbport" />
|
@@ -379,7 +380,7 @@ PANEL: SERVER CHECKS -->
|
|
379 |
<div id="dup-step1-dialog" title="System Status" style="display:none">
|
380 |
<div id="dup-step1-dialog-data" style="padding: 0px 10px 10px 10px;">
|
381 |
|
382 |
-
<b>Archive Name:</b> <?php echo $
|
383 |
<b>Package Notes:</b> <?php echo empty($GLOBALS['FW_PACKAGE_NOTES']) ? 'No notes provided for this pakcage.' : $GLOBALS['FW_PACKAGE_NOTES']; ?><br/><br/>
|
384 |
|
385 |
<!-- SYSTEM REQUIREMENTS -->
|
@@ -395,7 +396,7 @@ PANEL: SERVER CHECKS -->
|
|
395 |
<?php
|
396 |
echo "<i>Path: {$GLOBALS['CURRENT_ROOT_PATH']} </i><br/>";
|
397 |
printf("<b>[%s]</b> %s <br/>", $req01a, "Is Writable by PHP");
|
398 |
-
printf("<b>[%s]</b> %s <br/>", $req01b, "Contains only one zip file<div style='padding-left:70px'>Result = {$
|
399 |
?>
|
400 |
</td>
|
401 |
</tr>
|
8 |
exit;
|
9 |
}
|
10 |
//DETECT ARCHIVE FILES
|
11 |
+
$zip_files = DupUtil::get_zip_files();
|
12 |
+
$zip_count = count($zip_files);
|
13 |
+
|
14 |
+
if ($zip_count > 1) {
|
15 |
+
$zip_name = "Too many zip files in directory";
|
16 |
+
} else if ($zip_count == 1) {
|
17 |
+
$zip_name = $zip_files[0];
|
18 |
+
} else {
|
19 |
+
$zip_name = "No package file found";
|
20 |
}
|
21 |
|
22 |
$req01a = @is_writeable($GLOBALS["CURRENT_ROOT_PATH"]) ? 'Pass' : 'Fail';
|
27 |
$req01a = 'Fail';
|
28 |
}
|
29 |
}
|
30 |
+
$req01b = ($zip_count == 1) ? 'Pass' : 'Fail';
|
31 |
$req01 = ($req01a == 'Pass' && $req01b == 'Pass') ? 'Pass' : 'Fail';
|
32 |
$safe_ini = strtolower(@ini_get('safe_mode'));
|
33 |
$req02 = $safe_ini != 'on' || $safe_ini != 'yes' || $safe_ini != 'true' || ini_get("safe_mode") != 1 ? 'Pass' : 'Fail';
|
157 |
<form id='dup-step1-input-form' method="post" class="content-form" parsley-validate>
|
158 |
<input type="hidden" name="action_ajax" value="1" />
|
159 |
<input type="hidden" name="action_step" value="1" />
|
160 |
+
<input type="hidden" name="package_name" value="<?php echo $zip_name ?>" />
|
161 |
|
162 |
<div class="dup-logfile-link">
|
163 |
<select name="logging" id="logging">
|
337 |
Auto Posts to view.step2.php -->
|
338 |
<form id='dup-step1-result-form' method="post" class="content-form" style="display:none">
|
339 |
<input type="hidden" name="action_step" value="2" />
|
340 |
+
<input type="hidden" name="package_name" value="<?php echo $zip_name ?>" />
|
341 |
<input type="hidden" name="logging" id="ajax-logging" />
|
342 |
<input type="hidden" name="dbhost" id="ajax-dbhost" />
|
343 |
<input type="hidden" name="dbport" id="ajax-dbport" />
|
380 |
<div id="dup-step1-dialog" title="System Status" style="display:none">
|
381 |
<div id="dup-step1-dialog-data" style="padding: 0px 10px 10px 10px;">
|
382 |
|
383 |
+
<b>Archive Name:</b> <?php echo $zip_name; ?> <br/>
|
384 |
<b>Package Notes:</b> <?php echo empty($GLOBALS['FW_PACKAGE_NOTES']) ? 'No notes provided for this pakcage.' : $GLOBALS['FW_PACKAGE_NOTES']; ?><br/><br/>
|
385 |
|
386 |
<!-- SYSTEM REQUIREMENTS -->
|
396 |
<?php
|
397 |
echo "<i>Path: {$GLOBALS['CURRENT_ROOT_PATH']} </i><br/>";
|
398 |
printf("<b>[%s]</b> %s <br/>", $req01a, "Is Writable by PHP");
|
399 |
+
printf("<b>[%s]</b> %s <br/>", $req01b, "Contains only one zip file<div style='padding-left:70px'>Result = {$zip_name} <br/> <i>Note: Manual extraction still requires the archive.zip file</i> </div> ");
|
400 |
?>
|
401 |
</td>
|
402 |
</tr>
|
readme.txt
CHANGED
@@ -3,13 +3,12 @@ Contributors: corylamleorg, bobriley
|
|
3 |
Donate link: www.lifeinthegrid.com/partner
|
4 |
Tags: backup, restore, move, migrate, localhost, synchronize, duplicate, clone, automate, niche
|
5 |
Requires at least: 3.9
|
6 |
-
Tested up to: 4.
|
7 |
-
Stable tag:
|
8 |
License: GPLv2
|
9 |
|
10 |
Duplicate, clone, backup, move and transfer an entire site from one location to another.
|
11 |
|
12 |
-
|
13 |
== Description ==
|
14 |
|
15 |
> The Duplicator gives WordPress administrators the ability to migrate, copy or clone a site from one location to another. The plugin also serves as a simple backup utility. The Duplicator supports both serialized and base64 serialized string replacement. If you need to move WordPress or backup WordPress this plugin can help simplify the process. For complete details visit [lifeinthegrid.com](http://lifeinthegrid.com/).
|
@@ -17,33 +16,31 @@ Duplicate, clone, backup, move and transfer an entire site from one location to
|
|
17 |
= Quick Video Demo =
|
18 |
http://www.youtube.com/watch?v=yZ7pHmR9JC8
|
19 |
|
20 |
-
=
|
21 |
-
This
|
22 |
|
23 |
-
=
|
24 |
-
|
25 |
|
26 |
= Please Note =
|
27 |
The underlying logic to backup WordPress, move WordPress and transfer WordPress are very complex. It's impossible to know how each system is setup; this is why your feedback is important to us. Thanks for helping us to make WordPress the best blogging platform in the world.
|
28 |
|
29 |
-
=
|
30 |
-
|
|
|
|
|
31 |
|
32 |
= Active Contributors =
|
33 |
<li>[Paal Joachim Romdahl](http://www.easywebdesigntutorials.com) (Training)</li>
|
34 |
<li>[Hans-M. Herbrand](http://www.web266.de) (German) </li>
|
35 |
<li>[Nicolas Richer](http://nicolasricher.fr) (French)</li>
|
36 |
|
37 |
-
= Other Contributors =
|
38 |
-
<li>[Emilio De Fez](http://www.canaryas.com) (Spanish) </li>
|
39 |
-
<li>[Marco Andrei Kichalowsky](http://www.arsnovasolucoes.com) (Portuguese)</li>
|
40 |
-
Jonathan Foote, Tomas Gurny, Aaron Crawford
|
41 |
-
|
42 |
= Donate =
|
43 |
Enjoy using *Duplicator*? Please consider [making a donation](http://lifeinthegrid.com/partner/) to support the project's continued development.
|
44 |
|
45 |
|
46 |
|
|
|
47 |
== Installation ==
|
48 |
|
49 |
1. Upload `duplicator` folder to the `/wp-content/plugins/` directory
|
3 |
Donate link: www.lifeinthegrid.com/partner
|
4 |
Tags: backup, restore, move, migrate, localhost, synchronize, duplicate, clone, automate, niche
|
5 |
Requires at least: 3.9
|
6 |
+
Tested up to: 4.4
|
7 |
+
Stable tag: 1.1.0
|
8 |
License: GPLv2
|
9 |
|
10 |
Duplicate, clone, backup, move and transfer an entire site from one location to another.
|
11 |
|
|
|
12 |
== Description ==
|
13 |
|
14 |
> The Duplicator gives WordPress administrators the ability to migrate, copy or clone a site from one location to another. The plugin also serves as a simple backup utility. The Duplicator supports both serialized and base64 serialized string replacement. If you need to move WordPress or backup WordPress this plugin can help simplify the process. For complete details visit [lifeinthegrid.com](http://lifeinthegrid.com/).
|
16 |
= Quick Video Demo =
|
17 |
http://www.youtube.com/watch?v=yZ7pHmR9JC8
|
18 |
|
19 |
+
= Admins/Developers/Designers =
|
20 |
+
This tool is great to move or backup Wordpress sites and for pulling production sites down to your local machine for testing and validation. It also works good for developing locally and then pushing up to a production server for site releases/updates or just demoing a site.
|
21 |
|
22 |
+
= Duplicator Pro =
|
23 |
+
Take Duplicator to the next level with the [premium version](http://snapcreek.com/duplicator?wpo-premium) of the plugin. With professional features like, scheduling, cloud storage to Dropbox, Google Drive, FTP and a long list of other enhancements. For a full breakdown of the features found in the professional version checkout the [comparison page](https://snapcreek.com/duplicator/comparison?wpo-compare) .
|
24 |
|
25 |
= Please Note =
|
26 |
The underlying logic to backup WordPress, move WordPress and transfer WordPress are very complex. It's impossible to know how each system is setup; this is why your feedback is important to us. Thanks for helping us to make WordPress the best blogging platform in the world.
|
27 |
|
28 |
+
= Disclaimer =
|
29 |
+
This plugin does require some technical knowledge. If you plan to move WordPress or backup WordPress please use it at your own risk and do not forget to back up your files and databases beforehand. If you're new to WordPress or have a very limited technical background you may consider seeking out professional help your first time using the plugin. If you need to move or backup WordPress and would like additional help please visit the Duplicator [resources page](http://lifeinthegrid.com/labs/duplicator/) .
|
30 |
+
|
31 |
+
|
32 |
|
33 |
= Active Contributors =
|
34 |
<li>[Paal Joachim Romdahl](http://www.easywebdesigntutorials.com) (Training)</li>
|
35 |
<li>[Hans-M. Herbrand](http://www.web266.de) (German) </li>
|
36 |
<li>[Nicolas Richer](http://nicolasricher.fr) (French)</li>
|
37 |
|
|
|
|
|
|
|
|
|
|
|
38 |
= Donate =
|
39 |
Enjoy using *Duplicator*? Please consider [making a donation](http://lifeinthegrid.com/partner/) to support the project's continued development.
|
40 |
|
41 |
|
42 |
|
43 |
+
|
44 |
== Installation ==
|
45 |
|
46 |
1. Upload `duplicator` folder to the `/wp-content/plugins/` directory
|
views/actions.php
CHANGED
@@ -92,6 +92,7 @@ function duplicator_package_delete() {
|
|
92 |
foreach ($list as $id) {
|
93 |
|
94 |
$getResult = $wpdb->get_results($wpdb->prepare("SELECT name, hash FROM `{$tblName}` WHERE id = %d", $id), ARRAY_A);
|
|
|
95 |
if ($getResult) {
|
96 |
$row = $getResult[0];
|
97 |
$nameHash = "{$row['name']}_{$row['hash']}";
|
@@ -117,7 +118,9 @@ function duplicator_package_delete() {
|
|
117 |
@unlink(DUP_Util::SafePath(DUPLICATOR_SSDIR_PATH . "/{$nameHash}.log"));
|
118 |
//Unfinished Zip files
|
119 |
$tmpZip = DUPLICATOR_SSDIR_PATH_TMP . "/{$nameHash}_archive.zip.*";
|
120 |
-
|
|
|
|
|
121 |
@unlink(DUP_Util::SafePath());
|
122 |
$delCount++;
|
123 |
}
|
92 |
foreach ($list as $id) {
|
93 |
|
94 |
$getResult = $wpdb->get_results($wpdb->prepare("SELECT name, hash FROM `{$tblName}` WHERE id = %d", $id), ARRAY_A);
|
95 |
+
|
96 |
if ($getResult) {
|
97 |
$row = $getResult[0];
|
98 |
$nameHash = "{$row['name']}_{$row['hash']}";
|
118 |
@unlink(DUP_Util::SafePath(DUPLICATOR_SSDIR_PATH . "/{$nameHash}.log"));
|
119 |
//Unfinished Zip files
|
120 |
$tmpZip = DUPLICATOR_SSDIR_PATH_TMP . "/{$nameHash}_archive.zip.*";
|
121 |
+
if ($tmpZip !== false) {
|
122 |
+
array_map('unlink', glob($tmpZip));
|
123 |
+
}
|
124 |
@unlink(DUP_Util::SafePath());
|
125 |
$delCount++;
|
126 |
}
|
views/help/about.php
CHANGED
@@ -38,7 +38,7 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
38 |
|
39 |
<div class="wrap dup-wrap dup-support-all">
|
40 |
|
41 |
-
<?php duplicator_header(__("About", '
|
42 |
<hr size="1" />
|
43 |
|
44 |
<div style="width:850px; margin:auto; margin-top: 20px">
|
@@ -46,12 +46,12 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
46 |
<tr>
|
47 |
<td style="width:90px">
|
48 |
<a href="http://lifeinthegrid.com/labs/duplicator" target="_blank">
|
49 |
-
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/logo-box.png" style='text-align:top; margin
|
50 |
</a>
|
51 |
</td>
|
52 |
<td valign="top" style="padding-top:10px; font-size:14px">
|
53 |
<?php
|
54 |
-
_e("Created for Admins, Developers and Designers the Duplicator can streamline your workflows and help you quickly clone a WordPress application. Migrating a WordPress site manually can be very time consuming. The Duplicator was made to help you speed up the migration process. Please help us to continue the development effort of this plugin.", '
|
55 |
?>
|
56 |
</td>
|
57 |
</tr>
|
@@ -61,14 +61,14 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
61 |
<!-- ==================================================
|
62 |
SUPPORT DUPLICATOR
|
63 |
==================================================== -->
|
64 |
-
<h2><?php _e('Support Duplicator', '
|
65 |
|
66 |
<!-- PARTNER WITH US -->
|
67 |
<div class="dup-support-give-area">
|
68 |
<table class="dup-support-hlp-hdrs">
|
69 |
<tr >
|
70 |
<td style="height:30px; text-align: center;">
|
71 |
-
<span style="display: inline-block; margin-top: 5px"><?php _e('Partner with Us', '
|
72 |
</td>
|
73 |
</tr>
|
74 |
</table>
|
@@ -80,14 +80,14 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
80 |
<input name="cmd" type="hidden" value="_s-xclick" />
|
81 |
<input name="hosted_button_id" type="hidden" value="EYJ7AV43RTZJL" />
|
82 |
<input alt="PayPal - The safer, easier way to pay online!" name="submit" src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/paypal.png" type="image" />
|
83 |
-
<div style="margin-top:-5px"><?php _e('Keep Active and Online', '
|
84 |
<img src="https://www.paypalobjects.com/WEBSCR-640-20110401-1/en_US/i/scr/pixel.gif" border="0" alt="" width="1" height="1" />
|
85 |
</form>
|
86 |
</div>
|
87 |
</td>
|
88 |
<td style="padding-right:40px;" valign="top">
|
89 |
<a href="http://wordpress.org/extend/plugins/duplicator" target="_blank"><img id="dup-img-5stars" src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/5star.png" /></a>
|
90 |
-
<div style="margin-top:-4px"><?php _e('Leave 5 Stars', '
|
91 |
</td>
|
92 |
</tr>
|
93 |
<tr>
|
@@ -104,14 +104,14 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
104 |
<table class="dup-support-hlp-hdrs">
|
105 |
<tr>
|
106 |
<td style="height:30px; text-align: center;">
|
107 |
-
<span style="display: inline-block; margin-top: 5px"><?php _e('Spread the Word', '
|
108 |
</td>
|
109 |
</tr>
|
110 |
</table>
|
111 |
<div class="dup-support-hlp-txt">
|
112 |
<?php
|
113 |
-
$title = __("Duplicate Your WordPress", '
|
114 |
-
$summary = __("Rapid WordPress Duplication by LifeInTheGrid.com", '
|
115 |
$share_this_data = "st_url='" . DUPLICATOR_HOMEPAGE . "' st_title='{$title}' st_summary='{$summary}'";
|
116 |
?>
|
117 |
<div style="width:100%; padding:20px 10px 0px 10px" align="center">
|
@@ -127,8 +127,8 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
127 |
|
128 |
|
129 |
<div style='margin: auto; text-align: center; margin-top: 20px'>
|
130 |
-
|
131 |
-
<i class="fa fa-rocket" style="margin-right:8px"></i><?php _e('Get More Great Tools', '
|
132 |
</a>
|
133 |
</div>
|
134 |
|
38 |
|
39 |
<div class="wrap dup-wrap dup-support-all">
|
40 |
|
41 |
+
<?php duplicator_header(__("About", 'duplicator')) ?>
|
42 |
<hr size="1" />
|
43 |
|
44 |
<div style="width:850px; margin:auto; margin-top: 20px">
|
46 |
<tr>
|
47 |
<td style="width:90px">
|
48 |
<a href="http://lifeinthegrid.com/labs/duplicator" target="_blank">
|
49 |
+
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/logo-box.png" style='text-align:top; margin:0' />
|
50 |
</a>
|
51 |
</td>
|
52 |
<td valign="top" style="padding-top:10px; font-size:14px">
|
53 |
<?php
|
54 |
+
_e("Created for Admins, Developers and Designers the Duplicator can streamline your workflows and help you quickly clone a WordPress application. Migrating a WordPress site manually can be very time consuming. The Duplicator was made to help you speed up the migration process. Please help us to continue the development effort of this plugin.", 'duplicator');
|
55 |
?>
|
56 |
</td>
|
57 |
</tr>
|
61 |
<!-- ==================================================
|
62 |
SUPPORT DUPLICATOR
|
63 |
==================================================== -->
|
64 |
+
<h2><?php _e('Support Duplicator', 'duplicator') ?></h2>
|
65 |
|
66 |
<!-- PARTNER WITH US -->
|
67 |
<div class="dup-support-give-area">
|
68 |
<table class="dup-support-hlp-hdrs">
|
69 |
<tr >
|
70 |
<td style="height:30px; text-align: center;">
|
71 |
+
<span style="display: inline-block; margin-top: 5px"><?php _e('Partner with Us', 'duplicator') ?></span>
|
72 |
</td>
|
73 |
</tr>
|
74 |
</table>
|
80 |
<input name="cmd" type="hidden" value="_s-xclick" />
|
81 |
<input name="hosted_button_id" type="hidden" value="EYJ7AV43RTZJL" />
|
82 |
<input alt="PayPal - The safer, easier way to pay online!" name="submit" src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/paypal.png" type="image" />
|
83 |
+
<div style="margin-top:-5px"><?php _e('Keep Active and Online', 'duplicator') ?></div>
|
84 |
<img src="https://www.paypalobjects.com/WEBSCR-640-20110401-1/en_US/i/scr/pixel.gif" border="0" alt="" width="1" height="1" />
|
85 |
</form>
|
86 |
</div>
|
87 |
</td>
|
88 |
<td style="padding-right:40px;" valign="top">
|
89 |
<a href="http://wordpress.org/extend/plugins/duplicator" target="_blank"><img id="dup-img-5stars" src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/5star.png" /></a>
|
90 |
+
<div style="margin-top:-4px"><?php _e('Leave 5 Stars', 'duplicator') ?></div></a>
|
91 |
</td>
|
92 |
</tr>
|
93 |
<tr>
|
104 |
<table class="dup-support-hlp-hdrs">
|
105 |
<tr>
|
106 |
<td style="height:30px; text-align: center;">
|
107 |
+
<span style="display: inline-block; margin-top: 5px"><?php _e('Spread the Word', 'duplicator') ?></span>
|
108 |
</td>
|
109 |
</tr>
|
110 |
</table>
|
111 |
<div class="dup-support-hlp-txt">
|
112 |
<?php
|
113 |
+
$title = __("Duplicate Your WordPress", 'duplicator');
|
114 |
+
$summary = __("Rapid WordPress Duplication by LifeInTheGrid.com", 'duplicator');
|
115 |
$share_this_data = "st_url='" . DUPLICATOR_HOMEPAGE . "' st_title='{$title}' st_summary='{$summary}'";
|
116 |
?>
|
117 |
<div style="width:100%; padding:20px 10px 0px 10px" align="center">
|
127 |
|
128 |
|
129 |
<div style='margin: auto; text-align: center; margin-top: 20px'>
|
130 |
+
<a href="http://lifeinthegrid.com/tools" target="_blank" class="button button-large button-primary">
|
131 |
+
<i class="fa fa-rocket" style="margin-right:8px"></i><?php _e('Get More Great Tools', 'duplicator') ?>...
|
132 |
</a>
|
133 |
</div>
|
134 |
|
views/help/gopro.php
CHANGED
@@ -18,11 +18,11 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
18 |
div.dup-compare-area div.feature div.info {display:none; padding:7px 7px 5px 7px; font-style: italic; color: #555; font-size: 14px}
|
19 |
div.dup-gopro-header {text-align: center; margin: 5px 0 15px 0; font-size:18px; line-height: 30px}
|
20 |
div.dup-gopro-header b {font-size: 35px}
|
21 |
-
a.dup-check-it-btn {box-shadow: 5px 5px 5px 0px #999 !important; font-size: 20px !important; height:
|
22 |
|
23 |
#comparison-table { margin-top:25px; border-spacing: 0px; width: 100%}
|
24 |
#comparison-table th { color: #E21906;}
|
25 |
-
#comparison-table td, #comparison-table th { font-size: 1.2rem; padding:
|
26 |
#comparison-table .feature-column { text-align: left; width: 46%}
|
27 |
#comparison-table .check-column { text-align: center; width: 27% }
|
28 |
#comparison-table tr:nth-child(2n+2) {background-color: #f6f6f6; }
|
@@ -35,9 +35,9 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
35 |
<div class="dup-pro-area">
|
36 |
|
37 |
<div>
|
38 |
-
<h1 style="font-size:34px; margin-top:
|
39 |
-
|
40 |
-
|
41 |
</h1>
|
42 |
<h3 style="margin-top:10px; font-size:18px; font-style: italic; color:gray">
|
43 |
<?php DUP_Util::_e('The simplicity of Duplicator') ?>
|
@@ -98,27 +98,37 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
98 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
99 |
</tr>
|
100 |
<tr>
|
101 |
-
<td class="feature-column">
|
102 |
<td class="check-column"></td>
|
103 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
104 |
</tr>
|
105 |
<tr>
|
106 |
-
<td class="feature-column">
|
107 |
<td class="check-column"></td>
|
108 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
109 |
</tr>
|
110 |
<tr>
|
111 |
-
<td class="feature-column">
|
112 |
<td class="check-column"></td>
|
113 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
114 |
-
</tr>
|
115 |
<tr>
|
116 |
<td class="feature-column">File Filters</td>
|
117 |
<td class="check-column"></td>
|
118 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
119 |
</tr>
|
120 |
<tr>
|
121 |
-
<td class="feature-column">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
<td class="check-column"></td>
|
123 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
124 |
</tr>
|
18 |
div.dup-compare-area div.feature div.info {display:none; padding:7px 7px 5px 7px; font-style: italic; color: #555; font-size: 14px}
|
19 |
div.dup-gopro-header {text-align: center; margin: 5px 0 15px 0; font-size:18px; line-height: 30px}
|
20 |
div.dup-gopro-header b {font-size: 35px}
|
21 |
+
a.dup-check-it-btn {box-shadow: 5px 5px 5px 0px #999 !important; font-size: 20px !important; height:45px !important; padding:7px 30px 0 30px !important;}
|
22 |
|
23 |
#comparison-table { margin-top:25px; border-spacing: 0px; width: 100%}
|
24 |
#comparison-table th { color: #E21906;}
|
25 |
+
#comparison-table td, #comparison-table th { font-size: 1.2rem; padding: 12px; }
|
26 |
#comparison-table .feature-column { text-align: left; width: 46%}
|
27 |
#comparison-table .check-column { text-align: center; width: 27% }
|
28 |
#comparison-table tr:nth-child(2n+2) {background-color: #f6f6f6; }
|
35 |
<div class="dup-pro-area">
|
36 |
|
37 |
<div>
|
38 |
+
<h1 style="font-size:34px; margin-top:20px">
|
39 |
+
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/logo-pro-32.png" style='text-align:top; margin:0;' />
|
40 |
+
<?php DUP_Util::_e('Duplicator Professional') ?>
|
41 |
</h1>
|
42 |
<h3 style="margin-top:10px; font-size:18px; font-style: italic; color:gray">
|
43 |
<?php DUP_Util::_e('The simplicity of Duplicator') ?>
|
98 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
99 |
</tr>
|
100 |
<tr>
|
101 |
+
<td class="feature-column">Large Package Support</td>
|
102 |
<td class="check-column"></td>
|
103 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
104 |
</tr>
|
105 |
<tr>
|
106 |
+
<td class="feature-column">Multisite Backup</td>
|
107 |
<td class="check-column"></td>
|
108 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
109 |
</tr>
|
110 |
<tr>
|
111 |
+
<td class="feature-column">Email Alerts</td>
|
112 |
<td class="check-column"></td>
|
113 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
114 |
+
</tr>
|
115 |
<tr>
|
116 |
<td class="feature-column">File Filters</td>
|
117 |
<td class="check-column"></td>
|
118 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
119 |
</tr>
|
120 |
<tr>
|
121 |
+
<td class="feature-column">Custom Search & Replace</td>
|
122 |
+
<td class="check-column"></td>
|
123 |
+
<td class="check-column"><i class="fa fa-check"></i></td>
|
124 |
+
</tr>
|
125 |
+
<tr>
|
126 |
+
<td class="feature-column">Manual Transfers</td>
|
127 |
+
<td class="check-column"></td>
|
128 |
+
<td class="check-column"><i class="fa fa-check"></i></td>
|
129 |
+
</tr>
|
130 |
+
<tr>
|
131 |
+
<td class="feature-column">Active Customer Support</td>
|
132 |
<td class="check-column"></td>
|
133 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
134 |
</tr>
|
views/help/help.php
CHANGED
@@ -26,7 +26,7 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
26 |
|
27 |
<div class="wrap dup-wrap dup-support-all">
|
28 |
|
29 |
-
<?php duplicator_header(__("Help", '
|
30 |
<hr size="1" />
|
31 |
|
32 |
<div style="width:800px; margin:auto; margin-top: 20px">
|
@@ -35,7 +35,7 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
35 |
<td style="width:70px"><i class="fa fa-question-circle fa-5x"></i></td>
|
36 |
<td valign="top" style="padding-top:10px; font-size:13px">
|
37 |
<?php
|
38 |
-
_e("Migrating WordPress is a complex process and the logic to make all the magic happen smoothly may not work quickly with every site. With over 30,000 plugins and a very complex server eco-system some migrations may run into issues. This is why the Duplicator includes a detailed knowledgebase that can help with many common issues. Resources to additional support, approved hosting, and alternatives to fit your needs can be found below.", '
|
39 |
?>
|
40 |
</td>
|
41 |
|
@@ -47,17 +47,17 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
47 |
<div class="dup-support-hlp-area">
|
48 |
<div class="dup-support-hlp-hdrs">
|
49 |
<i class="fa fa-cube fa-2x pull-left"></i>
|
50 |
-
<div><?php _e('Knowledgebase', '
|
51 |
</div>
|
52 |
<div class="dup-support-hlp-txt">
|
53 |
-
<?php _e('Complete Online Documentation', '
|
54 |
<select id="dup-support-kb-lnks" style="margin-top:18px; font-size:16px; min-width: 170px">
|
55 |
-
<option> <?php _e('Choose A Section', '
|
56 |
-
<option value="http://lifeinthegrid.com/duplicator-quick"><?php _e('Quick Start', '
|
57 |
-
<option value="http://lifeinthegrid.com/duplicator-guide"><?php _e('User Guide', '
|
58 |
-
<option value="http://lifeinthegrid.com/duplicator-faq"><?php _e('FAQs', '
|
59 |
-
<option value="http://lifeinthegrid.com/duplicator-log"><?php _e('Change Log', '
|
60 |
-
<option value="http://lifeinthegrid.com/labs/duplicator"><?php _e('Product Page', '
|
61 |
</select>
|
62 |
</div>
|
63 |
</div>
|
@@ -66,14 +66,14 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
66 |
<div class="dup-support-hlp-area">
|
67 |
<div class="dup-support-hlp-hdrs">
|
68 |
<i class="fa fa-lightbulb-o fa-2x pull-left"></i>
|
69 |
-
<div><?php _e('Online Support', '
|
70 |
</div>
|
71 |
<div class="dup-support-hlp-txt">
|
72 |
-
<?php _e("Get Help From IT Professionals", '
|
73 |
<br/><br/>
|
74 |
<div class="dup-support-txts-links">
|
75 |
<button class="button button-primary button-large" onclick="Duplicator.OpenSupportWindow();
|
76 |
-
return false;"><?php _e('Get Support!', '
|
77 |
</div>
|
78 |
</div>
|
79 |
</div>
|
@@ -85,13 +85,13 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
85 |
|
86 |
<div class="dup-support-hlp-hdrs">
|
87 |
<i class="fa fa-bolt fa-2x pull-left"></i>
|
88 |
-
<div><?php _e('Approved Hosting', '
|
89 |
</div>
|
90 |
<div class="dup-support-hlp-txt">
|
91 |
-
<?php _e('Servers That Work With Duplicator', '
|
92 |
<br/><br/>
|
93 |
<div class="dup-support-txts-links">
|
94 |
-
<button class="button button-primary button-large" onclick="window.open('http://lifeinthegrid.com/duplicator-hosts', 'litg');"><?php _e('Trusted Providers!', '
|
95 |
</div>
|
96 |
</div>
|
97 |
</div>
|
@@ -101,13 +101,13 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
101 |
|
102 |
<div class="dup-support-hlp-hdrs">
|
103 |
<i class="fa fa-code-fork fa-2x pull-left"></i>
|
104 |
-
<div><?php _e('Alternatives', '
|
105 |
</div>
|
106 |
<div class="dup-support-hlp-txt">
|
107 |
-
<?php _e('Other Commercial Resources', '
|
108 |
<br/><br/>
|
109 |
<div class="dup-support-txts-links">
|
110 |
-
<button class="button button-primary button-large" onclick="window.open('http://lifeinthegrid.com/duplicator-getalts', 'litg');"><?php _e('Pro Solutions!', '
|
111 |
</div>
|
112 |
</div>
|
113 |
</div>
|
26 |
|
27 |
<div class="wrap dup-wrap dup-support-all">
|
28 |
|
29 |
+
<?php duplicator_header(__("Help", 'duplicator')) ?>
|
30 |
<hr size="1" />
|
31 |
|
32 |
<div style="width:800px; margin:auto; margin-top: 20px">
|
35 |
<td style="width:70px"><i class="fa fa-question-circle fa-5x"></i></td>
|
36 |
<td valign="top" style="padding-top:10px; font-size:13px">
|
37 |
<?php
|
38 |
+
_e("Migrating WordPress is a complex process and the logic to make all the magic happen smoothly may not work quickly with every site. With over 30,000 plugins and a very complex server eco-system some migrations may run into issues. This is why the Duplicator includes a detailed knowledgebase that can help with many common issues. Resources to additional support, approved hosting, and alternatives to fit your needs can be found below.", 'duplicator');
|
39 |
?>
|
40 |
</td>
|
41 |
|
47 |
<div class="dup-support-hlp-area">
|
48 |
<div class="dup-support-hlp-hdrs">
|
49 |
<i class="fa fa-cube fa-2x pull-left"></i>
|
50 |
+
<div><?php _e('Knowledgebase', 'duplicator') ?></div>
|
51 |
</div>
|
52 |
<div class="dup-support-hlp-txt">
|
53 |
+
<?php _e('Complete Online Documentation', 'duplicator'); ?><br/>
|
54 |
<select id="dup-support-kb-lnks" style="margin-top:18px; font-size:16px; min-width: 170px">
|
55 |
+
<option> <?php _e('Choose A Section', 'duplicator') ?> </option>
|
56 |
+
<option value="http://lifeinthegrid.com/duplicator-quick"><?php _e('Quick Start', 'duplicator') ?></option>
|
57 |
+
<option value="http://lifeinthegrid.com/duplicator-guide"><?php _e('User Guide', 'duplicator') ?></option>
|
58 |
+
<option value="http://lifeinthegrid.com/duplicator-faq"><?php _e('FAQs', 'duplicator') ?></option>
|
59 |
+
<option value="http://lifeinthegrid.com/duplicator-log"><?php _e('Change Log', 'duplicator') ?></option>
|
60 |
+
<option value="http://lifeinthegrid.com/labs/duplicator"><?php _e('Product Page', 'duplicator') ?></option>
|
61 |
</select>
|
62 |
</div>
|
63 |
</div>
|
66 |
<div class="dup-support-hlp-area">
|
67 |
<div class="dup-support-hlp-hdrs">
|
68 |
<i class="fa fa-lightbulb-o fa-2x pull-left"></i>
|
69 |
+
<div><?php _e('Online Support', 'duplicator') ?></div>
|
70 |
</div>
|
71 |
<div class="dup-support-hlp-txt">
|
72 |
+
<?php _e("Get Help From IT Professionals", 'duplicator'); ?>
|
73 |
<br/><br/>
|
74 |
<div class="dup-support-txts-links">
|
75 |
<button class="button button-primary button-large" onclick="Duplicator.OpenSupportWindow();
|
76 |
+
return false;"><?php _e('Get Support!', 'duplicator') ?></button>
|
77 |
</div>
|
78 |
</div>
|
79 |
</div>
|
85 |
|
86 |
<div class="dup-support-hlp-hdrs">
|
87 |
<i class="fa fa-bolt fa-2x pull-left"></i>
|
88 |
+
<div><?php _e('Approved Hosting', 'duplicator') ?></div>
|
89 |
</div>
|
90 |
<div class="dup-support-hlp-txt">
|
91 |
+
<?php _e('Servers That Work With Duplicator', 'duplicator'); ?>
|
92 |
<br/><br/>
|
93 |
<div class="dup-support-txts-links">
|
94 |
+
<button class="button button-primary button-large" onclick="window.open('http://lifeinthegrid.com/duplicator-hosts', 'litg');"><?php _e('Trusted Providers!', 'duplicator') ?></button>
|
95 |
</div>
|
96 |
</div>
|
97 |
</div>
|
101 |
|
102 |
<div class="dup-support-hlp-hdrs">
|
103 |
<i class="fa fa-code-fork fa-2x pull-left"></i>
|
104 |
+
<div><?php _e('Alternatives', 'duplicator') ?></div>
|
105 |
</div>
|
106 |
<div class="dup-support-hlp-txt">
|
107 |
+
<?php _e('Other Commercial Resources', 'duplicator'); ?>
|
108 |
<br/><br/>
|
109 |
<div class="dup-support-txts-links">
|
110 |
+
<button class="button button-primary button-large" onclick="window.open('http://lifeinthegrid.com/duplicator-getalts', 'litg');"><?php _e('Pro Solutions!', 'duplicator') ?></button>
|
111 |
</div>
|
112 |
</div>
|
113 |
</div>
|
views/inc.header.php
CHANGED
@@ -2,13 +2,5 @@
|
|
2 |
<!-- !!DO NOT CHANGE OR EDIT PRODUCT NAME!!
|
3 |
If your interested in Private Label Rights please contact us for
|
4 |
customizations to product labeling: lifeinthegrid.com -->
|
5 |
-
|
6 |
-
|
7 |
-
<div class="dup-header" style="margin:0px 0px 10px 0px">
|
8 |
-
<h2>Duplicator » <?php echo $title ?><br/></h2>
|
9 |
-
</div>
|
10 |
-
|
11 |
-
<?php } ?>
|
12 |
-
|
13 |
-
|
14 |
-
|
2 |
<!-- !!DO NOT CHANGE OR EDIT PRODUCT NAME!!
|
3 |
If your interested in Private Label Rights please contact us for
|
4 |
customizations to product labeling: lifeinthegrid.com -->
|
5 |
+
<h1><?php echo $title ?><br/></h1>
|
6 |
+
<?php } ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
views/javascript.php
CHANGED
@@ -85,7 +85,7 @@ Duplicator.UI.AnimateProgressBar = function(id) {
|
|
85 |
function runAnimation($pb) {
|
86 |
$pb.css({ "padding-left": "0%", "padding-right": "90%" });
|
87 |
$pb.progressbar("option", "value", 100);
|
88 |
-
$pb.animate({ paddingLeft: "90%", paddingRight: "0%" },
|
89 |
}
|
90 |
}
|
91 |
|
@@ -118,6 +118,26 @@ jQuery(document).ready(function($) {
|
|
118 |
? $arrow.html('<i class="fa fa-caret-up"></i>')
|
119 |
: $arrow.html('<i class="fa fa-caret-down"></i>');
|
120 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
});
|
122 |
|
123 |
</script>
|
85 |
function runAnimation($pb) {
|
86 |
$pb.css({ "padding-left": "0%", "padding-right": "90%" });
|
87 |
$pb.progressbar("option", "value", 100);
|
88 |
+
$pb.animate({ paddingLeft: "90%", paddingRight: "0%" }, 3000, "linear", function () { runAnimation($pb); });
|
89 |
}
|
90 |
}
|
91 |
|
118 |
? $arrow.html('<i class="fa fa-caret-up"></i>')
|
119 |
: $arrow.html('<i class="fa fa-caret-down"></i>');
|
120 |
});
|
121 |
+
|
122 |
+
//Look for tooltip data
|
123 |
+
$('i[data-tooltip!=""]').qtip({
|
124 |
+
content: {
|
125 |
+
attr: 'data-tooltip',
|
126 |
+
title: {
|
127 |
+
text: function() { return $(this).attr('data-tooltip-title'); }
|
128 |
+
}
|
129 |
+
},
|
130 |
+
style: {
|
131 |
+
classes: 'qtip-light qtip-rounded qtip-shadow',
|
132 |
+
width: 500
|
133 |
+
},
|
134 |
+
position: {
|
135 |
+
my: 'top left',
|
136 |
+
at: 'bottom center'
|
137 |
+
}
|
138 |
+
});
|
139 |
+
|
140 |
+
|
141 |
});
|
142 |
|
143 |
</script>
|
views/packages/controller.php
CHANGED
@@ -73,16 +73,24 @@ $current_tab = isset($_REQUEST['tab']) ? esc_html($_REQUEST['tab']) : 'list';
|
|
73 |
|
74 |
<div class="wrap">
|
75 |
<?php
|
76 |
-
|
77 |
|
78 |
switch ($current_tab) {
|
79 |
-
case 'list':
|
|
|
|
|
80 |
break;
|
81 |
-
case 'new1':
|
|
|
|
|
82 |
break;
|
83 |
-
case 'new2':
|
|
|
|
|
84 |
break;
|
85 |
-
case 'new3':
|
|
|
|
|
86 |
break;
|
87 |
}
|
88 |
?>
|
73 |
|
74 |
<div class="wrap">
|
75 |
<?php
|
76 |
+
|
77 |
|
78 |
switch ($current_tab) {
|
79 |
+
case 'list':
|
80 |
+
duplicator_header(__("Packages » All", 'duplicator'));
|
81 |
+
include('list.base.php');
|
82 |
break;
|
83 |
+
case 'new1':
|
84 |
+
duplicator_header(__("Packages » New", 'duplicator'));
|
85 |
+
include('new1.base.php');
|
86 |
break;
|
87 |
+
case 'new2':
|
88 |
+
duplicator_header(__("Packages » New", 'duplicator'));
|
89 |
+
include('new2.base.php');
|
90 |
break;
|
91 |
+
case 'new3':
|
92 |
+
duplicator_header(__("Packages » New", 'duplicator'));
|
93 |
+
include('new3.base.php');
|
94 |
break;
|
95 |
}
|
96 |
?>
|
views/packages/list-nodata.php
CHANGED
@@ -4,15 +4,15 @@
|
|
4 |
|
5 |
<div id='dup-list-alert-nodata'>
|
6 |
<i class="fa fa-archive"></i>
|
7 |
-
<?php _e("No Packages Found.", '
|
8 |
-
<?php _e("Click the 'Create New' button to build a package.", '
|
9 |
|
10 |
<i>
|
11 |
<?php
|
12 |
printf("%s <a href='admin.php?page=duplicator-help'>%s</a> %s",
|
13 |
-
__("Please visit the", '
|
14 |
-
__("help page", '
|
15 |
-
__("for additional support", '
|
16 |
?>
|
17 |
</i>
|
18 |
|
@@ -21,16 +21,16 @@
|
|
21 |
<div id="dup-notice-01" class='dup-notice-msg'>
|
22 |
<i class="fa fa-exclamation-triangle fa-lg"></i>
|
23 |
<?php
|
24 |
-
_e("Older packages prior to 0.5.0 are no longer supported in this version.", '
|
25 |
|
26 |
printf(" %s <a href='admin.php?page=duplicator-help'>%s</a> %s",
|
27 |
-
__("To get an older package please visit the", '
|
28 |
-
__("help page", '
|
29 |
-
__("and look for the Change Log link for additional instructions.", '
|
30 |
?><br/>
|
31 |
<label for="dup-notice01-chk">
|
32 |
<input type="checkbox" class="dup-notice-chk" id="dup-notice01-chk" name="dup-notice01-chk" onclick="Duplicator.UI.SaveViewStateByPost('dup-notice01-chk', 1); jQuery('#dup-notice-01').hide()" />
|
33 |
-
<?php _e("Hide this message", '
|
34 |
</label>
|
35 |
</div><br/><br/>
|
36 |
<?php else : ?>
|
4 |
|
5 |
<div id='dup-list-alert-nodata'>
|
6 |
<i class="fa fa-archive"></i>
|
7 |
+
<?php _e("No Packages Found.", 'duplicator'); ?><br/>
|
8 |
+
<?php _e("Click the 'Create New' button to build a package.", 'duplicator'); ?> <br/><br/>
|
9 |
|
10 |
<i>
|
11 |
<?php
|
12 |
printf("%s <a href='admin.php?page=duplicator-help'>%s</a> %s",
|
13 |
+
__("Please visit the", 'duplicator'),
|
14 |
+
__("help page", 'duplicator'),
|
15 |
+
__("for additional support", 'duplicator'));
|
16 |
?>
|
17 |
</i>
|
18 |
|
21 |
<div id="dup-notice-01" class='dup-notice-msg'>
|
22 |
<i class="fa fa-exclamation-triangle fa-lg"></i>
|
23 |
<?php
|
24 |
+
_e("Older packages prior to 0.5.0 are no longer supported in this version.", 'duplicator');
|
25 |
|
26 |
printf(" %s <a href='admin.php?page=duplicator-help'>%s</a> %s",
|
27 |
+
__("To get an older package please visit the", 'duplicator'),
|
28 |
+
__("help page", 'duplicator'),
|
29 |
+
__("and look for the Change Log link for additional instructions.", 'duplicator'));
|
30 |
?><br/>
|
31 |
<label for="dup-notice01-chk">
|
32 |
<input type="checkbox" class="dup-notice-chk" id="dup-notice01-chk" name="dup-notice01-chk" onclick="Duplicator.UI.SaveViewStateByPost('dup-notice01-chk', 1); jQuery('#dup-notice-01').hide()" />
|
33 |
+
<?php _e("Hide this message", 'duplicator'); ?>
|
34 |
</label>
|
35 |
</div><br/><br/>
|
36 |
<?php else : ?>
|
views/packages/list.base.php
CHANGED
@@ -38,7 +38,7 @@
|
|
38 |
|
39 |
<?php if($statusCount >= 3) : ?>
|
40 |
<div style="font-size:13px; position: absolute; top:10px; right:20px">
|
41 |
-
<a href="admin.php?page=duplicator-about" style="color:maroon"><i><i class="fa fa-check-circle"></i> <?php _e("Help Support Duplicator", '
|
42 |
</div>
|
43 |
<?php endif; ?>
|
44 |
|
@@ -49,19 +49,19 @@ TOOL-BAR -->
|
|
49 |
<td style="white-space: nowrap">
|
50 |
<div class="alignleft actions">
|
51 |
<select id="dup-pack-bulk-actions">
|
52 |
-
<option value="-1" selected="selected"><?php _e("Bulk Actions", '
|
53 |
-
<option value="delete" title="<?php _e("Delete selected package(s)", '
|
54 |
</select>
|
55 |
-
<input type="button" id="dup-pack-bulk-apply" class="button action" value="<?php _e("Apply", '
|
56 |
</div>
|
57 |
<br class="clear">
|
58 |
</td>
|
59 |
<td align="center">
|
60 |
-
<a href="?page=duplicator-tools" id="btn-logs-dialog" class="button" title="<?php _e("Package Logs", '
|
61 |
</td>
|
62 |
<td class="dup-toolbar-btns">
|
63 |
-
<span><i class="fa fa-archive"></i> <?php _e("All Packages", '
|
64 |
-
<a id="dup-pro-create-new" href="?page=duplicator&tab=new1" class="add-new-h2"><?php _e("Create New", '
|
65 |
</td>
|
66 |
</tr>
|
67 |
</table>
|
@@ -86,13 +86,13 @@ TOOL-BAR -->
|
|
86 |
<table class="widefat dup-pack-table">
|
87 |
<thead>
|
88 |
<tr>
|
89 |
-
<th><input type="checkbox" id="dup-bulk-action-all" title="<?php _e("Select all packages", '
|
90 |
-
<th><?php _e("Details", '
|
91 |
-
<th><?php _e("Created", '
|
92 |
-
<th><?php _e("Size", '
|
93 |
-
<th style="width:90%;"><?php _e("Name", '
|
94 |
<th style="text-align:center;" colspan="2">
|
95 |
-
<?php _e("Package", '
|
96 |
</th>
|
97 |
</tr>
|
98 |
</thead>
|
@@ -123,7 +123,7 @@ TOOL-BAR -->
|
|
123 |
$detail_id = "duplicator-detail-row-{$rowCount}";
|
124 |
$plugin_version = empty($pack_version) ? 'unknown' : $pack_version;
|
125 |
$plugin_compat = version_compare($plugin_version, '0.5.0');
|
126 |
-
$notes = empty($pack_notes) ? __("(No Notes Taken)", '
|
127 |
|
128 |
//Links
|
129 |
$uniqueid = "{$row['name']}_{$row['hash']}";
|
@@ -141,31 +141,31 @@ TOOL-BAR -->
|
|
141 |
<?php if ($row['status'] >= 100) : ?>
|
142 |
<tr class="dup-pack-info <?php echo $css_alt ?>">
|
143 |
<td class="pass"><input name="delete_confirm" type="checkbox" id="<?php echo $row['id'] ;?>" /></td>
|
144 |
-
<td><a href="javascript:void(0);" onclick="return Duplicator.Pack.ToggleDetail('<?php echo $detail_id ;?>');">[<?php echo __("View", '
|
145 |
<td><?php echo date( "m-d-y G:i", strtotime($row['created']));?></td>
|
146 |
<td><?php echo DUP_Util::ByteSize($pack_archive_size); ?></td>
|
147 |
<td class='pack-name'><?php echo $pack_name ;?></td>
|
148 |
<td class="get-btns">
|
149 |
-
<button id="<?php echo "{$uniqueid}_installer.php" ?>" class="button no-select" onclick="Duplicator.Pack.DownloadFile('<?php echo $installfilelink; ?>', this); return false;"><i class="fa fa-bolt"></i> <?php _e("Installer", '
|
150 |
</td>
|
151 |
<td class="get-btns">
|
152 |
-
<button id="<?php echo "{$uniqueid}_archive.zip" ?>" class="button no-select" onclick="Duplicator.Pack.DownloadFile('<?php echo $packagepath; ?>', this); return false;"><i class="fa fa-file-archive-o"></i> <?php _e("Archive", '
|
153 |
</td>
|
154 |
</tr>
|
155 |
<tr>
|
156 |
<td colspan="8" id="<?php echo $detail_id; ?>" class="dup-pack-details <?php echo $css_alt ?>">
|
157 |
-
<b><?php _e("Version", '
|
158 |
-
<b><?php _e("User", '
|
159 |
-
<b><?php _e("Hash", '
|
160 |
-
<b><?php _e("Notes", '
|
161 |
<div style="height:7px"> </div>
|
162 |
-
<button class="button" onclick="Duplicator.Pack.ShowLinksDialog(<?php echo "'{$sqlfilelink}', '{$packagepath}', '{$installfilelink}', '{$logfilelink}', '{$reportfilelink}' " ;?>); return false;" class="thickbox"><i class="fa fa-lock"></i> <?php _e("Links", '
|
163 |
-
<button class="button" onclick="window.open(<?php echo "'{$sqlfilelink}', '_blank'" ;?>); return false;"><i class="fa fa-table"></i> <?php _e("SQL", '
|
164 |
-
<button class="button" onclick="Duplicator.OpenLogWindow(<?php echo "'{$logfilename}'" ;?>); return false;"><i class="fa fa-list-alt"></i> <?php _e("Log", '
|
165 |
<?php if ($package_debug) : ?>
|
166 |
<div style="margin-top:7px">
|
167 |
-
<a href="javascript:void(0)" onclick="window.open(<?php echo "'{$reportfilelink}', '_blank'" ;?>); return false;">[<?php _e("Open Scan Report", '
|
168 |
-
<a href="javascript:void(0)" onclick="jQuery(this).parent().find('.dup-pack-debug').toggle()">[<?php _e("View Package Object", '
|
169 |
<textarea class="dup-pack-debug"><?php @print_r($Package); ?> </textarea>
|
170 |
</div>
|
171 |
<?php endif; ?>
|
@@ -186,33 +186,33 @@ TOOL-BAR -->
|
|
186 |
?>
|
187 |
<tr class="dup-pack-info <?php echo $css_alt ?>">
|
188 |
<td class="fail"><input name="delete_confirm" type="checkbox" id="<?php echo $row['id'] ;?>" /></td>
|
189 |
-
<td><a href="javascript:void(0);" onclick="return Duplicator.Pack.ToggleDetail('<?php echo $detail_id ;?>');">[<?php echo __("View", '
|
190 |
<td><?php echo date( "m-d-y G:i", strtotime($row['created']));?></td>
|
191 |
<td><?php echo DUP_Util::ByteSize($size); ?></td>
|
192 |
<td class='pack-name'><?php echo $pack_name ;?></td>
|
193 |
<td class="get-btns" colspan="2">
|
194 |
<span style='display:inline-block; padding:7px 40px 0px 0px'>
|
195 |
-
<a href="javascript:void(0);" onclick="return Duplicator.Pack.ToggleDetail('<?php echo $detail_id ;?>');"><?php _e("View Error Details", '
|
196 |
</span>
|
197 |
</td>
|
198 |
</tr>
|
199 |
<tr>
|
200 |
<td colspan="8" id="<?php echo $detail_id; ?>" class="dup-pack-details <?php echo $css_alt ?>">
|
201 |
<div class="dup-details-area-error">
|
202 |
-
<b><?php _e("Version", '
|
203 |
-
<b><?php _e("User", '
|
204 |
-
<b><?php _e("Hash", '
|
205 |
|
206 |
<?php if ($pack_name == 'unknown') : ?>
|
207 |
-
<b><?php _e("Unrecoverable Error! Please remove this package.", '
|
208 |
<?php else : ?>
|
209 |
-
<b><?php _e("Notes", '
|
210 |
<?php
|
211 |
printf("%s <u><a href='http://lifeinthegrid.com/duplicator-docs' target='_blank'>%s</a></u>",
|
212 |
-
__("This package has encountered errors. Click 'View Log' for more details. For additional support see the ", '
|
213 |
-
__("online knowledgebase", '
|
214 |
?><div style="height:7px"> </div>
|
215 |
-
<button class='button' onclick="Duplicator.OpenLogWindow(<?php echo "'{$logfilename}'" ;?>); return false;"><?php _e("View Log", '
|
216 |
<?php if ($package_debug) : ?>
|
217 |
<div style="margin-top:7px">
|
218 |
<a href="javascript:void(0)" onclick="jQuery(this).parent().find('.dup-pack-debug').toggle()">[View Package Object]</a><br/>
|
@@ -234,8 +234,8 @@ TOOL-BAR -->
|
|
234 |
<tfoot>
|
235 |
<tr>
|
236 |
<th colspan="8" style='text-align:right; font-size:12px'>
|
237 |
-
<?php echo _e("Packages", '
|
238 |
-
<?php echo _e("Total Size", '
|
239 |
</th>
|
240 |
</tr>
|
241 |
</tfoot>
|
@@ -254,16 +254,16 @@ TOOL-BAR -->
|
|
254 |
<!-- ==========================================
|
255 |
DIALOG: QUICK PATH -->
|
256 |
<?php add_thickbox(); ?>
|
257 |
-
<div id="dup-dlg-quick-path" title="<?php _e('Download Links', '
|
258 |
<p>
|
259 |
<i class="fa fa-lock"></i>
|
260 |
-
<?php _e("The following links contain sensitive data. Please share with caution!", '
|
261 |
</p>
|
262 |
|
263 |
<div style="padding: 0px 15px 15px 15px;">
|
264 |
<a href="javascript:void(0)" style="display:inline-block; text-align:right" onclick="Duplicator.Pack.GetLinksText()">[Select All]</a> <br/>
|
265 |
<textarea id="dup-dlg-quick-path-data" style='border:1px solid silver; border-radius:3px; width:99%; height:225px; font-size:11px'></textarea><br/>
|
266 |
-
<i style='font-size:11px'><?php _e("The database SQL script is a quick link to your database backup script. An exact copy is also stored in the package.", '
|
267 |
</div>
|
268 |
</div>
|
269 |
|
@@ -286,7 +286,7 @@ jQuery(document).ready(function($) {
|
|
286 |
var count = 0;
|
287 |
|
288 |
if ($("#dup-pack-bulk-actions").val() != "delete") {
|
289 |
-
alert("<?php _e('Please select an action from the bulk action drop down menu to perform a specific action.', '
|
290 |
return;
|
291 |
}
|
292 |
$("input[name=delete_confirm]").each(function() {
|
@@ -294,11 +294,11 @@ jQuery(document).ready(function($) {
|
|
294 |
});
|
295 |
var list = arr.join(',');
|
296 |
if (list.length == 0) {
|
297 |
-
alert("<?php _e('Please select at least one package to delete.', '
|
298 |
return;
|
299 |
}
|
300 |
|
301 |
-
if (confirm("<?php _e('Are you sure, you want to delete the selected package(s)?', '
|
302 |
|
303 |
$.ajax({
|
304 |
type: "POST",
|
@@ -332,14 +332,14 @@ jQuery(document).ready(function($) {
|
|
332 |
Duplicator.Pack.ShowLinksDialog = function(db, install, pack, log, report) {
|
333 |
|
334 |
var url = '#TB_inline?width=650&height=350&inlineId=dup-dlg-quick-path';
|
335 |
-
tb_show("<?php _e('Package File Links', '
|
336 |
|
337 |
var msg = <?php printf('"%s:\n" + db + "\n\n%s:\n" + install + "\n\n%s:\n" + pack + "\n\n%s:\n" + log + "\n\n%s:\n" + report;',
|
338 |
-
__("DATABASE", '
|
339 |
-
__("PACKAGE", '
|
340 |
-
__("INSTALLER", '
|
341 |
-
__("LOG", '
|
342 |
-
__("REPORT", '
|
343 |
?>
|
344 |
$("#dup-dlg-quick-path-data").val(msg);
|
345 |
return false;
|
38 |
|
39 |
<?php if($statusCount >= 3) : ?>
|
40 |
<div style="font-size:13px; position: absolute; top:10px; right:20px">
|
41 |
+
<a href="admin.php?page=duplicator-about" style="color:maroon"><i><i class="fa fa-check-circle"></i> <?php _e("Help Support Duplicator", 'duplicator') ?></i> </a>
|
42 |
</div>
|
43 |
<?php endif; ?>
|
44 |
|
49 |
<td style="white-space: nowrap">
|
50 |
<div class="alignleft actions">
|
51 |
<select id="dup-pack-bulk-actions">
|
52 |
+
<option value="-1" selected="selected"><?php _e("Bulk Actions", 'duplicator') ?></option>
|
53 |
+
<option value="delete" title="<?php _e("Delete selected package(s)", 'duplicator') ?>"><?php _e("Delete", 'duplicator') ?></option>
|
54 |
</select>
|
55 |
+
<input type="button" id="dup-pack-bulk-apply" class="button action" value="<?php _e("Apply", 'duplicator') ?>" onclick="Duplicator.Pack.Delete()">
|
56 |
</div>
|
57 |
<br class="clear">
|
58 |
</td>
|
59 |
<td align="center">
|
60 |
+
<a href="?page=duplicator-tools" id="btn-logs-dialog" class="button" title="<?php _e("Package Logs", 'duplicator') ?>..."><i class="fa fa-list-alt"></i>
|
61 |
</td>
|
62 |
<td class="dup-toolbar-btns">
|
63 |
+
<span><i class="fa fa-archive"></i> <?php _e("All Packages", 'duplicator'); ?></span>
|
64 |
+
<a id="dup-pro-create-new" href="?page=duplicator&tab=new1" class="add-new-h2"><?php _e("Create New", 'duplicator'); ?></a>
|
65 |
</td>
|
66 |
</tr>
|
67 |
</table>
|
86 |
<table class="widefat dup-pack-table">
|
87 |
<thead>
|
88 |
<tr>
|
89 |
+
<th><input type="checkbox" id="dup-bulk-action-all" title="<?php _e("Select all packages", 'duplicator') ?>" style="margin-left:15px" onclick="Duplicator.Pack.SetDeleteAll()" /></th>
|
90 |
+
<th><?php _e("Details", 'duplicator') ?></th>
|
91 |
+
<th><?php _e("Created", 'duplicator') ?></th>
|
92 |
+
<th><?php _e("Size", 'duplicator') ?></th>
|
93 |
+
<th style="width:90%;"><?php _e("Name", 'duplicator') ?></th>
|
94 |
<th style="text-align:center;" colspan="2">
|
95 |
+
<?php _e("Package", 'duplicator')?>
|
96 |
</th>
|
97 |
</tr>
|
98 |
</thead>
|
123 |
$detail_id = "duplicator-detail-row-{$rowCount}";
|
124 |
$plugin_version = empty($pack_version) ? 'unknown' : $pack_version;
|
125 |
$plugin_compat = version_compare($plugin_version, '0.5.0');
|
126 |
+
$notes = empty($pack_notes) ? __("(No Notes Taken)", 'duplicator') : $pack_notes;
|
127 |
|
128 |
//Links
|
129 |
$uniqueid = "{$row['name']}_{$row['hash']}";
|
141 |
<?php if ($row['status'] >= 100) : ?>
|
142 |
<tr class="dup-pack-info <?php echo $css_alt ?>">
|
143 |
<td class="pass"><input name="delete_confirm" type="checkbox" id="<?php echo $row['id'] ;?>" /></td>
|
144 |
+
<td><a href="javascript:void(0);" onclick="return Duplicator.Pack.ToggleDetail('<?php echo $detail_id ;?>');">[<?php echo __("View", 'duplicator') . ' ' . $row['id'];?>]</a></td>
|
145 |
<td><?php echo date( "m-d-y G:i", strtotime($row['created']));?></td>
|
146 |
<td><?php echo DUP_Util::ByteSize($pack_archive_size); ?></td>
|
147 |
<td class='pack-name'><?php echo $pack_name ;?></td>
|
148 |
<td class="get-btns">
|
149 |
+
<button id="<?php echo "{$uniqueid}_installer.php" ?>" class="button no-select" onclick="Duplicator.Pack.DownloadFile('<?php echo $installfilelink; ?>', this); return false;"><i class="fa fa-bolt"></i> <?php _e("Installer", 'duplicator') ?></button>
|
150 |
</td>
|
151 |
<td class="get-btns">
|
152 |
+
<button id="<?php echo "{$uniqueid}_archive.zip" ?>" class="button no-select" onclick="Duplicator.Pack.DownloadFile('<?php echo $packagepath; ?>', this); return false;"><i class="fa fa-file-archive-o"></i> <?php _e("Archive", 'duplicator') ?></button>
|
153 |
</td>
|
154 |
</tr>
|
155 |
<tr>
|
156 |
<td colspan="8" id="<?php echo $detail_id; ?>" class="dup-pack-details <?php echo $css_alt ?>">
|
157 |
+
<b><?php _e("Version", 'duplicator') ?>:</b> <?php echo $plugin_version ?> |
|
158 |
+
<b><?php _e("User", 'duplicator') ?>:</b> <?php echo $row['owner']; ?> |
|
159 |
+
<b><?php _e("Hash", 'duplicator')?>:</b> <?php echo $pack_namehash ;?> <br/>
|
160 |
+
<b><?php _e("Notes", 'duplicator')?>:</b> <?php echo $notes ?>
|
161 |
<div style="height:7px"> </div>
|
162 |
+
<button class="button" onclick="Duplicator.Pack.ShowLinksDialog(<?php echo "'{$sqlfilelink}', '{$packagepath}', '{$installfilelink}', '{$logfilelink}', '{$reportfilelink}' " ;?>); return false;" class="thickbox"><i class="fa fa-lock"></i> <?php _e("Links", 'duplicator')?></button>
|
163 |
+
<button class="button" onclick="window.open(<?php echo "'{$sqlfilelink}', '_blank'" ;?>); return false;"><i class="fa fa-table"></i> <?php _e("SQL", 'duplicator')?></button>
|
164 |
+
<button class="button" onclick="Duplicator.OpenLogWindow(<?php echo "'{$logfilename}'" ;?>); return false;"><i class="fa fa-list-alt"></i> <?php _e("Log", 'duplicator')?></button>
|
165 |
<?php if ($package_debug) : ?>
|
166 |
<div style="margin-top:7px">
|
167 |
+
<a href="javascript:void(0)" onclick="window.open(<?php echo "'{$reportfilelink}', '_blank'" ;?>); return false;">[<?php _e("Open Scan Report", 'duplicator')?>]</a>
|
168 |
+
<a href="javascript:void(0)" onclick="jQuery(this).parent().find('.dup-pack-debug').toggle()">[<?php _e("View Package Object", 'duplicator')?>]</a><br/>
|
169 |
<textarea class="dup-pack-debug"><?php @print_r($Package); ?> </textarea>
|
170 |
</div>
|
171 |
<?php endif; ?>
|
186 |
?>
|
187 |
<tr class="dup-pack-info <?php echo $css_alt ?>">
|
188 |
<td class="fail"><input name="delete_confirm" type="checkbox" id="<?php echo $row['id'] ;?>" /></td>
|
189 |
+
<td><a href="javascript:void(0);" onclick="return Duplicator.Pack.ToggleDetail('<?php echo $detail_id ;?>');">[<?php echo __("View", 'duplicator') . ' ' . $row['id'];?>]</a></td>
|
190 |
<td><?php echo date( "m-d-y G:i", strtotime($row['created']));?></td>
|
191 |
<td><?php echo DUP_Util::ByteSize($size); ?></td>
|
192 |
<td class='pack-name'><?php echo $pack_name ;?></td>
|
193 |
<td class="get-btns" colspan="2">
|
194 |
<span style='display:inline-block; padding:7px 40px 0px 0px'>
|
195 |
+
<a href="javascript:void(0);" onclick="return Duplicator.Pack.ToggleDetail('<?php echo $detail_id ;?>');"><?php _e("View Error Details", 'duplicator') ?>...</a>
|
196 |
</span>
|
197 |
</td>
|
198 |
</tr>
|
199 |
<tr>
|
200 |
<td colspan="8" id="<?php echo $detail_id; ?>" class="dup-pack-details <?php echo $css_alt ?>">
|
201 |
<div class="dup-details-area-error">
|
202 |
+
<b><?php _e("Version", 'duplicator') ?>:</b> <?php echo $plugin_version ?> |
|
203 |
+
<b><?php _e("User", 'duplicator') ?>:</b> <?php echo $row['owner']; ?> |
|
204 |
+
<b><?php _e("Hash", 'duplicator')?>:</b> <?php echo $pack_name ;?> <br/>
|
205 |
|
206 |
<?php if ($pack_name == 'unknown') : ?>
|
207 |
+
<b><?php _e("Unrecoverable Error! Please remove this package.", 'duplicator')?></b><br/>
|
208 |
<?php else : ?>
|
209 |
+
<b><?php _e("Notes", 'duplicator')?>:</b> <?php echo $notes ?> <br/>
|
210 |
<?php
|
211 |
printf("%s <u><a href='http://lifeinthegrid.com/duplicator-docs' target='_blank'>%s</a></u>",
|
212 |
+
__("This package has encountered errors. Click 'View Log' for more details. For additional support see the ", 'duplicator'),
|
213 |
+
__("online knowledgebase", 'duplicator'));
|
214 |
?><div style="height:7px"> </div>
|
215 |
+
<button class='button' onclick="Duplicator.OpenLogWindow(<?php echo "'{$logfilename}'" ;?>); return false;"><?php _e("View Log", 'duplicator')?></button>
|
216 |
<?php if ($package_debug) : ?>
|
217 |
<div style="margin-top:7px">
|
218 |
<a href="javascript:void(0)" onclick="jQuery(this).parent().find('.dup-pack-debug').toggle()">[View Package Object]</a><br/>
|
234 |
<tfoot>
|
235 |
<tr>
|
236 |
<th colspan="8" style='text-align:right; font-size:12px'>
|
237 |
+
<?php echo _e("Packages", 'duplicator') . ': ' . $totalElements; ?> |
|
238 |
+
<?php echo _e("Total Size", 'duplicator') . ': ' . DUP_Util::ByteSize($totalSize); ?>
|
239 |
</th>
|
240 |
</tr>
|
241 |
</tfoot>
|
254 |
<!-- ==========================================
|
255 |
DIALOG: QUICK PATH -->
|
256 |
<?php add_thickbox(); ?>
|
257 |
+
<div id="dup-dlg-quick-path" title="<?php _e('Download Links', 'duplicator'); ?>" style="display:none">
|
258 |
<p>
|
259 |
<i class="fa fa-lock"></i>
|
260 |
+
<?php _e("The following links contain sensitive data. Please share with caution!", 'duplicator'); ?>
|
261 |
</p>
|
262 |
|
263 |
<div style="padding: 0px 15px 15px 15px;">
|
264 |
<a href="javascript:void(0)" style="display:inline-block; text-align:right" onclick="Duplicator.Pack.GetLinksText()">[Select All]</a> <br/>
|
265 |
<textarea id="dup-dlg-quick-path-data" style='border:1px solid silver; border-radius:3px; width:99%; height:225px; font-size:11px'></textarea><br/>
|
266 |
+
<i style='font-size:11px'><?php _e("The database SQL script is a quick link to your database backup script. An exact copy is also stored in the package.", 'duplicator'); ?></i>
|
267 |
</div>
|
268 |
</div>
|
269 |
|
286 |
var count = 0;
|
287 |
|
288 |
if ($("#dup-pack-bulk-actions").val() != "delete") {
|
289 |
+
alert("<?php _e('Please select an action from the bulk action drop down menu to perform a specific action.', 'duplicator') ?>");
|
290 |
return;
|
291 |
}
|
292 |
$("input[name=delete_confirm]").each(function() {
|
294 |
});
|
295 |
var list = arr.join(',');
|
296 |
if (list.length == 0) {
|
297 |
+
alert("<?php _e('Please select at least one package to delete.', 'duplicator') ?>");
|
298 |
return;
|
299 |
}
|
300 |
|
301 |
+
if (confirm("<?php _e('Are you sure, you want to delete the selected package(s)?', 'duplicator') ?>")){
|
302 |
|
303 |
$.ajax({
|
304 |
type: "POST",
|
332 |
Duplicator.Pack.ShowLinksDialog = function(db, install, pack, log, report) {
|
333 |
|
334 |
var url = '#TB_inline?width=650&height=350&inlineId=dup-dlg-quick-path';
|
335 |
+
tb_show("<?php _e('Package File Links', 'duplicator') ?>", url);
|
336 |
|
337 |
var msg = <?php printf('"%s:\n" + db + "\n\n%s:\n" + install + "\n\n%s:\n" + pack + "\n\n%s:\n" + log + "\n\n%s:\n" + report;',
|
338 |
+
__("DATABASE", 'duplicator'),
|
339 |
+
__("PACKAGE", 'duplicator'),
|
340 |
+
__("INSTALLER", 'duplicator'),
|
341 |
+
__("LOG", 'duplicator'),
|
342 |
+
__("REPORT", 'duplicator'));
|
343 |
?>
|
344 |
$("#dup-dlg-quick-path-data").val(msg);
|
345 |
return false;
|
views/packages/new1.base.php
CHANGED
@@ -10,7 +10,7 @@ if (isset($_POST['action']))
|
|
10 |
$action_result = DUP_Settings::DeleteWPOption($_POST['action']);
|
11 |
switch ($_POST['action'])
|
12 |
{
|
13 |
-
case 'duplicator_package_active' : $action_response = __('Package settings have been reset.', '
|
14 |
break;
|
15 |
}
|
16 |
}
|
@@ -29,6 +29,7 @@ $ui_css_storage = (isset($view_state['dup-pack-storage-panel']) && $view_state['
|
|
29 |
$ui_css_archive = (isset($view_state['dup-pack-archive-panel']) && $view_state['dup-pack-archive-panel']) ? 'display:block' : 'display:none';
|
30 |
$ui_css_installer = (isset($view_state['dup-pack-installer-panel']) && $view_state['dup-pack-installer-panel']) ? 'display:block' : 'display:none';
|
31 |
$dup_intaller_files = implode(", ", array_keys(DUP_Server::GetInstallerFiles()));
|
|
|
32 |
|
33 |
?>
|
34 |
|
@@ -65,11 +66,12 @@ $dup_intaller_files = implode(", ", array_keys(DUP_Server::GetInstallerFiles()))
|
|
65 |
select#archive-format {min-width:100px; margin:1px 0px 4px 0px}
|
66 |
span#dup-archive-filter-file {color:#A62426; display:none}
|
67 |
span#dup-archive-filter-db {color:#A62426; display:none}
|
68 |
-
div#dup-file-filter-items, div#dup-db-filter-items {padding:
|
69 |
label.dup-enable-filters {display:inline-block; margin:-5px 0px 5px 0px}
|
70 |
div.dup-quick-links {font-size:11px; float:right; display:inline-block; margin-top:2px; font-style:italic}
|
71 |
div.dup-tabs-opts-help {font-style:italic; font-size:11px; margin:10px 0px 0px 10px; color:#777}
|
72 |
table#dup-dbtables td {padding:1px 15px 1px 4px}
|
|
|
73 |
|
74 |
/*INSTALLER SECTION*/
|
75 |
div.dup-installer-header-1 {font-weight:bold; padding-bottom:2px; width:100%}
|
@@ -85,18 +87,18 @@ TOOL BAR: STEPS -->
|
|
85 |
<td style="white-space: nowrap">
|
86 |
<div id="dup-wiz">
|
87 |
<div id="dup-wiz-steps">
|
88 |
-
<div class="active-step"><a><span>1</span> <?php _e('Setup', '
|
89 |
-
<div><a><span>2</span> <?php _e('Scan', '
|
90 |
-
<div><a><span>3</span> <?php _e('Build', '
|
91 |
</div>
|
92 |
<div id="dup-wiz-title">
|
93 |
-
<?php _e('Step 1: Package Setup', '
|
94 |
</div>
|
95 |
</div>
|
96 |
</td>
|
97 |
<td class="dup-toolbar-btns">
|
98 |
-
<a id="dup-pro-create-new" href="?page=duplicator" class="add-new-h2"><i class="fa fa-archive"></i> <?php _e("All Packages", '
|
99 |
-
<span> <?php _e("Create New", '
|
100 |
</td>
|
101 |
</tr>
|
102 |
</table>
|
@@ -114,7 +116,7 @@ META-BOX1: SYSTEM REQUIREMENTS -->
|
|
114 |
<div class="dup-box-title dup-box-title-fancy">
|
115 |
<i class="fa fa-check-square-o"></i>
|
116 |
<?php
|
117 |
-
_e("Requirements:", '
|
118 |
echo ($dup_tests['Success']) ? ' <div class="dup-sys-pass">Pass</div>' : ' <div class="dup-sys-fail">Fail</div>';
|
119 |
?>
|
120 |
<div class="dup-box-arrow"></div>
|
@@ -123,44 +125,44 @@ META-BOX1: SYSTEM REQUIREMENTS -->
|
|
123 |
<div class="dup-box-panel" style="<?php echo ($dup_tests['Success']) ? 'display:none' : ''; ?>">
|
124 |
|
125 |
<div class="dup-sys-section">
|
126 |
-
<i><?php _e("System requirements must pass for the Duplicator to work properly. Click each link for details.", '
|
127 |
</div>
|
128 |
|
129 |
<!-- PHP SUPPORT -->
|
130 |
<div class='dup-sys-req'>
|
131 |
<div class='dup-sys-title'>
|
132 |
-
<a><?php _e('PHP Support', '
|
133 |
<div><?php echo $dup_tests['PHP']['ALL']; ?></div>
|
134 |
</div>
|
135 |
<div class="dup-sys-info dup-info-box">
|
136 |
<table class="dup-sys-info-results">
|
137 |
<tr>
|
138 |
-
<td><?php printf("%s [%s]", __("PHP Version", '
|
139 |
<td><?php echo $dup_tests['PHP']['VERSION'] ?></td>
|
140 |
</tr>
|
141 |
<tr>
|
142 |
-
<td><?php _e('Zip Archive Enabled', '
|
143 |
<td><?php echo $dup_tests['PHP']['ZIP'] ?></td>
|
144 |
</tr>
|
145 |
<tr>
|
146 |
-
<td><?php _e('Safe Mode Off', '
|
147 |
<td><?php echo $dup_tests['PHP']['SAFE_MODE'] ?></td>
|
148 |
</tr>
|
149 |
<tr>
|
150 |
-
<td><?php _e('Function', '
|
151 |
<td><?php echo $dup_tests['PHP']['FUNC_1'] ?></td>
|
152 |
</tr>
|
153 |
<tr>
|
154 |
-
<td><?php _e('Function', '
|
155 |
<td><?php echo $dup_tests['PHP']['FUNC_2'] ?></td>
|
156 |
</tr>
|
157 |
<tr>
|
158 |
-
<td><?php _e('Function', '
|
159 |
<td><?php echo $dup_tests['PHP']['FUNC_3'] ?></td>
|
160 |
</tr>
|
161 |
</table>
|
162 |
<small>
|
163 |
-
<?php _e("PHP versions 5.2.9+ or higher is required. For compression to work the ZipArchive extension for PHP is required. Safe Mode should be set to 'Off' in you php.ini file and is deprecated as of PHP 5.3.0. For any issues in this section please contact your hosting provider or server administrator. For additional information see our online documentation.", '
|
164 |
</small>
|
165 |
</div>
|
166 |
</div>
|
@@ -168,21 +170,21 @@ META-BOX1: SYSTEM REQUIREMENTS -->
|
|
168 |
<!-- PERMISSIONS -->
|
169 |
<div class='dup-sys-req'>
|
170 |
<div class='dup-sys-title'>
|
171 |
-
<a><?php _e('Permissions', '
|
172 |
</div>
|
173 |
<div class="dup-sys-info dup-info-box">
|
174 |
-
<b><?php _e("Required Paths", '
|
175 |
<div style="padding:3px 0px 0px 15px">
|
176 |
<?php
|
177 |
printf("<b>%s</b> [%s] <br/>", $dup_tests['IO']['WPROOT'], DUPLICATOR_WPROOTPATH);
|
178 |
printf("<b>%s</b> [%s] <br/>", $dup_tests['IO']['SSDIR'], DUPLICATOR_SSDIR_PATH);
|
179 |
printf("<b>%s</b> [%s] <br/>", $dup_tests['IO']['SSTMP'], DUPLICATOR_SSDIR_PATH_TMP);
|
180 |
-
//printf("<b>%s:</b> [%s] <br/>", __('PHP Script Owner', '
|
181 |
-
//printf("<b>%s:</b> [%s] <br/>", __('PHP Process Owner', '
|
182 |
?>
|
183 |
</div>
|
184 |
<small>
|
185 |
-
<?php _e("Permissions can be difficult to resolve on some systems. If the plugin can not read the above paths here are a few things to try. 1) Set the above paths to have permissions of 755 for directories and 644 for files. You can temporarily try 777 however, be sure you don’t leave them this way. 2) Check the owner/group settings for both files and directories. The PHP script owner and the process owner are different. The script owner owns the PHP script but the process owner is the user the script is running as, thus determining its capabilities/privileges in the file system. For more details contact your host or server administrator or visit the 'Help' menu under Duplicator for additional online resources.", '
|
186 |
</small>
|
187 |
</div>
|
188 |
</div>
|
@@ -190,24 +192,24 @@ META-BOX1: SYSTEM REQUIREMENTS -->
|
|
190 |
<!-- SERVER SUPPORT -->
|
191 |
<div class='dup-sys-req'>
|
192 |
<div class='dup-sys-title'>
|
193 |
-
<a><?php _e('Server Support', '
|
194 |
<div><?php echo $dup_tests['SRV']['ALL']; ?></div>
|
195 |
</div>
|
196 |
<div class="dup-sys-info dup-info-box">
|
197 |
<table class="dup-sys-info-results">
|
198 |
<tr>
|
199 |
-
<td><?php printf("%s [%s]", __("MySQL Version", '
|
200 |
<td><?php echo $dup_tests['SRV']['MYSQL_VER'] ?></td>
|
201 |
</tr>
|
202 |
<tr>
|
203 |
-
<td><?php printf("%s", __("MySQLi Support", '
|
204 |
<td><?php echo $dup_tests['SRV']['MYSQLi'] ?></td>
|
205 |
</tr>
|
206 |
</table>
|
207 |
<small>
|
208 |
<?php
|
209 |
-
_e("MySQL version 5.0+ or better is required and the PHP MySQLi extension (note the trailing 'i') is also required. Contact your server administrator and request that mysqli extension and MySQL Server 5.0+ be installed. Please note in future versions support for other databases and extensions will be added.", '
|
210 |
-
echo " <i><a href='http://php.net/manual/en/mysqli.installation.php' target='_blank'>[" . __('more info', '
|
211 |
?>
|
212 |
</small>
|
213 |
</div>
|
@@ -216,17 +218,17 @@ META-BOX1: SYSTEM REQUIREMENTS -->
|
|
216 |
<!-- RESERVED FILES -->
|
217 |
<div class='dup-sys-req'>
|
218 |
<div class='dup-sys-title'>
|
219 |
-
<a><?php _e('Reserved Files', '
|
220 |
</div>
|
221 |
<div class="dup-sys-info dup-info-box">
|
222 |
<?php if ($dup_tests['RES']['INSTALL'] == 'Pass') : ?>
|
223 |
-
<?php _e("None of the reserved files [{$dup_intaller_files}] where found from a previous install. This means you are clear to create a new package.", '
|
224 |
<?php else:
|
225 |
$duplicator_nonce = wp_create_nonce('duplicator_cleanup_page');
|
226 |
?>
|
227 |
<form method="post" action="admin.php?page=duplicator-tools&tab=cleanup&action=installer&_wpnonce=<?php echo $duplicator_nonce; ?>">
|
228 |
-
<?php _e("A reserved file(s) was found in the WordPress root directory. Reserved file names are [{$dup_intaller_files}]. To archive your data correctly please remove any of these files from your WordPress root directory. Then try creating your package again.", '
|
229 |
-
<br/><input type='submit' class='button action' value='<?php _e('Remove Files Now', '
|
230 |
</form>
|
231 |
<?php endif; ?>
|
232 |
</div>
|
@@ -235,7 +237,7 @@ META-BOX1: SYSTEM REQUIREMENTS -->
|
|
235 |
<!-- ONLINE SUPPORT -->
|
236 |
<div class="dup-sys-contact">
|
237 |
<?php
|
238 |
-
printf("<i class='fa fa-question-circle'></i> %s <a href='admin.php?page=duplicator-help'>[%s]</a>", __("For additional help please see the ", '
|
239 |
?>
|
240 |
</div>
|
241 |
|
10 |
$action_result = DUP_Settings::DeleteWPOption($_POST['action']);
|
11 |
switch ($_POST['action'])
|
12 |
{
|
13 |
+
case 'duplicator_package_active' : $action_response = __('Package settings have been reset.', 'duplicator');
|
14 |
break;
|
15 |
}
|
16 |
}
|
29 |
$ui_css_archive = (isset($view_state['dup-pack-archive-panel']) && $view_state['dup-pack-archive-panel']) ? 'display:block' : 'display:none';
|
30 |
$ui_css_installer = (isset($view_state['dup-pack-installer-panel']) && $view_state['dup-pack-installer-panel']) ? 'display:block' : 'display:none';
|
31 |
$dup_intaller_files = implode(", ", array_keys(DUP_Server::GetInstallerFiles()));
|
32 |
+
$dbbuild_mode = (DUP_Settings::Get('package_mysqldump') && DUP_Database::GetMySqlDumpPath()) ? 'mysqldump' : 'PHP';
|
33 |
|
34 |
?>
|
35 |
|
66 |
select#archive-format {min-width:100px; margin:1px 0px 4px 0px}
|
67 |
span#dup-archive-filter-file {color:#A62426; display:none}
|
68 |
span#dup-archive-filter-db {color:#A62426; display:none}
|
69 |
+
div#dup-file-filter-items, div#dup-db-filter-items {padding:2px 0px 0px 15px; font-stretch:ultra-condensed; font-family: Calibri; }
|
70 |
label.dup-enable-filters {display:inline-block; margin:-5px 0px 5px 0px}
|
71 |
div.dup-quick-links {font-size:11px; float:right; display:inline-block; margin-top:2px; font-style:italic}
|
72 |
div.dup-tabs-opts-help {font-style:italic; font-size:11px; margin:10px 0px 0px 10px; color:#777}
|
73 |
table#dup-dbtables td {padding:1px 15px 1px 4px}
|
74 |
+
table.dbmysql-compatibility td{padding:2px 20px 2px 2px}
|
75 |
|
76 |
/*INSTALLER SECTION*/
|
77 |
div.dup-installer-header-1 {font-weight:bold; padding-bottom:2px; width:100%}
|
87 |
<td style="white-space: nowrap">
|
88 |
<div id="dup-wiz">
|
89 |
<div id="dup-wiz-steps">
|
90 |
+
<div class="active-step"><a><span>1</span> <?php _e('Setup', 'duplicator'); ?></a></div>
|
91 |
+
<div><a><span>2</span> <?php _e('Scan', 'duplicator'); ?> </a></div>
|
92 |
+
<div><a><span>3</span> <?php _e('Build', 'duplicator'); ?> </a></div>
|
93 |
</div>
|
94 |
<div id="dup-wiz-title">
|
95 |
+
<?php _e('Step 1: Package Setup', 'duplicator'); ?>
|
96 |
</div>
|
97 |
</div>
|
98 |
</td>
|
99 |
<td class="dup-toolbar-btns">
|
100 |
+
<a id="dup-pro-create-new" href="?page=duplicator" class="add-new-h2"><i class="fa fa-archive"></i> <?php _e("All Packages", 'duplicator'); ?></a>
|
101 |
+
<span> <?php _e("Create New", 'duplicator'); ?></span>
|
102 |
</td>
|
103 |
</tr>
|
104 |
</table>
|
116 |
<div class="dup-box-title dup-box-title-fancy">
|
117 |
<i class="fa fa-check-square-o"></i>
|
118 |
<?php
|
119 |
+
_e("Requirements:", 'duplicator');
|
120 |
echo ($dup_tests['Success']) ? ' <div class="dup-sys-pass">Pass</div>' : ' <div class="dup-sys-fail">Fail</div>';
|
121 |
?>
|
122 |
<div class="dup-box-arrow"></div>
|
125 |
<div class="dup-box-panel" style="<?php echo ($dup_tests['Success']) ? 'display:none' : ''; ?>">
|
126 |
|
127 |
<div class="dup-sys-section">
|
128 |
+
<i><?php _e("System requirements must pass for the Duplicator to work properly. Click each link for details.", 'duplicator'); ?></i>
|
129 |
</div>
|
130 |
|
131 |
<!-- PHP SUPPORT -->
|
132 |
<div class='dup-sys-req'>
|
133 |
<div class='dup-sys-title'>
|
134 |
+
<a><?php _e('PHP Support', 'duplicator'); ?></a>
|
135 |
<div><?php echo $dup_tests['PHP']['ALL']; ?></div>
|
136 |
</div>
|
137 |
<div class="dup-sys-info dup-info-box">
|
138 |
<table class="dup-sys-info-results">
|
139 |
<tr>
|
140 |
+
<td><?php printf("%s [%s]", __("PHP Version", 'duplicator'), phpversion()); ?></td>
|
141 |
<td><?php echo $dup_tests['PHP']['VERSION'] ?></td>
|
142 |
</tr>
|
143 |
<tr>
|
144 |
+
<td><?php _e('Zip Archive Enabled', 'duplicator'); ?></td>
|
145 |
<td><?php echo $dup_tests['PHP']['ZIP'] ?></td>
|
146 |
</tr>
|
147 |
<tr>
|
148 |
+
<td><?php _e('Safe Mode Off', 'duplicator'); ?></td>
|
149 |
<td><?php echo $dup_tests['PHP']['SAFE_MODE'] ?></td>
|
150 |
</tr>
|
151 |
<tr>
|
152 |
+
<td><?php _e('Function', 'duplicator'); ?> <a href="http://php.net/manual/en/function.file-get-contents.php" target="_blank">file_get_contents</a></td>
|
153 |
<td><?php echo $dup_tests['PHP']['FUNC_1'] ?></td>
|
154 |
</tr>
|
155 |
<tr>
|
156 |
+
<td><?php _e('Function', 'duplicator'); ?> <a href="http://php.net/manual/en/function.file-put-contents.php" target="_blank">file_put_contents</a></td>
|
157 |
<td><?php echo $dup_tests['PHP']['FUNC_2'] ?></td>
|
158 |
</tr>
|
159 |
<tr>
|
160 |
+
<td><?php _e('Function', 'duplicator'); ?> <a href="http://php.net/manual/en/mbstring.installation.php" target="_blank">mb_strlen</a></td>
|
161 |
<td><?php echo $dup_tests['PHP']['FUNC_3'] ?></td>
|
162 |
</tr>
|
163 |
</table>
|
164 |
<small>
|
165 |
+
<?php _e("PHP versions 5.2.9+ or higher is required. For compression to work the ZipArchive extension for PHP is required. Safe Mode should be set to 'Off' in you php.ini file and is deprecated as of PHP 5.3.0. For any issues in this section please contact your hosting provider or server administrator. For additional information see our online documentation.", 'duplicator'); ?>
|
166 |
</small>
|
167 |
</div>
|
168 |
</div>
|
170 |
<!-- PERMISSIONS -->
|
171 |
<div class='dup-sys-req'>
|
172 |
<div class='dup-sys-title'>
|
173 |
+
<a><?php _e('Permissions', 'duplicator'); ?></a> <div><?php echo $dup_tests['IO']['ALL']; ?></div>
|
174 |
</div>
|
175 |
<div class="dup-sys-info dup-info-box">
|
176 |
+
<b><?php _e("Required Paths", 'duplicator'); ?></b>
|
177 |
<div style="padding:3px 0px 0px 15px">
|
178 |
<?php
|
179 |
printf("<b>%s</b> [%s] <br/>", $dup_tests['IO']['WPROOT'], DUPLICATOR_WPROOTPATH);
|
180 |
printf("<b>%s</b> [%s] <br/>", $dup_tests['IO']['SSDIR'], DUPLICATOR_SSDIR_PATH);
|
181 |
printf("<b>%s</b> [%s] <br/>", $dup_tests['IO']['SSTMP'], DUPLICATOR_SSDIR_PATH_TMP);
|
182 |
+
//printf("<b>%s:</b> [%s] <br/>", __('PHP Script Owner', 'duplicator'), DUP_Util::GetCurrentUser());
|
183 |
+
//printf("<b>%s:</b> [%s] <br/>", __('PHP Process Owner', 'duplicator'), DUP_Util::GetProcessOwner());
|
184 |
?>
|
185 |
</div>
|
186 |
<small>
|
187 |
+
<?php _e("Permissions can be difficult to resolve on some systems. If the plugin can not read the above paths here are a few things to try. 1) Set the above paths to have permissions of 755 for directories and 644 for files. You can temporarily try 777 however, be sure you don’t leave them this way. 2) Check the owner/group settings for both files and directories. The PHP script owner and the process owner are different. The script owner owns the PHP script but the process owner is the user the script is running as, thus determining its capabilities/privileges in the file system. For more details contact your host or server administrator or visit the 'Help' menu under Duplicator for additional online resources.", 'duplicator'); ?>
|
188 |
</small>
|
189 |
</div>
|
190 |
</div>
|
192 |
<!-- SERVER SUPPORT -->
|
193 |
<div class='dup-sys-req'>
|
194 |
<div class='dup-sys-title'>
|
195 |
+
<a><?php _e('Server Support', 'duplicator'); ?></a>
|
196 |
<div><?php echo $dup_tests['SRV']['ALL']; ?></div>
|
197 |
</div>
|
198 |
<div class="dup-sys-info dup-info-box">
|
199 |
<table class="dup-sys-info-results">
|
200 |
<tr>
|
201 |
+
<td><?php printf("%s [%s]", __("MySQL Version", 'duplicator'), $wpdb->db_version()); ?></td>
|
202 |
<td><?php echo $dup_tests['SRV']['MYSQL_VER'] ?></td>
|
203 |
</tr>
|
204 |
<tr>
|
205 |
+
<td><?php printf("%s", __("MySQLi Support", 'duplicator')); ?></td>
|
206 |
<td><?php echo $dup_tests['SRV']['MYSQLi'] ?></td>
|
207 |
</tr>
|
208 |
</table>
|
209 |
<small>
|
210 |
<?php
|
211 |
+
_e("MySQL version 5.0+ or better is required and the PHP MySQLi extension (note the trailing 'i') is also required. Contact your server administrator and request that mysqli extension and MySQL Server 5.0+ be installed. Please note in future versions support for other databases and extensions will be added.", 'duplicator');
|
212 |
+
echo " <i><a href='http://php.net/manual/en/mysqli.installation.php' target='_blank'>[" . __('more info', 'duplicator') . "]</a></i>";
|
213 |
?>
|
214 |
</small>
|
215 |
</div>
|
218 |
<!-- RESERVED FILES -->
|
219 |
<div class='dup-sys-req'>
|
220 |
<div class='dup-sys-title'>
|
221 |
+
<a><?php _e('Reserved Files', 'duplicator'); ?></a> <div><?php echo $dup_tests['RES']['INSTALL']; ?></div>
|
222 |
</div>
|
223 |
<div class="dup-sys-info dup-info-box">
|
224 |
<?php if ($dup_tests['RES']['INSTALL'] == 'Pass') : ?>
|
225 |
+
<?php _e("None of the reserved files [{$dup_intaller_files}] where found from a previous install. This means you are clear to create a new package.", 'duplicator'); ?>
|
226 |
<?php else:
|
227 |
$duplicator_nonce = wp_create_nonce('duplicator_cleanup_page');
|
228 |
?>
|
229 |
<form method="post" action="admin.php?page=duplicator-tools&tab=cleanup&action=installer&_wpnonce=<?php echo $duplicator_nonce; ?>">
|
230 |
+
<?php _e("A reserved file(s) was found in the WordPress root directory. Reserved file names are [{$dup_intaller_files}]. To archive your data correctly please remove any of these files from your WordPress root directory. Then try creating your package again.", 'duplicator'); ?>
|
231 |
+
<br/><input type='submit' class='button action' value='<?php _e('Remove Files Now', 'duplicator') ?>' style='font-size:10px; margin-top:5px;' />
|
232 |
</form>
|
233 |
<?php endif; ?>
|
234 |
</div>
|
237 |
<!-- ONLINE SUPPORT -->
|
238 |
<div class="dup-sys-contact">
|
239 |
<?php
|
240 |
+
printf("<i class='fa fa-question-circle'></i> %s <a href='admin.php?page=duplicator-help'>[%s]</a>", __("For additional help please see the ", 'duplicator'), __("help page", 'duplicator'));
|
241 |
?>
|
242 |
</div>
|
243 |
|
views/packages/new1.inc.form.php
CHANGED
@@ -3,14 +3,14 @@
|
|
3 |
<input type="hidden" id="dup-form-opts-action" name="action" value="">
|
4 |
<input type="hidden" id="dup-form-opts-hash" name="package-hash" value="<?php echo $package_hash; ?>">
|
5 |
<div>
|
6 |
-
<label for="package-name"><b><?php _e('Name', '
|
7 |
<div class="dup-notes-add">
|
8 |
-
<button class="button button-small" type="button" onclick="jQuery('#dup-notes-area').toggle()"><i class="fa fa-pencil-square-o"></i> <?php _e('Notes', '
|
9 |
</div>
|
10 |
-
<a href="javascript:void(0)" onclick="Duplicator.Pack.ResetName()" title="<?php _e('Create a new default name', '
|
11 |
<input id="package-name" name="package-name" type="text" value="<?php echo $Package->Name ?>" maxlength="40" data-required="true" data-regexp="^[0-9A-Za-z|_]+$" /> <br/>
|
12 |
<div id="dup-notes-area">
|
13 |
-
<label><b><?php _e('Notes', '
|
14 |
<textarea id="package-notes" name="package-notes" maxlength="300" /><?php echo $Package->Notes ?></textarea>
|
15 |
</div>
|
16 |
</div>
|
@@ -20,7 +20,7 @@
|
|
20 |
META-BOX: STORAGE -->
|
21 |
<div class="dup-box">
|
22 |
<div class="dup-box-title">
|
23 |
-
<i class="fa fa-database"></i> <?php _e("Storage", '
|
24 |
<div class="dup-box-arrow"></div>
|
25 |
</div>
|
26 |
|
@@ -28,15 +28,15 @@ META-BOX: STORAGE -->
|
|
28 |
<table class="widefat package-tbl">
|
29 |
<thead>
|
30 |
<tr>
|
31 |
-
<th style='width:275px'><?php _e("Name", '
|
32 |
-
<th style='width:100px'><?php _e("Type", '
|
33 |
-
<th style="white-space: nowrap"><?php _e("Location", '
|
34 |
</tr>
|
35 |
</thead>
|
36 |
<tbody>
|
37 |
<tr class="package-row">
|
38 |
-
<td><i class="fa fa-server"></i> <?php _e('Default', '
|
39 |
-
<td><?php _e("Local", '
|
40 |
<td><?php echo DUPLICATOR_SSDIR_PATH; ?></td>
|
41 |
</tr>
|
42 |
<tr>
|
@@ -46,7 +46,7 @@ META-BOX: STORAGE -->
|
|
46 |
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/google_drive_64px.png" style='height:16px; width:16px; vertical-align: text-top' />
|
47 |
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/ftp-64.png" style='height:16px; width:16px; vertical-align: text-top' />
|
48 |
|
49 |
-
<?php echo sprintf(__('%1$s, %2$s, %3$s and other storage options available in', '
|
50 |
<a href="http://snapcreek.com/duplicator/?free-storage" target="_blank">Duplicator Pro</a>
|
51 |
</div>
|
52 |
</td>
|
@@ -60,10 +60,10 @@ META-BOX: STORAGE -->
|
|
60 |
<!-- META-BOX: ARCHIVE -->
|
61 |
<div class="dup-box">
|
62 |
<div class="dup-box-title">
|
63 |
-
<i class="fa fa-file-archive-o"></i> <?php _e('Archive', '
|
64 |
<span style="font-size:13px">
|
65 |
-
<span id="dup-archive-filter-file" title="<?php _e('File filter enabled', '
|
66 |
-
<span id="dup-archive-filter-db" title="<?php _e('Database filter enabled', '
|
67 |
</span>
|
68 |
<div class="dup-box-arrow"></div>
|
69 |
</div>
|
@@ -72,8 +72,8 @@ META-BOX: STORAGE -->
|
|
72 |
<!-- NESTED TABS -->
|
73 |
<div class="categorydiv" id="dup-pack-opts-tabs">
|
74 |
<ul class="category-tabs">
|
75 |
-
<li class="tabs"><a href="javascript:void(0)" onclick="Duplicator.Pack.ToggleOptTabs(1, this)"><?php _e('Files', '
|
76 |
-
<li><a href="javascript:void(0)"onclick="Duplicator.Pack.ToggleOptTabs(2, this)"><?php _e('Database', '
|
77 |
</ul>
|
78 |
|
79 |
<!-- TAB1: PACKAGE -->
|
@@ -85,29 +85,29 @@ META-BOX: STORAGE -->
|
|
85 |
?>
|
86 |
<div class="dup-enable-filters">
|
87 |
<input type="checkbox" id="filter-on" name="filter-on" onclick="Duplicator.Pack.ToggleFileFilters()" <?php echo ($Package->Archive->FilterOn) ? "checked='checked'" : ""; ?> />
|
88 |
-
<label for="filter-on"><?php _e("Enable File Filters", '
|
89 |
</div>
|
90 |
|
91 |
<div id="dup-file-filter-items">
|
92 |
-
<label for="filter-dirs" title="<?php _e("Separate all filters by semicolon", '
|
93 |
<div class='dup-quick-links'>
|
94 |
-
<a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludePath('<?php echo rtrim(DUPLICATOR_WPROOTPATH, '/'); ?>')">[<?php _e("root path", '
|
95 |
-
<a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludePath('<?php echo rtrim($upload_dir, '/'); ?>')">[<?php _e("wp-uploads", '
|
96 |
-
<a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludePath('<?php echo DUP_Util::SafePath(WP_CONTENT_DIR); ?>/cache')">[<?php _e("cache", '
|
97 |
-
<a href="javascript:void(0)" onclick="jQuery('#filter-dirs').val('')"><?php _e("(clear)", '
|
98 |
</div>
|
99 |
<textarea name="filter-dirs" id="filter-dirs" placeholder="/full_path/exclude_path1;/full_path/exclude_path2;"><?php echo str_replace(";", ";\n", esc_textarea($Package->Archive->FilterDirs)) ?></textarea><br/>
|
100 |
-
<label class="no-select" title="<?php _e("Separate all filters by semicolon", '
|
101 |
<div class='dup-quick-links'>
|
102 |
-
<a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludeExts('avi;mov;mp4;mpeg;mpg;swf;wmv;aac;m3u;mp3;mpa;wav;wma')">[<?php _e("media", '
|
103 |
-
<a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludeExts('zip;rar;tar;gz;bz2;7z')">[<?php _e("archive", '
|
104 |
-
<a href="javascript:void(0)" onclick="jQuery('#filter-exts').val('')"><?php _e("(clear)", '
|
105 |
</div>
|
106 |
<textarea name="filter-exts" id="filter-exts" placeholder="ext1;ext2;ext3;"><?php echo esc_textarea($Package->Archive->FilterExts); ?></textarea>
|
107 |
|
108 |
<div class="dup-tabs-opts-help">
|
109 |
-
<?php _e("The directory paths and extensions above will be be excluded from the archive file if enabled is checked.", '
|
110 |
-
<?php _e("Use the full path for directories and semicolons to separate all items.", '
|
111 |
</div>
|
112 |
<br/>
|
113 |
<span style="font-style:italic; font-size:12px ">
|
@@ -121,17 +121,30 @@ META-BOX: STORAGE -->
|
|
121 |
<div class="tabs-panel" id="dup-pack-opts-tabs-panel-2" style="display: none;">
|
122 |
<div class="dup-enable-filters">
|
123 |
<table>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
<tr>
|
125 |
<td><input type="checkbox" id="dbfilter-on" name="dbfilter-on" onclick="Duplicator.Pack.ToggleDBFilters()" <?php echo ($Package->Database->FilterOn) ? "checked='checked'" : ""; ?> /></td>
|
126 |
-
<td
|
127 |
-
|
|
|
|
|
|
|
|
|
|
|
128 |
</tr>
|
129 |
</table>
|
130 |
</div>
|
131 |
<div id="dup-db-filter-items">
|
132 |
-
<a href="javascript:void(0)" id="dball" onclick="jQuery('#dup-dbtables .checkbox').prop('checked', true).trigger('click');">[ <?php _e('Include All', '
|
133 |
-
<a href="javascript:void(0)" id="dbnone" onclick="jQuery('#dup-dbtables .checkbox').prop('checked', false).trigger('click');">[ <?php _e('Exclude All', '
|
134 |
-
<div style="
|
135 |
<?php
|
136 |
$tables = $wpdb->get_results("SHOW FULL TABLES FROM `" . DB_NAME . "` WHERE Table_Type = 'BASE TABLE' ", ARRAY_N);
|
137 |
$num_rows = count($tables);
|
@@ -161,11 +174,53 @@ META-BOX: STORAGE -->
|
|
161 |
}
|
162 |
echo '</td></tr></table>';
|
163 |
?>
|
164 |
-
</div>
|
165 |
-
<div class="dup-tabs-opts-help">
|
166 |
-
<?php _e("Checked tables will not be added to the database script. Excluding certain tables can possibly cause your site or plugins to not work correctly after install!", 'wpduplicator'); ?>
|
167 |
</div>
|
168 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
</div>
|
170 |
</div>
|
171 |
</div>
|
@@ -176,58 +231,58 @@ META-BOX: STORAGE -->
|
|
176 |
<!-- META-BOX: INSTALLER -->
|
177 |
<div class="dup-box">
|
178 |
<div class="dup-box-title">
|
179 |
-
<i class="fa fa-bolt"></i> <?php _e('Installer', '
|
180 |
<div class="dup-box-arrow"></div>
|
181 |
</div>
|
182 |
|
183 |
<div class="dup-box-panel" id="dup-pack-installer-panel" style="<?php echo $ui_css_installer ?>">
|
184 |
-
<div class="dup-installer-header-1"><?php echo _e('STEP 1 - INPUTS', '
|
185 |
<table class="dup-installer-tbl">
|
186 |
<tr>
|
187 |
-
<td colspan="2"><div class="dup-installer-header-2"><?php _e("MySQL Server", '
|
188 |
</tr>
|
189 |
<tr>
|
190 |
-
<td style="width:130px"><?php _e("Host", '
|
191 |
<td><input type="text" name="dbhost" id="dbhost" value="<?php echo $Package->Installer->OptsDBHost ?>" maxlength="200" placeholder="localhost"/></td>
|
192 |
</tr>
|
193 |
<tr>
|
194 |
-
<td style="width:130px"><?php _e("Host Port", '
|
195 |
<td><input type="text" name="dbport" id="dbport" value="<?php echo $Package->Installer->OptsDBPort ?>" maxlength="200" placeholder="3306"/></td>
|
196 |
</tr>
|
197 |
<tr>
|
198 |
-
<td><?php _e("Database", '
|
199 |
<td><input type="text" name="dbname" id="dbname" value="<?php echo $Package->Installer->OptsDBName ?>" maxlength="100" placeholder="mydatabaseName" /></td>
|
200 |
</tr>
|
201 |
<tr>
|
202 |
-
<td><?php _e("User", '
|
203 |
<td><input type="text" name="dbuser" id="dbuser" value="<?php echo $Package->Installer->OptsDBUser ?>" maxlength="100" placeholder="databaseUserName" /></td>
|
204 |
</tr>
|
205 |
<tr>
|
206 |
-
<td colspan="2"><div class="dup-installer-header-2"><?php _e("Advanced Options", '
|
207 |
</tr>
|
208 |
<tr>
|
209 |
<td colspan="2">
|
210 |
<table>
|
211 |
<tr>
|
212 |
-
<td style="width:130px"><?php _e("SSL", '
|
213 |
<td style="padding-right: 20px; white-space: nowrap">
|
214 |
<input type="checkbox" name="ssl-admin" id="ssl-admin" <?php echo ($Package->Installer->OptsSSLAdmin) ? "checked='checked'" : ""; ?> />
|
215 |
-
<label class="chk-labels" for="ssl-admin"><?php _e("Enforce on Admin", '
|
216 |
</td>
|
217 |
<td>
|
218 |
<input type="checkbox" name="ssl-login" id="ssl-login" <?php echo ($Package->Installer->OptsSSLLogin) ? "checked='checked'" : ""; ?> />
|
219 |
-
<label class="chk-labels" for="ssl-login"><?php _e("Enforce on Logins", '
|
220 |
</td>
|
221 |
</tr>
|
222 |
<tr>
|
223 |
-
<td><?php _e("Cache", '
|
224 |
<td style="padding-right: 20px; white-space: nowrap">
|
225 |
<input type="checkbox" name="cache-wp" id="cache-wp" <?php echo ($Package->Installer->OptsCacheWP) ? "checked='checked'" : ""; ?> />
|
226 |
-
<label class="chk-labels" for="cache-wp"><?php _e("Keep Enabled", '
|
227 |
</td>
|
228 |
<td>
|
229 |
<input type="checkbox" name="cache-path" id="cache-path" <?php echo ($Package->Installer->OptsCachePath) ? "checked='checked'" : ""; ?> />
|
230 |
-
<label class="chk-labels" for="cache-path"><?php _e("Keep Home Path", '
|
231 |
</td>
|
232 |
</tr>
|
233 |
</table>
|
@@ -235,17 +290,17 @@ META-BOX: STORAGE -->
|
|
235 |
</tr>
|
236 |
</table><br />
|
237 |
|
238 |
-
<div class="dup-installer-header-1"><?php echo _e('STEP 2 - INPUTS', '
|
239 |
|
240 |
<table class="dup-installer-tbl">
|
241 |
<tr>
|
242 |
-
<td style="width:130px"><?php _e("New URL", '
|
243 |
<td><input type="text" name="url-new" id="url-new" value="<?php echo $Package->Installer->OptsURLNew ?>" placeholder="http://mynewsite.com" /></td>
|
244 |
</tr>
|
245 |
</table>
|
246 |
|
247 |
<div class="dup-tabs-opts-help">
|
248 |
-
<?php _e("The installer can have these fields pre-filled at install time.", '
|
249 |
</div>
|
250 |
|
251 |
</div>
|
@@ -254,8 +309,8 @@ META-BOX: STORAGE -->
|
|
254 |
|
255 |
|
256 |
<div class="dup-button-footer">
|
257 |
-
<input type="button" value="<?php _e("Reset", '
|
258 |
-
<input type="submit" value="<?php _e("Next", '
|
259 |
</div>
|
260 |
|
261 |
</form>
|
3 |
<input type="hidden" id="dup-form-opts-action" name="action" value="">
|
4 |
<input type="hidden" id="dup-form-opts-hash" name="package-hash" value="<?php echo $package_hash; ?>">
|
5 |
<div>
|
6 |
+
<label for="package-name"><b><?php _e('Name', 'duplicator') ?>:</b> </label>
|
7 |
<div class="dup-notes-add">
|
8 |
+
<button class="button button-small" type="button" onclick="jQuery('#dup-notes-area').toggle()"><i class="fa fa-pencil-square-o"></i> <?php _e('Notes', 'duplicator') ?></button>
|
9 |
</div>
|
10 |
+
<a href="javascript:void(0)" onclick="Duplicator.Pack.ResetName()" title="<?php _e('Create a new default name', 'duplicator') ?>"><i class="fa fa-undo"></i></a> <br/>
|
11 |
<input id="package-name" name="package-name" type="text" value="<?php echo $Package->Name ?>" maxlength="40" data-required="true" data-regexp="^[0-9A-Za-z|_]+$" /> <br/>
|
12 |
<div id="dup-notes-area">
|
13 |
+
<label><b><?php _e('Notes', 'duplicator') ?>:</b></label> <br/>
|
14 |
<textarea id="package-notes" name="package-notes" maxlength="300" /><?php echo $Package->Notes ?></textarea>
|
15 |
</div>
|
16 |
</div>
|
20 |
META-BOX: STORAGE -->
|
21 |
<div class="dup-box">
|
22 |
<div class="dup-box-title">
|
23 |
+
<i class="fa fa-database"></i> <?php _e("Storage", 'duplicator'); ?>
|
24 |
<div class="dup-box-arrow"></div>
|
25 |
</div>
|
26 |
|
28 |
<table class="widefat package-tbl">
|
29 |
<thead>
|
30 |
<tr>
|
31 |
+
<th style='width:275px'><?php _e("Name", 'duplicator'); ?></th>
|
32 |
+
<th style='width:100px'><?php _e("Type", 'duplicator'); ?></th>
|
33 |
+
<th style="white-space: nowrap"><?php _e("Location", 'duplicator'); ?></th>
|
34 |
</tr>
|
35 |
</thead>
|
36 |
<tbody>
|
37 |
<tr class="package-row">
|
38 |
+
<td><i class="fa fa-server"></i> <?php _e('Default', 'duplicator');?></td>
|
39 |
+
<td><?php _e("Local", 'duplicator'); ?></td>
|
40 |
<td><?php echo DUPLICATOR_SSDIR_PATH; ?></td>
|
41 |
</tr>
|
42 |
<tr>
|
46 |
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/google_drive_64px.png" style='height:16px; width:16px; vertical-align: text-top' />
|
47 |
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/ftp-64.png" style='height:16px; width:16px; vertical-align: text-top' />
|
48 |
|
49 |
+
<?php echo sprintf(__('%1$s, %2$s, %3$s and other storage options available in', 'duplicator'), 'Dropbox', 'Google Drive', 'FTP'); ?>
|
50 |
<a href="http://snapcreek.com/duplicator/?free-storage" target="_blank">Duplicator Pro</a>
|
51 |
</div>
|
52 |
</td>
|
60 |
<!-- META-BOX: ARCHIVE -->
|
61 |
<div class="dup-box">
|
62 |
<div class="dup-box-title">
|
63 |
+
<i class="fa fa-file-archive-o"></i> <?php _e('Archive', 'duplicator') ?>
|
64 |
<span style="font-size:13px">
|
65 |
+
<span id="dup-archive-filter-file" title="<?php _e('File filter enabled', 'duplicator') ?>"><i class="fa fa-files-o"></i> <i class="fa fa-filter"></i> </span>
|
66 |
+
<span id="dup-archive-filter-db" title="<?php _e('Database filter enabled', 'duplicator') ?>"><i class="fa fa-table"></i> <i class="fa fa-filter"></i></span>
|
67 |
</span>
|
68 |
<div class="dup-box-arrow"></div>
|
69 |
</div>
|
72 |
<!-- NESTED TABS -->
|
73 |
<div class="categorydiv" id="dup-pack-opts-tabs">
|
74 |
<ul class="category-tabs">
|
75 |
+
<li class="tabs"><a href="javascript:void(0)" onclick="Duplicator.Pack.ToggleOptTabs(1, this)"><?php _e('Files', 'duplicator') ?></a></li>
|
76 |
+
<li><a href="javascript:void(0)"onclick="Duplicator.Pack.ToggleOptTabs(2, this)"><?php _e('Database', 'duplicator') ?></a></li>
|
77 |
</ul>
|
78 |
|
79 |
<!-- TAB1: PACKAGE -->
|
85 |
?>
|
86 |
<div class="dup-enable-filters">
|
87 |
<input type="checkbox" id="filter-on" name="filter-on" onclick="Duplicator.Pack.ToggleFileFilters()" <?php echo ($Package->Archive->FilterOn) ? "checked='checked'" : ""; ?> />
|
88 |
+
<label for="filter-on"><?php _e("Enable File Filters", 'duplicator') ?></label>
|
89 |
</div>
|
90 |
|
91 |
<div id="dup-file-filter-items">
|
92 |
+
<label for="filter-dirs" title="<?php _e("Separate all filters by semicolon", 'duplicator'); ?>"><?php _e("Directories", 'duplicator') ?>: </label>
|
93 |
<div class='dup-quick-links'>
|
94 |
+
<a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludePath('<?php echo rtrim(DUPLICATOR_WPROOTPATH, '/'); ?>')">[<?php _e("root path", 'duplicator') ?>]</a>
|
95 |
+
<a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludePath('<?php echo rtrim($upload_dir, '/'); ?>')">[<?php _e("wp-uploads", 'duplicator') ?>]</a>
|
96 |
+
<a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludePath('<?php echo DUP_Util::SafePath(WP_CONTENT_DIR); ?>/cache')">[<?php _e("cache", 'duplicator') ?>]</a>
|
97 |
+
<a href="javascript:void(0)" onclick="jQuery('#filter-dirs').val('')"><?php _e("(clear)", 'duplicator') ?></a>
|
98 |
</div>
|
99 |
<textarea name="filter-dirs" id="filter-dirs" placeholder="/full_path/exclude_path1;/full_path/exclude_path2;"><?php echo str_replace(";", ";\n", esc_textarea($Package->Archive->FilterDirs)) ?></textarea><br/>
|
100 |
+
<label class="no-select" title="<?php _e("Separate all filters by semicolon", 'duplicator'); ?>"><?php _e("File extensions", 'duplicator') ?>:</label>
|
101 |
<div class='dup-quick-links'>
|
102 |
+
<a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludeExts('avi;mov;mp4;mpeg;mpg;swf;wmv;aac;m3u;mp3;mpa;wav;wma')">[<?php _e("media", 'duplicator') ?>]</a>
|
103 |
+
<a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludeExts('zip;rar;tar;gz;bz2;7z')">[<?php _e("archive", 'duplicator') ?>]</a>
|
104 |
+
<a href="javascript:void(0)" onclick="jQuery('#filter-exts').val('')"><?php _e("(clear)", 'duplicator') ?></a>
|
105 |
</div>
|
106 |
<textarea name="filter-exts" id="filter-exts" placeholder="ext1;ext2;ext3;"><?php echo esc_textarea($Package->Archive->FilterExts); ?></textarea>
|
107 |
|
108 |
<div class="dup-tabs-opts-help">
|
109 |
+
<?php _e("The directory paths and extensions above will be be excluded from the archive file if enabled is checked.", 'duplicator'); ?> <br/>
|
110 |
+
<?php _e("Use the full path for directories and semicolons to separate all items.", 'duplicator'); ?>
|
111 |
</div>
|
112 |
<br/>
|
113 |
<span style="font-style:italic; font-size:12px ">
|
121 |
<div class="tabs-panel" id="dup-pack-opts-tabs-panel-2" style="display: none;">
|
122 |
<div class="dup-enable-filters">
|
123 |
<table>
|
124 |
+
<tr>
|
125 |
+
<td colspan="2">
|
126 |
+
<div style="margin:0 0 10px 0">
|
127 |
+
<?php _e("Build Mode", 'duplicator') ?>:
|
128 |
+
<a href="?page=duplicator-settings"><?php echo $dbbuild_mode; ?></a>
|
129 |
+
</div>
|
130 |
+
</td>
|
131 |
+
</tr>
|
132 |
<tr>
|
133 |
<td><input type="checkbox" id="dbfilter-on" name="dbfilter-on" onclick="Duplicator.Pack.ToggleDBFilters()" <?php echo ($Package->Database->FilterOn) ? "checked='checked'" : ""; ?> /></td>
|
134 |
+
<td >
|
135 |
+
<label for="dbfilter-on"><?php _e("Enable Table Filters", 'duplicator') ?> </label>
|
136 |
+
<i class="fa fa-question-circle"
|
137 |
+
data-tooltip-title="<?php DUP_Util::_e("Enable Table Filters:"); ?>"
|
138 |
+
data-tooltip="<?php DUP_Util::_e('Checked tables will not be added to the database script. Excluding certain tables can possibly cause your site or plugins to not work correctly after install!'); ?>">
|
139 |
+
</i>
|
140 |
+
</td>
|
141 |
</tr>
|
142 |
</table>
|
143 |
</div>
|
144 |
<div id="dup-db-filter-items">
|
145 |
+
<a href="javascript:void(0)" id="dball" onclick="jQuery('#dup-dbtables .checkbox').prop('checked', true).trigger('click');">[ <?php _e('Include All', 'duplicator'); ?> ]</a>
|
146 |
+
<a href="javascript:void(0)" id="dbnone" onclick="jQuery('#dup-dbtables .checkbox').prop('checked', false).trigger('click');">[ <?php _e('Exclude All', 'duplicator'); ?> ]</a>
|
147 |
+
<div style="white-space: nowrap">
|
148 |
<?php
|
149 |
$tables = $wpdb->get_results("SHOW FULL TABLES FROM `" . DB_NAME . "` WHERE Table_Type = 'BASE TABLE' ", ARRAY_N);
|
150 |
$num_rows = count($tables);
|
174 |
}
|
175 |
echo '</td></tr></table>';
|
176 |
?>
|
|
|
|
|
|
|
177 |
</div>
|
178 |
</div>
|
179 |
+
<br/>
|
180 |
+
<?php DUP_Util::_e("Compatibility Mode") ?>
|
181 |
+
<i class="fa fa-question-circle"
|
182 |
+
data-tooltip-title="<?php DUP_Util::_e("Compatibility Mode:"); ?>"
|
183 |
+
data-tooltip="<?php DUP_Util::_e('This is an advanced database backwards compatibility feature that should ONLY be used if having problems installing packages.'
|
184 |
+
. ' If the database server version is lower than the version where the package was built then these options may help generate a script that is more compliant'
|
185 |
+
. ' with the older database server. It is recommended to try each option separately starting with mysql40.'); ?>">
|
186 |
+
</i>
|
187 |
+
<small style="font-style:italic">
|
188 |
+
<a href="https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_compatible" target="_blank">[<?php DUP_Util::_e('details'); ?>]</a>
|
189 |
+
</small>
|
190 |
+
<br/>
|
191 |
+
|
192 |
+
<?php if ($dbbuild_mode == 'mysqldump') :?>
|
193 |
+
<?php
|
194 |
+
$modes = explode(',', $Package->Database->Compatible);
|
195 |
+
$is_mysql40 = in_array('mysql40', $modes);
|
196 |
+
$is_no_table = in_array('no_table_options', $modes);
|
197 |
+
$is_no_key = in_array('no_key_options', $modes);
|
198 |
+
$is_no_field = in_array('no_field_options', $modes);
|
199 |
+
?>
|
200 |
+
<table class="dbmysql-compatibility">
|
201 |
+
<tr>
|
202 |
+
<td>
|
203 |
+
<input type="checkbox" name="dbcompat[]" id="dbcompat-mysql40" value="mysql40" <?php echo $is_mysql40 ? 'checked="true"' : ''; ?> >
|
204 |
+
<label for="dbcompat-mysql40"><?php DUP_Util::_e("mysql40") ?></label>
|
205 |
+
</td>
|
206 |
+
<td>
|
207 |
+
<input type="checkbox" name="dbcompat[]" id="dbcompat-no_table_options" value="no_table_options" <?php echo $is_no_table ? 'checked="true"' : ''; ?>>
|
208 |
+
<label for="dbcompat-no_table_options"><?php DUP_Util::_e("no_table_options") ?></label>
|
209 |
+
</td>
|
210 |
+
<td>
|
211 |
+
<input type="checkbox" name="dbcompat[]" id="dbcompat-no_key_options" value="no_key_options" <?php echo $is_no_key ? 'checked="true"' : ''; ?>>
|
212 |
+
<label for="dbcompat-no_key_options"><?php DUP_Util::_e("no_key_options") ?></label>
|
213 |
+
</td>
|
214 |
+
<td>
|
215 |
+
<input type="checkbox" name="dbcompat[]" id="dbcompat-no_field_options" value="no_field_options" <?php echo $is_no_field ? 'checked="true"' : ''; ?>>
|
216 |
+
<label for="dbcompat-no_field_options"><?php DUP_Util::_e("no_field_options") ?></label>
|
217 |
+
</td>
|
218 |
+
</tr>
|
219 |
+
</table>
|
220 |
+
<?php else : ?>
|
221 |
+
<i><?php DUP_Util::_e("This option is only availbe with mysqldump mode."); ?></i>
|
222 |
+
<?php endif; ?>
|
223 |
+
|
224 |
</div>
|
225 |
</div>
|
226 |
</div>
|
231 |
<!-- META-BOX: INSTALLER -->
|
232 |
<div class="dup-box">
|
233 |
<div class="dup-box-title">
|
234 |
+
<i class="fa fa-bolt"></i> <?php _e('Installer', 'duplicator') ?>
|
235 |
<div class="dup-box-arrow"></div>
|
236 |
</div>
|
237 |
|
238 |
<div class="dup-box-panel" id="dup-pack-installer-panel" style="<?php echo $ui_css_installer ?>">
|
239 |
+
<div class="dup-installer-header-1"><?php echo _e('STEP 1 - INPUTS', 'duplicator'); ?></div><br/>
|
240 |
<table class="dup-installer-tbl">
|
241 |
<tr>
|
242 |
+
<td colspan="2"><div class="dup-installer-header-2"><?php _e("MySQL Server", 'duplicator') ?></div></td>
|
243 |
</tr>
|
244 |
<tr>
|
245 |
+
<td style="width:130px"><?php _e("Host", 'duplicator') ?></td>
|
246 |
<td><input type="text" name="dbhost" id="dbhost" value="<?php echo $Package->Installer->OptsDBHost ?>" maxlength="200" placeholder="localhost"/></td>
|
247 |
</tr>
|
248 |
<tr>
|
249 |
+
<td style="width:130px"><?php _e("Host Port", 'duplicator') ?></td>
|
250 |
<td><input type="text" name="dbport" id="dbport" value="<?php echo $Package->Installer->OptsDBPort ?>" maxlength="200" placeholder="3306"/></td>
|
251 |
</tr>
|
252 |
<tr>
|
253 |
+
<td><?php _e("Database", 'duplicator') ?></td>
|
254 |
<td><input type="text" name="dbname" id="dbname" value="<?php echo $Package->Installer->OptsDBName ?>" maxlength="100" placeholder="mydatabaseName" /></td>
|
255 |
</tr>
|
256 |
<tr>
|
257 |
+
<td><?php _e("User", 'duplicator') ?></td>
|
258 |
<td><input type="text" name="dbuser" id="dbuser" value="<?php echo $Package->Installer->OptsDBUser ?>" maxlength="100" placeholder="databaseUserName" /></td>
|
259 |
</tr>
|
260 |
<tr>
|
261 |
+
<td colspan="2"><div class="dup-installer-header-2"><?php _e("Advanced Options", 'duplicator') ?></div></td>
|
262 |
</tr>
|
263 |
<tr>
|
264 |
<td colspan="2">
|
265 |
<table>
|
266 |
<tr>
|
267 |
+
<td style="width:130px"><?php _e("SSL", 'duplicator') ?></td>
|
268 |
<td style="padding-right: 20px; white-space: nowrap">
|
269 |
<input type="checkbox" name="ssl-admin" id="ssl-admin" <?php echo ($Package->Installer->OptsSSLAdmin) ? "checked='checked'" : ""; ?> />
|
270 |
+
<label class="chk-labels" for="ssl-admin"><?php _e("Enforce on Admin", 'duplicator') ?></label>
|
271 |
</td>
|
272 |
<td>
|
273 |
<input type="checkbox" name="ssl-login" id="ssl-login" <?php echo ($Package->Installer->OptsSSLLogin) ? "checked='checked'" : ""; ?> />
|
274 |
+
<label class="chk-labels" for="ssl-login"><?php _e("Enforce on Logins", 'duplicator') ?></label>
|
275 |
</td>
|
276 |
</tr>
|
277 |
<tr>
|
278 |
+
<td><?php _e("Cache", 'duplicator') ?></td>
|
279 |
<td style="padding-right: 20px; white-space: nowrap">
|
280 |
<input type="checkbox" name="cache-wp" id="cache-wp" <?php echo ($Package->Installer->OptsCacheWP) ? "checked='checked'" : ""; ?> />
|
281 |
+
<label class="chk-labels" for="cache-wp"><?php _e("Keep Enabled", 'duplicator') ?></label>
|
282 |
</td>
|
283 |
<td>
|
284 |
<input type="checkbox" name="cache-path" id="cache-path" <?php echo ($Package->Installer->OptsCachePath) ? "checked='checked'" : ""; ?> />
|
285 |
+
<label class="chk-labels" for="cache-path"><?php _e("Keep Home Path", 'duplicator') ?></label>
|
286 |
</td>
|
287 |
</tr>
|
288 |
</table>
|
290 |
</tr>
|
291 |
</table><br />
|
292 |
|
293 |
+
<div class="dup-installer-header-1"><?php echo _e('STEP 2 - INPUTS', 'duplicator'); ?></div>
|
294 |
|
295 |
<table class="dup-installer-tbl">
|
296 |
<tr>
|
297 |
+
<td style="width:130px"><?php _e("New URL", 'duplicator') ?></td>
|
298 |
<td><input type="text" name="url-new" id="url-new" value="<?php echo $Package->Installer->OptsURLNew ?>" placeholder="http://mynewsite.com" /></td>
|
299 |
</tr>
|
300 |
</table>
|
301 |
|
302 |
<div class="dup-tabs-opts-help">
|
303 |
+
<?php _e("The installer can have these fields pre-filled at install time.", 'duplicator'); ?> <b><?php _e('All values are optional.', 'duplicator'); ?></b>
|
304 |
</div>
|
305 |
|
306 |
</div>
|
309 |
|
310 |
|
311 |
<div class="dup-button-footer">
|
312 |
+
<input type="button" value="<?php _e("Reset", 'duplicator') ?>" class="button button-large" <?php echo ($dup_tests['Success']) ? '' : 'disabled="disabled"'; ?> onclick="Duplicator.Pack.ResetSettings()" />
|
313 |
+
<input type="submit" value="<?php _e("Next", 'duplicator') ?> ►" class="button button-primary button-large" <?php echo ($dup_tests['Success']) ? '' : 'disabled="disabled"'; ?> />
|
314 |
</div>
|
315 |
|
316 |
</form>
|
views/packages/new2.base.php
CHANGED
@@ -1,14 +1,24 @@
|
|
1 |
<?php
|
2 |
require_once (DUPLICATOR_PLUGIN_PATH . 'classes/package.php');
|
3 |
require_once (DUPLICATOR_PLUGIN_PATH . 'classes/utility.php');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
global $wp_version;
|
5 |
$Package = new DUP_Package();
|
6 |
$Package->SaveActive($_POST);
|
7 |
$Package = DUP_Package::GetActive();
|
8 |
|
9 |
-
$
|
10 |
-
$
|
11 |
-
$
|
|
|
12 |
|
13 |
$zip_check = DUP_Util::GetZipPath();
|
14 |
?>
|
@@ -17,6 +27,7 @@
|
|
17 |
/* ============----------
|
18 |
PROGRESS ARES-CHECKS */
|
19 |
div#dup-progress-area {text-align:center; max-width:650px; min-height:200px; margin:0px auto 0px auto; padding:0px;}
|
|
|
20 |
div#dup-msg-success {color:#18592A; padding:5px; text-align: left}
|
21 |
div#dup-msg-success-subtitle {font-style: italic; margin:7px 0px}
|
22 |
div#dup-msg-error {color:#A62426; padding:5px; max-width: 790px;}
|
@@ -86,7 +97,7 @@ TOOL BAR: STEPS -->
|
|
86 |
<div id="dup-progress-area">
|
87 |
<!-- PROGRESS BAR -->
|
88 |
<div id="dup-progress-bar-area">
|
89 |
-
<
|
90 |
<div id="dup-progress-bar"></div>
|
91 |
<b><?php DUP_Util::_e('Please Wait...'); ?></b>
|
92 |
</div>
|
@@ -322,14 +333,16 @@ TOOL BAR: STEPS -->
|
|
322 |
DUP_Util::_e('No file extension filters have been set.');
|
323 |
}
|
324 |
?>
|
325 |
-
|
326 |
-
|
327 |
-
|
|
|
|
|
|
|
|
|
328 |
</div>
|
329 |
-
|
330 |
</div>
|
331 |
<?php endif; ?>
|
332 |
-
|
333 |
</div><!-- end .dup-panel -->
|
334 |
<br/>
|
335 |
|
@@ -388,7 +401,19 @@ TOOL BAR: STEPS -->
|
|
388 |
<table id="dup-scan-db-details">
|
389 |
<tr><td><b><?php DUP_Util::_e('Name:');?></b></td><td><?php echo DB_NAME ;?> </td></tr>
|
390 |
<tr><td><b><?php DUP_Util::_e('Host:');?></b></td><td><?php echo DB_HOST ;?> </td></tr>
|
391 |
-
<tr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
392 |
</table>
|
393 |
|
394 |
</div><!-- end .dup-panel -->
|
1 |
<?php
|
2 |
require_once (DUPLICATOR_PLUGIN_PATH . 'classes/package.php');
|
3 |
require_once (DUPLICATOR_PLUGIN_PATH . 'classes/utility.php');
|
4 |
+
|
5 |
+
if(empty($_POST))
|
6 |
+
{
|
7 |
+
//F5 Refresh Check
|
8 |
+
$redirect = admin_url('admin.php?page=duplicator&tab=new1');
|
9 |
+
echo "<script>window.location.href = '{$redirect}'</script>";
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
global $wp_version;
|
14 |
$Package = new DUP_Package();
|
15 |
$Package->SaveActive($_POST);
|
16 |
$Package = DUP_Package::GetActive();
|
17 |
|
18 |
+
$mysqldump_on = DUP_Settings::Get('package_mysqldump') && DUP_Database::GetMySqlDumpPath();
|
19 |
+
$mysqlcompat_on = isset($Package->Database->Compatible) && strlen($Package->Database->Compatible);
|
20 |
+
$mysqlcompat_on = ($mysqldump_on && $mysqlcompat_on) ? true : false;
|
21 |
+
$dbbuild_mode = ($mysqldump_on) ? 'mysqldump (fast)' : 'PHP (slow)';
|
22 |
|
23 |
$zip_check = DUP_Util::GetZipPath();
|
24 |
?>
|
27 |
/* ============----------
|
28 |
PROGRESS ARES-CHECKS */
|
29 |
div#dup-progress-area {text-align:center; max-width:650px; min-height:200px; margin:0px auto 0px auto; padding:0px;}
|
30 |
+
div.dup-progress-title {font-size:22px;padding:5px 0 20px 0; font-weight: bold}
|
31 |
div#dup-msg-success {color:#18592A; padding:5px; text-align: left}
|
32 |
div#dup-msg-success-subtitle {font-style: italic; margin:7px 0px}
|
33 |
div#dup-msg-error {color:#A62426; padding:5px; max-width: 790px;}
|
97 |
<div id="dup-progress-area">
|
98 |
<!-- PROGRESS BAR -->
|
99 |
<div id="dup-progress-bar-area">
|
100 |
+
<div class="dup-progress-title"><i class="fa fa-spinner fa-spin"></i> <?php DUP_Util::_e('Scanning Site'); ?></div>
|
101 |
<div id="dup-progress-bar"></div>
|
102 |
<b><?php DUP_Util::_e('Please Wait...'); ?></b>
|
103 |
</div>
|
333 |
DUP_Util::_e('No file extension filters have been set.');
|
334 |
}
|
335 |
?>
|
336 |
+
<small>
|
337 |
+
<?php
|
338 |
+
DUP_Util::_e('The root directory is where Duplicator starts archiving files. The excluded sections will be skipped during the archive process. ');
|
339 |
+
DUP_Util::_e('All results are stored in a json file. ');
|
340 |
+
?>
|
341 |
+
<a href="<?php echo DUPLICATOR_SITE_URL ?>/wp-admin/admin-ajax.php?action=duplicator_package_scan" target="dup_report"><?php DUP_Util::_e('[view json report]');?></a>
|
342 |
+
</small><br/>
|
343 |
</div>
|
|
|
344 |
</div>
|
345 |
<?php endif; ?>
|
|
|
346 |
</div><!-- end .dup-panel -->
|
347 |
<br/>
|
348 |
|
401 |
<table id="dup-scan-db-details">
|
402 |
<tr><td><b><?php DUP_Util::_e('Name:');?></b></td><td><?php echo DB_NAME ;?> </td></tr>
|
403 |
<tr><td><b><?php DUP_Util::_e('Host:');?></b></td><td><?php echo DB_HOST ;?> </td></tr>
|
404 |
+
<tr>
|
405 |
+
<td style="vertical-align: top"><b><?php DUP_Util::_e('Build Mode:');?></b></td>
|
406 |
+
<td style="line-height:18px">
|
407 |
+
<a href="?page=duplicator-settings" target="_blank"><?php echo $dbbuild_mode ;?></a>
|
408 |
+
<?php if ($mysqlcompat_on) :?>
|
409 |
+
<br/>
|
410 |
+
<small style="font-style:italic; color:maroon">
|
411 |
+
<i class="fa fa-exclamation-circle"></i> <?php DUP_Util::_e('MySQL Compatibility Mode Enabled'); ?>
|
412 |
+
<a href="https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_compatible" target="_blank">[<?php DUP_Util::_e('details'); ?>]</a>
|
413 |
+
</small>
|
414 |
+
<?php endif;?>
|
415 |
+
</td>
|
416 |
+
</tr>
|
417 |
</table>
|
418 |
|
419 |
</div><!-- end .dup-panel -->
|
views/packages/new3.base.php
CHANGED
@@ -1,10 +1,14 @@
|
|
1 |
<?php
|
2 |
require_once (DUPLICATOR_PLUGIN_PATH . 'classes/package.php');
|
3 |
$Package = DUP_Package::GetActive();
|
|
|
|
|
|
|
4 |
?>
|
5 |
|
6 |
<style>
|
7 |
div#dup-progress-area {text-align:center; max-width:800px; min-height:200px; border:1px solid silver; border-radius:5px; margin:25px auto 10px auto; padding:0px; box-shadow: 0 8px 6px -6px #999;}
|
|
|
8 |
div#dup-progress-area div.inner {padding:10px; line-height:22px}
|
9 |
div#dup-progress-area h2.title {background-color:#efefef; margin:0px}
|
10 |
div#dup-progress-area span.label {font-weight:bold}
|
@@ -30,18 +34,18 @@ TOOL BAR: STEPS -->
|
|
30 |
<td style="white-space: nowrap">
|
31 |
<div id="dup-wiz">
|
32 |
<div id="dup-wiz-steps">
|
33 |
-
<div class="completed-step"><a><span>1</span> <?php _e('Setup', '
|
34 |
-
<div class="completed-step"><a><span>2</span> <?php _e('Scan', '
|
35 |
-
<div class="active-step"><a><span>3</span> <?php _e('Build', '
|
36 |
</div>
|
37 |
<div id="dup-wiz-title">
|
38 |
-
<?php _e('Step 3: Build Package', '
|
39 |
</div>
|
40 |
</div>
|
41 |
</td>
|
42 |
<td class="dup-toolbar-btns">
|
43 |
-
<a id="dup-pro-create-new" href="?page=duplicator" class="add-new-h2"><i class="fa fa-archive"></i> <?php _e("All Packages", '
|
44 |
-
<span> <?php _e("Create New", '
|
45 |
</td>
|
46 |
</tr>
|
47 |
</table>
|
@@ -52,42 +56,42 @@ TOOL BAR: STEPS -->
|
|
52 |
|
53 |
<!-- PROGRESS BAR -->
|
54 |
<div id="dup-progress-bar-area">
|
55 |
-
<
|
56 |
<div id="dup-progress-bar"></div>
|
57 |
-
<b><?php _e('Please Wait...', '
|
58 |
-
<i><?php _e('Keep this window open during the build process.', '
|
59 |
-
<i><?php _e('This may take several minutes.', '
|
60 |
</div>
|
61 |
|
62 |
<div id="dup-progress-area" class="dup-panel" style="display:none">
|
63 |
-
<div class="dup-panel-title dup-box-title-fancy"><b style="font-size:18px"><?php _e('Build Status', '
|
64 |
<div class="dup-panel-panel">
|
65 |
|
66 |
<!-- =========================
|
67 |
SUCCESS MESSAGE -->
|
68 |
<div id="dup-msg-success" style="display:none">
|
69 |
<div class="dup-hdr-success">
|
70 |
-
<i class="fa fa-check-square-o fa-lg"></i> <?php _e('Package Completed', '
|
71 |
</div>
|
72 |
|
73 |
<div class="dup-msg-success-stats">
|
74 |
-
<b><?php _e('Name', '
|
75 |
-
<b><?php _e('Process Time', '
|
76 |
</div><br/>
|
77 |
|
78 |
<button id="dup-btn-installer" class="button button-primary button-large">
|
79 |
-
<i class="fa fa-bolt"></i> <?php _e("Installer", '
|
80 |
<span id="dup-btn-installer-size" class="dup-btn-size"></span>
|
81 |
</button>
|
82 |
<button id="dup-btn-archive" class="button button-primary button-large">
|
83 |
-
<i class="fa fa-file-archive-o"></i> <?php _e("Archive", '
|
84 |
<span id="dup-btn-archive-size" class="dup-btn-size"></span>
|
85 |
-
</button
|
86 |
-
|
87 |
-
|
|
|
88 |
<div class="dup-msg-success-links">
|
89 |
-
<?php printf("<a href='?page=duplicator'>[ %s ]</a>", __('All Packages', '
|
90 |
-
<?php //printf("<a href='?page=duplicator&tab=new1'>[ %s ]</a>", __('Create Another Package', 'wpduplicator'));?>
|
91 |
</div><br/>
|
92 |
|
93 |
<!-- Used for iMacros testing do not remove -->
|
@@ -97,34 +101,34 @@ TOOL BAR: STEPS -->
|
|
97 |
<!-- =========================
|
98 |
ERROR MESSAGE -->
|
99 |
<div id="dup-msg-error" style="display:none">
|
100 |
-
<div class="done-title"><i class="fa fa-chain-broken"></i> <?php _e('Build Interrupt', '
|
101 |
-
<b><?php _e('The current build has experienced an issue.', '
|
102 |
|
103 |
-
<i><?php _e('Please try the process again.', '
|
104 |
|
105 |
-
<input type="button" style="margin-right:10px;" class="button" value="<?php _e('Diagnose', '
|
106 |
-
|
107 |
<fieldset>
|
108 |
-
<legend><b><i class="fa fa-exclamation"></i> <?php _e('Details', '
|
109 |
<div class="dup-msg-error-area">
|
110 |
<div id="dup-msg-error-response-status">
|
111 |
-
<span class="label"><?php _e("Server Status:", '
|
112 |
<span class="data"></span>
|
113 |
</div>
|
114 |
<div id="dup-msg-error-response-text">
|
115 |
-
<span class="label"><?php _e("Error Message:", '
|
116 |
<span class="data"></span>
|
117 |
</div>
|
118 |
</div>
|
119 |
</fieldset><br/>
|
120 |
|
121 |
<fieldset style="color:#777">
|
122 |
-
<legend><b> <?php _e('Notice', '
|
123 |
<div class="dup-msg-error-area">
|
124 |
<?php printf('<b><i class="fa fa-folder-o"></i> %s %s</b> <br/> %s',
|
125 |
__('Build Folder:'),
|
126 |
DUPLICATOR_SSDIR_PATH_TMP,
|
127 |
-
__("Some servers close connections quickly; yet the build can continue to run in the background. To validate if a build is still running; open the 'tmp' folder above and see if the archive file is growing in size. If it is not then your server has strict timeout constraints. Please visit the support page for additional resources.", '
|
128 |
);
|
129 |
?> <br/>
|
130 |
</div>
|
@@ -133,7 +137,7 @@ TOOL BAR: STEPS -->
|
|
133 |
<!-- LOGS -->
|
134 |
<div id="dup-logs">
|
135 |
<div style="font-weight:bold">
|
136 |
-
<i class="fa fa-list-alt"></i> <a href='javascript:void(0)' style="color:#A62426" onclick='Duplicator.OpenLogWindow()'> <?php _e('Package Log', '
|
137 |
</div>
|
138 |
<br/>
|
139 |
</div>
|
1 |
<?php
|
2 |
require_once (DUPLICATOR_PLUGIN_PATH . 'classes/package.php');
|
3 |
$Package = DUP_Package::GetActive();
|
4 |
+
|
5 |
+
|
6 |
+
|
7 |
?>
|
8 |
|
9 |
<style>
|
10 |
div#dup-progress-area {text-align:center; max-width:800px; min-height:200px; border:1px solid silver; border-radius:5px; margin:25px auto 10px auto; padding:0px; box-shadow: 0 8px 6px -6px #999;}
|
11 |
+
div.dup-progress-title {font-size:22px;padding:5px 0 20px 0; font-weight: bold}
|
12 |
div#dup-progress-area div.inner {padding:10px; line-height:22px}
|
13 |
div#dup-progress-area h2.title {background-color:#efefef; margin:0px}
|
14 |
div#dup-progress-area span.label {font-weight:bold}
|
34 |
<td style="white-space: nowrap">
|
35 |
<div id="dup-wiz">
|
36 |
<div id="dup-wiz-steps">
|
37 |
+
<div class="completed-step"><a><span>1</span> <?php _e('Setup', 'duplicator'); ?></a></div>
|
38 |
+
<div class="completed-step"><a><span>2</span> <?php _e('Scan', 'duplicator'); ?> </a></div>
|
39 |
+
<div class="active-step"><a><span>3</span> <?php _e('Build', 'duplicator'); ?> </a></div>
|
40 |
</div>
|
41 |
<div id="dup-wiz-title">
|
42 |
+
<?php _e('Step 3: Build Package', 'duplicator'); ?>
|
43 |
</div>
|
44 |
</div>
|
45 |
</td>
|
46 |
<td class="dup-toolbar-btns">
|
47 |
+
<a id="dup-pro-create-new" href="?page=duplicator" class="add-new-h2"><i class="fa fa-archive"></i> <?php _e("All Packages", 'duplicator'); ?></a>
|
48 |
+
<span> <?php _e("Create New", 'duplicator'); ?></span>
|
49 |
</td>
|
50 |
</tr>
|
51 |
</table>
|
56 |
|
57 |
<!-- PROGRESS BAR -->
|
58 |
<div id="dup-progress-bar-area">
|
59 |
+
<div class="dup-progress-title"><i class="fa fa-cog fa-spin"></i> <?php _e('Building Package', 'duplicator'); ?></div>
|
60 |
<div id="dup-progress-bar"></div>
|
61 |
+
<b><?php _e('Please Wait...', 'duplicator'); ?></b><br/><br/>
|
62 |
+
<i><?php _e('Keep this window open during the build process.', 'duplicator'); ?></i><br/>
|
63 |
+
<i><?php _e('This may take several minutes.', 'duplicator'); ?></i><br/>
|
64 |
</div>
|
65 |
|
66 |
<div id="dup-progress-area" class="dup-panel" style="display:none">
|
67 |
+
<div class="dup-panel-title dup-box-title-fancy"><b style="font-size:18px"><?php _e('Build Status', 'duplicator'); ?></b></div>
|
68 |
<div class="dup-panel-panel">
|
69 |
|
70 |
<!-- =========================
|
71 |
SUCCESS MESSAGE -->
|
72 |
<div id="dup-msg-success" style="display:none">
|
73 |
<div class="dup-hdr-success">
|
74 |
+
<i class="fa fa-check-square-o fa-lg"></i> <?php _e('Package Completed', 'duplicator'); ?>
|
75 |
</div>
|
76 |
|
77 |
<div class="dup-msg-success-stats">
|
78 |
+
<b><?php _e('Name', 'duplicator'); ?>:</b> <span id="data-name-hash"></span><br/>
|
79 |
+
<b><?php _e('Process Time', 'duplicator'); ?>:</b> <span id="data-time"></span><br/>
|
80 |
</div><br/>
|
81 |
|
82 |
<button id="dup-btn-installer" class="button button-primary button-large">
|
83 |
+
<i class="fa fa-bolt"></i> <?php _e("Installer", 'duplicator') ?>
|
84 |
<span id="dup-btn-installer-size" class="dup-btn-size"></span>
|
85 |
</button>
|
86 |
<button id="dup-btn-archive" class="button button-primary button-large">
|
87 |
+
<i class="fa fa-file-archive-o"></i> <?php _e("Archive", 'duplicator') ?>
|
88 |
<span id="dup-btn-archive-size" class="dup-btn-size"></span>
|
89 |
+
</button>
|
90 |
+
<div style='margin: 7px 0 20px 0'>
|
91 |
+
<small><i><?php _e("click buttons to download", 'duplicator') ?></i></small>
|
92 |
+
</div>
|
93 |
<div class="dup-msg-success-links">
|
94 |
+
<?php printf("<a href='?page=duplicator'>[ %s ]</a>", __('All Packages', 'duplicator'));?>
|
|
|
95 |
</div><br/>
|
96 |
|
97 |
<!-- Used for iMacros testing do not remove -->
|
101 |
<!-- =========================
|
102 |
ERROR MESSAGE -->
|
103 |
<div id="dup-msg-error" style="display:none">
|
104 |
+
<div class="done-title"><i class="fa fa-chain-broken"></i> <?php _e('Build Interrupt', 'duplicator'); ?></div>
|
105 |
+
<b><?php _e('The current build has experienced an issue.', 'duplicator'); ?></b><br/>
|
106 |
|
107 |
+
<i><?php _e('Please try the process again.', 'duplicator'); ?></i><br/><br/>
|
108 |
|
109 |
+
<input type="button" style="margin-right:10px;" class="button" value="<?php _e('Diagnose', 'duplicator'); ?>" onclick="window.open('http://lifeinthegrid.com/support/knowledgebase.php?article=12#faq-trouble-timeout', '_blank');return false;" />
|
110 |
+
<input type="button" class="button" value="<?php _e('Try Again', 'duplicator'); ?>" onclick="window.location = 'admin.php?page=duplicator&tab=new1'" />
|
111 |
<fieldset>
|
112 |
+
<legend><b><i class="fa fa-exclamation"></i> <?php _e('Details', 'duplicator'); ?></b></legend>
|
113 |
<div class="dup-msg-error-area">
|
114 |
<div id="dup-msg-error-response-status">
|
115 |
+
<span class="label"><?php _e("Server Status:", 'duplicator'); ?></span>
|
116 |
<span class="data"></span>
|
117 |
</div>
|
118 |
<div id="dup-msg-error-response-text">
|
119 |
+
<span class="label"><?php _e("Error Message:", 'duplicator'); ?></span><br/>
|
120 |
<span class="data"></span>
|
121 |
</div>
|
122 |
</div>
|
123 |
</fieldset><br/>
|
124 |
|
125 |
<fieldset style="color:#777">
|
126 |
+
<legend><b> <?php _e('Notice', 'duplicator'); ?></b></legend>
|
127 |
<div class="dup-msg-error-area">
|
128 |
<?php printf('<b><i class="fa fa-folder-o"></i> %s %s</b> <br/> %s',
|
129 |
__('Build Folder:'),
|
130 |
DUPLICATOR_SSDIR_PATH_TMP,
|
131 |
+
__("Some servers close connections quickly; yet the build can continue to run in the background. To validate if a build is still running; open the 'tmp' folder above and see if the archive file is growing in size. If it is not then your server has strict timeout constraints. Please visit the support page for additional resources.", 'duplicator')
|
132 |
);
|
133 |
?> <br/>
|
134 |
</div>
|
137 |
<!-- LOGS -->
|
138 |
<div id="dup-logs">
|
139 |
<div style="font-weight:bold">
|
140 |
+
<i class="fa fa-list-alt"></i> <a href='javascript:void(0)' style="color:#A62426" onclick='Duplicator.OpenLogWindow()'> <?php _e('Package Log', 'duplicator');?> </a>
|
141 |
</div>
|
142 |
<br/>
|
143 |
</div>
|
views/settings/controller.php
CHANGED
@@ -16,11 +16,7 @@ $current_tab = isset($_REQUEST['tab']) ? esc_html($_REQUEST['tab']) : 'general';
|
|
16 |
|
17 |
<div class="wrap">
|
18 |
|
19 |
-
<?php duplicator_header(__("Settings", '
|
20 |
-
|
21 |
-
<!--h2 class="nav-tab-wrapper">
|
22 |
-
<a href="?page=duplicator-settings&tab=general" class="nav-tab <?php echo ($current_tab == 'general') ? 'nav-tab-active' : '' ?>"> <?php _e('General', 'wpduplicator'); ?></a>
|
23 |
-
</h2-->
|
24 |
|
25 |
<?php
|
26 |
switch ($current_tab) {
|
16 |
|
17 |
<div class="wrap">
|
18 |
|
19 |
+
<?php duplicator_header(__("Settings", 'duplicator')) ?>
|
|
|
|
|
|
|
|
|
20 |
|
21 |
<?php
|
22 |
switch ($current_tab) {
|
views/settings/general.php
CHANGED
@@ -3,7 +3,7 @@ global $wp_version;
|
|
3 |
global $wpdb;
|
4 |
|
5 |
$action_updated = null;
|
6 |
-
$action_response = __("Settings Saved", '
|
7 |
|
8 |
//SAVE RESULTS
|
9 |
if (isset($_POST['action']) && $_POST['action'] == 'save') {
|
@@ -79,33 +79,33 @@ $mysqlDumpFound = ($mysqlDumpPath) ? true : false;
|
|
79 |
|
80 |
<!-- ===============================
|
81 |
PLUG-IN SETTINGS -->
|
82 |
-
<h3 class="title"><?php _e("Plugin", '
|
83 |
<hr size="1" />
|
84 |
<table class="form-table">
|
85 |
<tr valign="top">
|
86 |
-
<th scope="row"><label><?php _e("Version", '
|
87 |
<td><?php echo DUPLICATOR_VERSION ?></td>
|
88 |
</tr>
|
89 |
<tr valign="top">
|
90 |
-
<th scope="row"><label><?php _e("Uninstall", '
|
91 |
<td>
|
92 |
<input type="checkbox" name="uninstall_settings" id="uninstall_settings" <?php echo ($uninstall_settings) ? 'checked="checked"' : ''; ?> />
|
93 |
-
<label for="uninstall_settings"><?php _e("Delete Plugin Settings", '
|
94 |
|
95 |
<input type="checkbox" name="uninstall_files" id="uninstall_files" <?php echo ($uninstall_files) ? 'checked="checked"' : ''; ?> />
|
96 |
-
<label for="uninstall_files"><?php _e("Delete Entire Storage Directory", '
|
97 |
|
98 |
</td>
|
99 |
</tr>
|
100 |
<tr valign="top">
|
101 |
-
<th scope="row"><label><?php _e("Storage", '
|
102 |
<td>
|
103 |
-
<?php _e("Full Path", '
|
104 |
<?php echo DUP_Util::SafePath(DUPLICATOR_SSDIR_PATH); ?><br/><br/>
|
105 |
<input type="checkbox" name="storage_htaccess_off" id="storage_htaccess_off" <?php echo ($storage_htaccess_off) ? 'checked="checked"' : ''; ?> />
|
106 |
-
<label for="storage_htaccess_off"><?php _e("Disable .htaccess File In Storage Directory", '
|
107 |
<p class="description">
|
108 |
-
<?php _e("Disable if issues occur when downloading installer/archive files.", '
|
109 |
</p>
|
110 |
</td>
|
111 |
</tr>
|
@@ -114,28 +114,28 @@ $mysqlDumpFound = ($mysqlDumpPath) ? true : false;
|
|
114 |
|
115 |
<!-- ===============================
|
116 |
PACKAGE SETTINGS -->
|
117 |
-
<h3 class="title"><?php _e("Package", '
|
118 |
<hr size="1" />
|
119 |
<table class="form-table">
|
120 |
<tr>
|
121 |
-
<th scope="row"><label><?php _e("Archive Flush", '
|
122 |
<td>
|
123 |
<input type="checkbox" name="package_zip_flush" id="package_zip_flush" <?php echo ($package_zip_flush) ? 'checked="checked"' : ''; ?> />
|
124 |
-
<label for="package_zip_flush"><?php _e("Attempt Network Keep Alive", '
|
125 |
-
<i style="font-size:12px">(<?php _e("recommended only for large archives", '
|
126 |
<p class="description">
|
127 |
-
<?php _e("This will attempt to keep a network connection established for large archives.", '
|
128 |
</p>
|
129 |
</td>
|
130 |
</tr>
|
131 |
<tr>
|
132 |
-
<th scope="row"><label><?php _e("Database Build", '
|
133 |
<td>
|
134 |
<input type="radio" name="package_dbmode" id="package_phpdump" value="php" <?php echo (! $package_mysqldump) ? 'checked="checked"' : ''; ?> />
|
135 |
-
<label for="package_phpdump"><?php _e("Use PHP", '
|
136 |
|
137 |
<div style="margin:5px 0px 0px 25px">
|
138 |
-
<label for="package_phpdump_qrylimit"><?php _e("Query Limit Size", '
|
139 |
<select name="package_phpdump_qrylimit" id="package_phpdump_qrylimit">
|
140 |
<?php
|
141 |
foreach($phpdump_chunkopts as $value) {
|
@@ -144,42 +144,42 @@ $mysqlDumpFound = ($mysqlDumpPath) ? true : false;
|
|
144 |
}
|
145 |
?>
|
146 |
</select>
|
147 |
-
<i style="font-size:12px">(<?php _e("higher values speed up build times but uses more memory", '
|
148 |
|
149 |
</div><br/>
|
150 |
|
151 |
<?php if (!DUP_Util::IsShellExecAvailable()) : ?>
|
152 |
<p class="description">
|
153 |
<?php
|
154 |
-
_e("This server does not have shell_exec configured to run.", '
|
155 |
echo '<br/>';
|
156 |
-
_e("Please contact the server administrator to enable this feature.", '
|
157 |
?>
|
158 |
</p>
|
159 |
<?php else : ?>
|
160 |
<input type="radio" name="package_dbmode" value="mysql" id="package_mysqldump" <?php echo ($package_mysqldump) ? 'checked="checked"' : ''; ?> />
|
161 |
-
<label for="package_mysqldump"><?php _e("Use mysqldump", '
|
162 |
-
<i style="font-size:12px">(<?php _e("recommended for large databases", '
|
163 |
|
164 |
<div style="margin:5px 0px 0px 25px">
|
165 |
<?php if ($mysqlDumpFound) : ?>
|
166 |
<div class="dup-feature-found">
|
167 |
-
<?php _e("Working Path:", '
|
168 |
<i><?php echo $mysqlDumpPath ?></i>
|
169 |
</div><br/>
|
170 |
<?php else : ?>
|
171 |
<div class="dup-feature-notfound">
|
172 |
<?php
|
173 |
-
_e('Mysqldump was not found at its default location or the location provided. Please enter a path to a valid location where mysqldump can run. If the problem persist contact your server administrator.', '
|
174 |
?>
|
175 |
</div><br/>
|
176 |
<?php endif; ?>
|
177 |
|
178 |
-
<label><?php _e("Add Custom Path:", '
|
179 |
<input type="text" name="package_mysqldump_path" id="package_mysqldump_path" value="<?php echo $package_mysqldump_path; ?> " />
|
180 |
<p class="description">
|
181 |
<?php
|
182 |
-
_e("This is the path to your mysqldump program.", '
|
183 |
?>
|
184 |
</p>
|
185 |
</div>
|
@@ -188,10 +188,10 @@ $mysqlDumpFound = ($mysqlDumpPath) ? true : false;
|
|
188 |
</td>
|
189 |
</tr>
|
190 |
<tr>
|
191 |
-
<th scope="row"><label><?php _e("Package Debug", '
|
192 |
<td>
|
193 |
<input type="checkbox" name="package_debug" id="package_debug" <?php echo ($package_debug) ? 'checked="checked"' : ''; ?> />
|
194 |
-
<label for="package_debug"><?php _e("Show Package Debug Status in Packages Screen", '
|
195 |
</td>
|
196 |
</tr>
|
197 |
|
@@ -199,27 +199,27 @@ $mysqlDumpFound = ($mysqlDumpPath) ? true : false;
|
|
199 |
|
200 |
<!-- ===============================
|
201 |
WPFRONT SETTINGS -->
|
202 |
-
<h3 class="title"><?php _e("Roles & Capabilities", '
|
203 |
<hr size="1" />
|
204 |
|
205 |
<table class="form-table">
|
206 |
<tr>
|
207 |
-
<th scope="row"><label><?php _e("Custom Roles", '
|
208 |
<td>
|
209 |
<input type="checkbox" name="wpfront_integrate" id="wpfront_integrate" <?php echo ($wpfront_integrate) ? 'checked="checked"' : ''; ?> <?php echo $wpfront_ready ? '' : 'disabled'; ?> />
|
210 |
-
<label for="wpfront_integrate"><?php _e("Enable User Role Editor Plugin Integration", '
|
211 |
|
212 |
<div style="margin:15px 0px 0px 25px">
|
213 |
<p class="description">
|
214 |
<?php printf('%s <a href="https://wordpress.org/plugins/wpfront-user-role-editor/" target="_blank">%s</a> %s'
|
215 |
. ' <a href="https://wpfront.com/user-role-editor-pro/?ref=3" target="_blank">%s</a> %s '
|
216 |
. ' <a href="https://wpfront.com/integrations/duplicator-integration/" target="_blank">%s</a>',
|
217 |
-
__('The User Role Editor Plugin', '
|
218 |
-
__('Free', '
|
219 |
-
__('or', '
|
220 |
-
__('Professional', '
|
221 |
-
__('must be installed to use', '
|
222 |
-
__('this feature.', '
|
223 |
);
|
224 |
?>
|
225 |
</p>
|
@@ -231,7 +231,7 @@ $mysqlDumpFound = ($mysqlDumpPath) ? true : false;
|
|
231 |
|
232 |
<p class="submit" style="margin: 20px 0px 0xp 5px;">
|
233 |
<br/>
|
234 |
-
<input type="submit" name="submit" id="submit" class="button-primary" value="<?php _e("Save Settings", '
|
235 |
</p>
|
236 |
|
237 |
</form>
|
3 |
global $wpdb;
|
4 |
|
5 |
$action_updated = null;
|
6 |
+
$action_response = __("Settings Saved", 'duplicator');
|
7 |
|
8 |
//SAVE RESULTS
|
9 |
if (isset($_POST['action']) && $_POST['action'] == 'save') {
|
79 |
|
80 |
<!-- ===============================
|
81 |
PLUG-IN SETTINGS -->
|
82 |
+
<h3 class="title"><?php _e("Plugin", 'duplicator') ?> </h3>
|
83 |
<hr size="1" />
|
84 |
<table class="form-table">
|
85 |
<tr valign="top">
|
86 |
+
<th scope="row"><label><?php _e("Version", 'duplicator'); ?></label></th>
|
87 |
<td><?php echo DUPLICATOR_VERSION ?></td>
|
88 |
</tr>
|
89 |
<tr valign="top">
|
90 |
+
<th scope="row"><label><?php _e("Uninstall", 'duplicator'); ?></label></th>
|
91 |
<td>
|
92 |
<input type="checkbox" name="uninstall_settings" id="uninstall_settings" <?php echo ($uninstall_settings) ? 'checked="checked"' : ''; ?> />
|
93 |
+
<label for="uninstall_settings"><?php _e("Delete Plugin Settings", 'duplicator') ?> </label><br/>
|
94 |
|
95 |
<input type="checkbox" name="uninstall_files" id="uninstall_files" <?php echo ($uninstall_files) ? 'checked="checked"' : ''; ?> />
|
96 |
+
<label for="uninstall_files"><?php _e("Delete Entire Storage Directory", 'duplicator') ?></label><br/>
|
97 |
|
98 |
</td>
|
99 |
</tr>
|
100 |
<tr valign="top">
|
101 |
+
<th scope="row"><label><?php _e("Storage", 'duplicator'); ?></label></th>
|
102 |
<td>
|
103 |
+
<?php _e("Full Path", 'duplicator'); ?>:
|
104 |
<?php echo DUP_Util::SafePath(DUPLICATOR_SSDIR_PATH); ?><br/><br/>
|
105 |
<input type="checkbox" name="storage_htaccess_off" id="storage_htaccess_off" <?php echo ($storage_htaccess_off) ? 'checked="checked"' : ''; ?> />
|
106 |
+
<label for="storage_htaccess_off"><?php _e("Disable .htaccess File In Storage Directory", 'duplicator') ?> </label>
|
107 |
<p class="description">
|
108 |
+
<?php _e("Disable if issues occur when downloading installer/archive files.", 'duplicator'); ?>
|
109 |
</p>
|
110 |
</td>
|
111 |
</tr>
|
114 |
|
115 |
<!-- ===============================
|
116 |
PACKAGE SETTINGS -->
|
117 |
+
<h3 class="title"><?php _e("Package", 'duplicator') ?> </h3>
|
118 |
<hr size="1" />
|
119 |
<table class="form-table">
|
120 |
<tr>
|
121 |
+
<th scope="row"><label><?php _e("Archive Flush", 'duplicator'); ?></label></th>
|
122 |
<td>
|
123 |
<input type="checkbox" name="package_zip_flush" id="package_zip_flush" <?php echo ($package_zip_flush) ? 'checked="checked"' : ''; ?> />
|
124 |
+
<label for="package_zip_flush"><?php _e("Attempt Network Keep Alive", 'duplicator'); ?></label>
|
125 |
+
<i style="font-size:12px">(<?php _e("recommended only for large archives", 'duplicator'); ?>)</i>
|
126 |
<p class="description">
|
127 |
+
<?php _e("This will attempt to keep a network connection established for large archives.", 'duplicator'); ?>
|
128 |
</p>
|
129 |
</td>
|
130 |
</tr>
|
131 |
<tr>
|
132 |
+
<th scope="row"><label><?php _e("Database Build", 'duplicator'); ?></label></th>
|
133 |
<td>
|
134 |
<input type="radio" name="package_dbmode" id="package_phpdump" value="php" <?php echo (! $package_mysqldump) ? 'checked="checked"' : ''; ?> />
|
135 |
+
<label for="package_phpdump"><?php _e("Use PHP", 'duplicator'); ?></label>
|
136 |
|
137 |
<div style="margin:5px 0px 0px 25px">
|
138 |
+
<label for="package_phpdump_qrylimit"><?php _e("Query Limit Size", 'duplicator'); ?></label>
|
139 |
<select name="package_phpdump_qrylimit" id="package_phpdump_qrylimit">
|
140 |
<?php
|
141 |
foreach($phpdump_chunkopts as $value) {
|
144 |
}
|
145 |
?>
|
146 |
</select>
|
147 |
+
<i style="font-size:12px">(<?php _e("higher values speed up build times but uses more memory", 'duplicator'); ?>)</i>
|
148 |
|
149 |
</div><br/>
|
150 |
|
151 |
<?php if (!DUP_Util::IsShellExecAvailable()) : ?>
|
152 |
<p class="description">
|
153 |
<?php
|
154 |
+
_e("This server does not have shell_exec configured to run.", 'duplicator');
|
155 |
echo '<br/>';
|
156 |
+
_e("Please contact the server administrator to enable this feature.", 'duplicator');
|
157 |
?>
|
158 |
</p>
|
159 |
<?php else : ?>
|
160 |
<input type="radio" name="package_dbmode" value="mysql" id="package_mysqldump" <?php echo ($package_mysqldump) ? 'checked="checked"' : ''; ?> />
|
161 |
+
<label for="package_mysqldump"><?php _e("Use mysqldump", 'duplicator'); ?></label>
|
162 |
+
<i style="font-size:12px">(<?php _e("recommended for large databases", 'duplicator'); ?>)</i> <br/><br/>
|
163 |
|
164 |
<div style="margin:5px 0px 0px 25px">
|
165 |
<?php if ($mysqlDumpFound) : ?>
|
166 |
<div class="dup-feature-found">
|
167 |
+
<?php _e("Working Path:", 'duplicator'); ?>
|
168 |
<i><?php echo $mysqlDumpPath ?></i>
|
169 |
</div><br/>
|
170 |
<?php else : ?>
|
171 |
<div class="dup-feature-notfound">
|
172 |
<?php
|
173 |
+
_e('Mysqldump was not found at its default location or the location provided. Please enter a path to a valid location where mysqldump can run. If the problem persist contact your server administrator.', 'duplicator');
|
174 |
?>
|
175 |
</div><br/>
|
176 |
<?php endif; ?>
|
177 |
|
178 |
+
<label><?php _e("Add Custom Path:", 'duplicator'); ?></label><br/>
|
179 |
<input type="text" name="package_mysqldump_path" id="package_mysqldump_path" value="<?php echo $package_mysqldump_path; ?> " />
|
180 |
<p class="description">
|
181 |
<?php
|
182 |
+
_e("This is the path to your mysqldump program.", 'duplicator');
|
183 |
?>
|
184 |
</p>
|
185 |
</div>
|
188 |
</td>
|
189 |
</tr>
|
190 |
<tr>
|
191 |
+
<th scope="row"><label><?php _e("Package Debug", 'duplicator'); ?></label></th>
|
192 |
<td>
|
193 |
<input type="checkbox" name="package_debug" id="package_debug" <?php echo ($package_debug) ? 'checked="checked"' : ''; ?> />
|
194 |
+
<label for="package_debug"><?php _e("Show Package Debug Status in Packages Screen", 'duplicator'); ?></label>
|
195 |
</td>
|
196 |
</tr>
|
197 |
|
199 |
|
200 |
<!-- ===============================
|
201 |
WPFRONT SETTINGS -->
|
202 |
+
<h3 class="title"><?php _e("Roles & Capabilities", 'duplicator') ?> </h3>
|
203 |
<hr size="1" />
|
204 |
|
205 |
<table class="form-table">
|
206 |
<tr>
|
207 |
+
<th scope="row"><label><?php _e("Custom Roles", 'duplicator'); ?></label></th>
|
208 |
<td>
|
209 |
<input type="checkbox" name="wpfront_integrate" id="wpfront_integrate" <?php echo ($wpfront_integrate) ? 'checked="checked"' : ''; ?> <?php echo $wpfront_ready ? '' : 'disabled'; ?> />
|
210 |
+
<label for="wpfront_integrate"><?php _e("Enable User Role Editor Plugin Integration", 'duplicator'); ?></label>
|
211 |
|
212 |
<div style="margin:15px 0px 0px 25px">
|
213 |
<p class="description">
|
214 |
<?php printf('%s <a href="https://wordpress.org/plugins/wpfront-user-role-editor/" target="_blank">%s</a> %s'
|
215 |
. ' <a href="https://wpfront.com/user-role-editor-pro/?ref=3" target="_blank">%s</a> %s '
|
216 |
. ' <a href="https://wpfront.com/integrations/duplicator-integration/" target="_blank">%s</a>',
|
217 |
+
__('The User Role Editor Plugin', 'duplicator'),
|
218 |
+
__('Free', 'duplicator'),
|
219 |
+
__('or', 'duplicator'),
|
220 |
+
__('Professional', 'duplicator'),
|
221 |
+
__('must be installed to use', 'duplicator'),
|
222 |
+
__('this feature.', 'duplicator')
|
223 |
);
|
224 |
?>
|
225 |
</p>
|
231 |
|
232 |
<p class="submit" style="margin: 20px 0px 0xp 5px;">
|
233 |
<br/>
|
234 |
+
<input type="submit" name="submit" id="submit" class="button-primary" value="<?php _e("Save Settings", 'duplicator') ?>" style="display: inline-block;" />
|
235 |
</p>
|
236 |
|
237 |
</form>
|
views/tools/cleanup.php
CHANGED
@@ -24,7 +24,7 @@
|
|
24 |
switch ($_GET['action']) {
|
25 |
case 'installer' :
|
26 |
$action_response = __('Installer file cleanup ran!');
|
27 |
-
$css_hide_msg = 'div.
|
28 |
break;
|
29 |
case 'legacy':
|
30 |
DUP_Settings::LegacyClean();
|
24 |
switch ($_GET['action']) {
|
25 |
case 'installer' :
|
26 |
$action_response = __('Installer file cleanup ran!');
|
27 |
+
$css_hide_msg = 'div.error {display:none}';
|
28 |
break;
|
29 |
case 'legacy':
|
30 |
DUP_Settings::LegacyClean();
|
views/tools/controller.php
CHANGED
@@ -10,12 +10,13 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
10 |
$current_tab = isset($_REQUEST['tab']) ? esc_html($_REQUEST['tab']) : 'logging';
|
11 |
?>
|
12 |
<div class="wrap">
|
13 |
-
|
|
|
14 |
|
15 |
<h2 class="nav-tab-wrapper">
|
16 |
-
<a href="?page=duplicator-tools&tab=logging" class="nav-tab <?php echo ($current_tab == 'logging') ? 'nav-tab-active' : '' ?>"> <?php _e('Logging', '
|
17 |
-
<a href="?page=duplicator-tools&tab=diagnostics" class="nav-tab <?php echo ($current_tab == 'diagnostics') ? 'nav-tab-active' : '' ?>"> <?php _e('Diagnostics', '
|
18 |
-
<a href="?page=duplicator-tools&tab=cleanup" class="nav-tab <?php echo ($current_tab == 'cleanup') ? 'nav-tab-active' : '' ?>"> <?php _e('Cleanup', '
|
19 |
</h2>
|
20 |
|
21 |
<?php
|
10 |
$current_tab = isset($_REQUEST['tab']) ? esc_html($_REQUEST['tab']) : 'logging';
|
11 |
?>
|
12 |
<div class="wrap">
|
13 |
+
|
14 |
+
<?php duplicator_header(__("Tools", 'duplicator')) ?>
|
15 |
|
16 |
<h2 class="nav-tab-wrapper">
|
17 |
+
<a href="?page=duplicator-tools&tab=logging" class="nav-tab <?php echo ($current_tab == 'logging') ? 'nav-tab-active' : '' ?>"> <?php _e('Logging', 'duplicator'); ?></a>
|
18 |
+
<a href="?page=duplicator-tools&tab=diagnostics" class="nav-tab <?php echo ($current_tab == 'diagnostics') ? 'nav-tab-active' : '' ?>"> <?php _e('Diagnostics', 'duplicator'); ?></a>
|
19 |
+
<a href="?page=duplicator-tools&tab=cleanup" class="nav-tab <?php echo ($current_tab == 'cleanup') ? 'nav-tab-active' : '' ?>"> <?php _e('Cleanup', 'duplicator'); ?></a>
|
20 |
</h2>
|
21 |
|
22 |
<?php
|
views/tools/diagnostics.php
CHANGED
@@ -15,8 +15,8 @@
|
|
15 |
$action_response = null;
|
16 |
$dbvar_maxtime = DUP_Util::MysqlVariableValue('wait_timeout');
|
17 |
$dbvar_maxpacks = DUP_Util::MysqlVariableValue('max_allowed_packet');
|
18 |
-
$dbvar_maxtime = is_null($dbvar_maxtime) ? __("unknow", '
|
19 |
-
$dbvar_maxpacks = is_null($dbvar_maxpacks) ? __("unknow", '
|
20 |
|
21 |
$space = @disk_total_space(DUPLICATOR_WPROOTPATH);
|
22 |
$space_free = @disk_free_space(DUPLICATOR_WPROOTPATH);
|
@@ -36,12 +36,12 @@
|
|
36 |
if (isset($_POST['action'])) {
|
37 |
$action_result = DUP_Settings::DeleteWPOption($_POST['action']);
|
38 |
switch ($_POST['action']) {
|
39 |
-
case 'duplicator_settings' : $action_response = __('Plugin settings reset.', '
|
40 |
-
case 'duplicator_ui_view_state' : $action_response = __('View state settings reset.', '
|
41 |
-
case 'duplicator_package_active' : $action_response = __('Active package settings reset.', '
|
42 |
case 'clear_legacy_data':
|
43 |
DUP_Settings::LegacyClean();
|
44 |
-
$action_response = __('Legacy data removed.', '
|
45 |
break;
|
46 |
}
|
47 |
}
|
@@ -78,86 +78,86 @@
|
|
78 |
<div class="dup-box">
|
79 |
<div class="dup-box-title">
|
80 |
<i class="fa fa-tachometer"></i>
|
81 |
-
<?php _e("Server Settings", '
|
82 |
<div class="dup-box-arrow"></div>
|
83 |
</div>
|
84 |
<div class="dup-box-panel" id="dup-settings-diag-srv-panel" style="<?php echo $ui_css_srv_panel?>">
|
85 |
<table class="widefat" cellspacing="0">
|
86 |
<tr>
|
87 |
-
<td class='dup-settings-diag-header' colspan="2"><?php _e("General", '
|
88 |
</tr>
|
89 |
<tr>
|
90 |
-
<td><?php _e("Duplicator Version", '
|
91 |
<td><?php echo DUPLICATOR_VERSION ?></td>
|
92 |
</tr>
|
93 |
<tr>
|
94 |
-
<td><?php _e("Operating System", '
|
95 |
<td><?php echo PHP_OS ?></td>
|
96 |
</tr>
|
97 |
<tr>
|
98 |
-
<td><?php _e("Timezone", '
|
99 |
<td><?php echo date_default_timezone_get() ; ?> <small><i>This is a <a href='options-general.php'>WordPress setting</a></i></small></td>
|
100 |
</tr>
|
101 |
<tr>
|
102 |
-
<td><?php _e("Server Time", '
|
103 |
<td><?php echo date("Y-m-d H:i:s"); ?></td>
|
104 |
</tr>
|
105 |
<tr>
|
106 |
-
<td><?php _e("Web Server", '
|
107 |
<td><?php echo $_SERVER['SERVER_SOFTWARE'] ?></td>
|
108 |
</tr>
|
109 |
<tr>
|
110 |
-
<td><?php _e("APC Enabled", '
|
111 |
<td><?php echo DUP_Util::RunAPC() ? 'Yes' : 'No' ?></td>
|
112 |
</tr>
|
113 |
<tr>
|
114 |
-
<td><?php _e("Root Path", '
|
115 |
<td><?php echo DUPLICATOR_WPROOTPATH ?></td>
|
116 |
</tr>
|
117 |
<tr>
|
118 |
-
<td><?php _e("ABSPATH", '
|
119 |
<td><?php echo ABSPATH ?></td>
|
120 |
</tr>
|
121 |
<tr>
|
122 |
-
<td><?php _e("Plugins Path", '
|
123 |
<td><?php echo DUP_Util::SafePath(WP_PLUGIN_DIR) ?></td>
|
124 |
</tr>
|
125 |
<tr>
|
126 |
-
<td><?php _e("Loaded PHP INI", '
|
127 |
<td><?php echo php_ini_loaded_file() ;?></td>
|
128 |
</tr>
|
129 |
<tr>
|
130 |
-
<td><?php _e("Server IP", '
|
131 |
<td><?php echo $_SERVER['SERVER_ADDR'];?></td>
|
132 |
</tr>
|
133 |
<tr>
|
134 |
-
<td><?php _e("Client IP", '
|
135 |
<td><?php echo $client_ip_address;?></td>
|
136 |
</tr>
|
137 |
<tr>
|
138 |
<td class='dup-settings-diag-header' colspan="2">WordPress</td>
|
139 |
</tr>
|
140 |
<tr>
|
141 |
-
<td><?php _e("Version", '
|
142 |
<td><?php echo $wp_version ?></td>
|
143 |
</tr>
|
144 |
<tr>
|
145 |
-
<td><?php _e("Langugage", '
|
146 |
<td><?php echo get_bloginfo('language') ?></td>
|
147 |
</tr>
|
148 |
<tr>
|
149 |
-
<td><?php _e("Charset", '
|
150 |
<td><?php echo get_bloginfo('charset') ?></td>
|
151 |
</tr>
|
152 |
<tr>
|
153 |
-
<td><?php _e("Memory Limit ", '
|
154 |
-
<td><?php echo WP_MEMORY_LIMIT ?> (<?php _e("Max", '
|
155 |
</tr>
|
156 |
<tr>
|
157 |
<td class='dup-settings-diag-header' colspan="2">PHP</td>
|
158 |
</tr>
|
159 |
<tr>
|
160 |
-
<td><?php _e("Version", '
|
161 |
<td><?php echo phpversion() ?></td>
|
162 |
</tr>
|
163 |
<tr>
|
@@ -165,70 +165,70 @@
|
|
165 |
<td><?php echo PHP_SAPI ?></td>
|
166 |
</tr>
|
167 |
<tr>
|
168 |
-
<td><?php _e("User", '
|
169 |
<td><?php echo DUP_Util::GetCurrentUser(); ?></td>
|
170 |
</tr>
|
171 |
<tr>
|
172 |
-
<td><a href="http://php.net/manual/en/features.safe-mode.php" target="_blank"><?php _e("Safe Mode", '
|
173 |
<td>
|
174 |
<?php echo (((strtolower(@ini_get('safe_mode')) == 'on') || (strtolower(@ini_get('safe_mode')) == 'yes') ||
|
175 |
(strtolower(@ini_get('safe_mode')) == 'true') || (ini_get("safe_mode") == 1 )))
|
176 |
-
? __('On', '
|
177 |
?>
|
178 |
</td>
|
179 |
</tr>
|
180 |
<tr>
|
181 |
-
<td><a href="http://www.php.net/manual/en/ini.core.php#ini.memory-limit" target="_blank"><?php _e("Memory Limit", '
|
182 |
<td><?php echo @ini_get('memory_limit') ?></td>
|
183 |
</tr>
|
184 |
<tr>
|
185 |
-
<td><?php _e("Memory In Use", '
|
186 |
<td><?php echo size_format(@memory_get_usage(TRUE), 2) ?></td>
|
187 |
</tr>
|
188 |
<tr>
|
189 |
-
<td><a href="http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time" target="_blank"><?php _e("Max Execution Time", '
|
190 |
<td><?php echo @ini_get( 'max_execution_time' ); ?></td>
|
191 |
</tr>
|
192 |
<tr>
|
193 |
-
<td><a href="http://us3.php.net/shell_exec" target="_blank"><?php _e("Shell Exec", '
|
194 |
-
<td><?php echo (DUP_Util::IsShellExecAvailable()) ? _e("Is Supported", '
|
195 |
</tr>
|
196 |
<tr>
|
197 |
-
<td><?php _e("Shell Exec Zip", '
|
198 |
-
<td><?php echo (DUP_Util::GetZipPath() != null) ? _e("Is Supported", '
|
199 |
</tr>
|
200 |
<tr>
|
201 |
<td class='dup-settings-diag-header' colspan="2">MySQL</td>
|
202 |
</tr>
|
203 |
<tr>
|
204 |
-
<td><?php _e("Version", '
|
205 |
<td><?php echo $wpdb->db_version() ?></td>
|
206 |
</tr>
|
207 |
<tr>
|
208 |
-
<td><?php _e("Charset", '
|
209 |
<td><?php echo DB_CHARSET ?></td>
|
210 |
</tr>
|
211 |
<tr>
|
212 |
-
<td><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_wait_timeout" target="_blank"><?php _e("Wait Timeout", '
|
213 |
<td><?php echo $dbvar_maxtime ?></td>
|
214 |
</tr>
|
215 |
<tr>
|
216 |
-
<td style="white-space:nowrap"><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_allowed_packet" target="_blank"><?php _e("Max Allowed Packets", '
|
217 |
<td><?php echo $dbvar_maxpacks ?></td>
|
218 |
</tr>
|
219 |
<tr>
|
220 |
-
<td><a href="http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html" target="_blank"><?php _e("msyqldump Path", '
|
221 |
<td><?php echo $mysqlDumpSupport ?></td>
|
222 |
</tr>
|
223 |
<tr>
|
224 |
-
<td class='dup-settings-diag-header' colspan="2"><?php _e("Server Disk", '
|
225 |
</tr>
|
226 |
<tr valign="top">
|
227 |
<td><?php _e('Free space', 'hyper-cache'); ?></td>
|
228 |
<td><?php echo $perc;?>% -- <?php echo DUP_Util::ByteSize($space_free);?> from <?php echo DUP_Util::ByteSize($space);?><br/>
|
229 |
<small>
|
230 |
-
<?php _e("Note: This value is the physical servers hard-drive allocation.", '
|
231 |
-
<?php _e("On shared hosts check your control panel for the 'TRUE' disk space quota value.", '
|
232 |
</small>
|
233 |
</td>
|
234 |
</tr>
|
@@ -244,12 +244,12 @@
|
|
244 |
<div class="dup-box">
|
245 |
<div class="dup-box-title">
|
246 |
<i class="fa fa-th-list"></i>
|
247 |
-
<?php _e("Stored Data", '
|
248 |
<div class="dup-box-arrow"></div>
|
249 |
</div>
|
250 |
<div class="dup-box-panel" id="dup-settings-diag-opts-panel" style="<?php echo $ui_css_opts_panel?>">
|
251 |
<div style="padding:0px 20px 0px 25px">
|
252 |
-
<h3 class="title" style="margin-left:-15px"><?php _e("Options Values", '
|
253 |
|
254 |
<table class="widefat" cellspacing="0">
|
255 |
<tr>
|
@@ -282,7 +282,7 @@
|
|
282 |
<div class="dup-box">
|
283 |
<div class="dup-box-title">
|
284 |
<i class="fa fa-info-circle"></i>
|
285 |
-
<?php _e("PHP Information", '
|
286 |
<div class="dup-box-arrow"></div>
|
287 |
</div>
|
288 |
<div class="dup-box-panel" style="display:none">
|
15 |
$action_response = null;
|
16 |
$dbvar_maxtime = DUP_Util::MysqlVariableValue('wait_timeout');
|
17 |
$dbvar_maxpacks = DUP_Util::MysqlVariableValue('max_allowed_packet');
|
18 |
+
$dbvar_maxtime = is_null($dbvar_maxtime) ? __("unknow", 'duplicator') : $dbvar_maxtime;
|
19 |
+
$dbvar_maxpacks = is_null($dbvar_maxpacks) ? __("unknow", 'duplicator') : $dbvar_maxpacks;
|
20 |
|
21 |
$space = @disk_total_space(DUPLICATOR_WPROOTPATH);
|
22 |
$space_free = @disk_free_space(DUPLICATOR_WPROOTPATH);
|
36 |
if (isset($_POST['action'])) {
|
37 |
$action_result = DUP_Settings::DeleteWPOption($_POST['action']);
|
38 |
switch ($_POST['action']) {
|
39 |
+
case 'duplicator_settings' : $action_response = __('Plugin settings reset.', 'duplicator'); break;
|
40 |
+
case 'duplicator_ui_view_state' : $action_response = __('View state settings reset.', 'duplicator'); break;
|
41 |
+
case 'duplicator_package_active' : $action_response = __('Active package settings reset.', 'duplicator'); break;
|
42 |
case 'clear_legacy_data':
|
43 |
DUP_Settings::LegacyClean();
|
44 |
+
$action_response = __('Legacy data removed.', 'duplicator');
|
45 |
break;
|
46 |
}
|
47 |
}
|
78 |
<div class="dup-box">
|
79 |
<div class="dup-box-title">
|
80 |
<i class="fa fa-tachometer"></i>
|
81 |
+
<?php _e("Server Settings", 'duplicator') ?>
|
82 |
<div class="dup-box-arrow"></div>
|
83 |
</div>
|
84 |
<div class="dup-box-panel" id="dup-settings-diag-srv-panel" style="<?php echo $ui_css_srv_panel?>">
|
85 |
<table class="widefat" cellspacing="0">
|
86 |
<tr>
|
87 |
+
<td class='dup-settings-diag-header' colspan="2"><?php _e("General", 'duplicator'); ?></td>
|
88 |
</tr>
|
89 |
<tr>
|
90 |
+
<td><?php _e("Duplicator Version", 'duplicator'); ?></td>
|
91 |
<td><?php echo DUPLICATOR_VERSION ?></td>
|
92 |
</tr>
|
93 |
<tr>
|
94 |
+
<td><?php _e("Operating System", 'duplicator'); ?></td>
|
95 |
<td><?php echo PHP_OS ?></td>
|
96 |
</tr>
|
97 |
<tr>
|
98 |
+
<td><?php _e("Timezone", 'duplicator'); ?></td>
|
99 |
<td><?php echo date_default_timezone_get() ; ?> <small><i>This is a <a href='options-general.php'>WordPress setting</a></i></small></td>
|
100 |
</tr>
|
101 |
<tr>
|
102 |
+
<td><?php _e("Server Time", 'duplicator'); ?></td>
|
103 |
<td><?php echo date("Y-m-d H:i:s"); ?></td>
|
104 |
</tr>
|
105 |
<tr>
|
106 |
+
<td><?php _e("Web Server", 'duplicator'); ?></td>
|
107 |
<td><?php echo $_SERVER['SERVER_SOFTWARE'] ?></td>
|
108 |
</tr>
|
109 |
<tr>
|
110 |
+
<td><?php _e("APC Enabled", 'duplicator'); ?></td>
|
111 |
<td><?php echo DUP_Util::RunAPC() ? 'Yes' : 'No' ?></td>
|
112 |
</tr>
|
113 |
<tr>
|
114 |
+
<td><?php _e("Root Path", 'duplicator'); ?></td>
|
115 |
<td><?php echo DUPLICATOR_WPROOTPATH ?></td>
|
116 |
</tr>
|
117 |
<tr>
|
118 |
+
<td><?php _e("ABSPATH", 'duplicator'); ?></td>
|
119 |
<td><?php echo ABSPATH ?></td>
|
120 |
</tr>
|
121 |
<tr>
|
122 |
+
<td><?php _e("Plugins Path", 'duplicator'); ?></td>
|
123 |
<td><?php echo DUP_Util::SafePath(WP_PLUGIN_DIR) ?></td>
|
124 |
</tr>
|
125 |
<tr>
|
126 |
+
<td><?php _e("Loaded PHP INI", 'duplicator'); ?></td>
|
127 |
<td><?php echo php_ini_loaded_file() ;?></td>
|
128 |
</tr>
|
129 |
<tr>
|
130 |
+
<td><?php _e("Server IP", 'duplicator'); ?></td>
|
131 |
<td><?php echo $_SERVER['SERVER_ADDR'];?></td>
|
132 |
</tr>
|
133 |
<tr>
|
134 |
+
<td><?php _e("Client IP", 'duplicator'); ?></td>
|
135 |
<td><?php echo $client_ip_address;?></td>
|
136 |
</tr>
|
137 |
<tr>
|
138 |
<td class='dup-settings-diag-header' colspan="2">WordPress</td>
|
139 |
</tr>
|
140 |
<tr>
|
141 |
+
<td><?php _e("Version", 'duplicator'); ?></td>
|
142 |
<td><?php echo $wp_version ?></td>
|
143 |
</tr>
|
144 |
<tr>
|
145 |
+
<td><?php _e("Langugage", 'duplicator'); ?></td>
|
146 |
<td><?php echo get_bloginfo('language') ?></td>
|
147 |
</tr>
|
148 |
<tr>
|
149 |
+
<td><?php _e("Charset", 'duplicator'); ?></td>
|
150 |
<td><?php echo get_bloginfo('charset') ?></td>
|
151 |
</tr>
|
152 |
<tr>
|
153 |
+
<td><?php _e("Memory Limit ", 'duplicator'); ?></td>
|
154 |
+
<td><?php echo WP_MEMORY_LIMIT ?> (<?php _e("Max", 'duplicator'); echo ' ' . WP_MAX_MEMORY_LIMIT; ?>)</td>
|
155 |
</tr>
|
156 |
<tr>
|
157 |
<td class='dup-settings-diag-header' colspan="2">PHP</td>
|
158 |
</tr>
|
159 |
<tr>
|
160 |
+
<td><?php _e("Version", 'duplicator'); ?></td>
|
161 |
<td><?php echo phpversion() ?></td>
|
162 |
</tr>
|
163 |
<tr>
|
165 |
<td><?php echo PHP_SAPI ?></td>
|
166 |
</tr>
|
167 |
<tr>
|
168 |
+
<td><?php _e("User", 'duplicator'); ?></td>
|
169 |
<td><?php echo DUP_Util::GetCurrentUser(); ?></td>
|
170 |
</tr>
|
171 |
<tr>
|
172 |
+
<td><a href="http://php.net/manual/en/features.safe-mode.php" target="_blank"><?php _e("Safe Mode", 'duplicator'); ?></a></td>
|
173 |
<td>
|
174 |
<?php echo (((strtolower(@ini_get('safe_mode')) == 'on') || (strtolower(@ini_get('safe_mode')) == 'yes') ||
|
175 |
(strtolower(@ini_get('safe_mode')) == 'true') || (ini_get("safe_mode") == 1 )))
|
176 |
+
? __('On', 'duplicator') : __('Off', 'duplicator');
|
177 |
?>
|
178 |
</td>
|
179 |
</tr>
|
180 |
<tr>
|
181 |
+
<td><a href="http://www.php.net/manual/en/ini.core.php#ini.memory-limit" target="_blank"><?php _e("Memory Limit", 'duplicator'); ?></a></td>
|
182 |
<td><?php echo @ini_get('memory_limit') ?></td>
|
183 |
</tr>
|
184 |
<tr>
|
185 |
+
<td><?php _e("Memory In Use", 'duplicator'); ?></td>
|
186 |
<td><?php echo size_format(@memory_get_usage(TRUE), 2) ?></td>
|
187 |
</tr>
|
188 |
<tr>
|
189 |
+
<td><a href="http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time" target="_blank"><?php _e("Max Execution Time", 'duplicator'); ?></a></td>
|
190 |
<td><?php echo @ini_get( 'max_execution_time' ); ?></td>
|
191 |
</tr>
|
192 |
<tr>
|
193 |
+
<td><a href="http://us3.php.net/shell_exec" target="_blank"><?php _e("Shell Exec", 'duplicator'); ?></a></td>
|
194 |
+
<td><?php echo (DUP_Util::IsShellExecAvailable()) ? _e("Is Supported", 'duplicator') : _e("Not Supported", 'duplicator'); ?></td>
|
195 |
</tr>
|
196 |
<tr>
|
197 |
+
<td><?php _e("Shell Exec Zip", 'duplicator'); ?></td>
|
198 |
+
<td><?php echo (DUP_Util::GetZipPath() != null) ? _e("Is Supported", 'duplicator') : _e("Not Supported", 'duplicator'); ?></td>
|
199 |
</tr>
|
200 |
<tr>
|
201 |
<td class='dup-settings-diag-header' colspan="2">MySQL</td>
|
202 |
</tr>
|
203 |
<tr>
|
204 |
+
<td><?php _e("Version", 'duplicator'); ?></td>
|
205 |
<td><?php echo $wpdb->db_version() ?></td>
|
206 |
</tr>
|
207 |
<tr>
|
208 |
+
<td><?php _e("Charset", 'duplicator'); ?></td>
|
209 |
<td><?php echo DB_CHARSET ?></td>
|
210 |
</tr>
|
211 |
<tr>
|
212 |
+
<td><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_wait_timeout" target="_blank"><?php _e("Wait Timeout", 'duplicator'); ?></a></td>
|
213 |
<td><?php echo $dbvar_maxtime ?></td>
|
214 |
</tr>
|
215 |
<tr>
|
216 |
+
<td style="white-space:nowrap"><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_allowed_packet" target="_blank"><?php _e("Max Allowed Packets", 'duplicator'); ?></a></td>
|
217 |
<td><?php echo $dbvar_maxpacks ?></td>
|
218 |
</tr>
|
219 |
<tr>
|
220 |
+
<td><a href="http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html" target="_blank"><?php _e("msyqldump Path", 'duplicator'); ?></a></td>
|
221 |
<td><?php echo $mysqlDumpSupport ?></td>
|
222 |
</tr>
|
223 |
<tr>
|
224 |
+
<td class='dup-settings-diag-header' colspan="2"><?php _e("Server Disk", 'duplicator'); ?></td>
|
225 |
</tr>
|
226 |
<tr valign="top">
|
227 |
<td><?php _e('Free space', 'hyper-cache'); ?></td>
|
228 |
<td><?php echo $perc;?>% -- <?php echo DUP_Util::ByteSize($space_free);?> from <?php echo DUP_Util::ByteSize($space);?><br/>
|
229 |
<small>
|
230 |
+
<?php _e("Note: This value is the physical servers hard-drive allocation.", 'duplicator'); ?> <br/>
|
231 |
+
<?php _e("On shared hosts check your control panel for the 'TRUE' disk space quota value.", 'duplicator'); ?>
|
232 |
</small>
|
233 |
</td>
|
234 |
</tr>
|
244 |
<div class="dup-box">
|
245 |
<div class="dup-box-title">
|
246 |
<i class="fa fa-th-list"></i>
|
247 |
+
<?php _e("Stored Data", 'duplicator'); ?>
|
248 |
<div class="dup-box-arrow"></div>
|
249 |
</div>
|
250 |
<div class="dup-box-panel" id="dup-settings-diag-opts-panel" style="<?php echo $ui_css_opts_panel?>">
|
251 |
<div style="padding:0px 20px 0px 25px">
|
252 |
+
<h3 class="title" style="margin-left:-15px"><?php _e("Options Values", 'duplicator') ?> </h3>
|
253 |
|
254 |
<table class="widefat" cellspacing="0">
|
255 |
<tr>
|
282 |
<div class="dup-box">
|
283 |
<div class="dup-box-title">
|
284 |
<i class="fa fa-info-circle"></i>
|
285 |
+
<?php _e("PHP Information", 'duplicator'); ?>
|
286 |
<div class="dup-box-arrow"></div>
|
287 |
</div>
|
288 |
<div class="dup-box-panel" style="display:none">
|
views/tools/logging.php
CHANGED
@@ -138,14 +138,14 @@ jQuery(document).ready(function($) {
|
|
138 |
<input type="hidden" id="auto" name="auto" value="<?php echo ($auto) ? 1 : 0 ?>" />
|
139 |
<?php if (! $logfound) : ?>
|
140 |
<div style="padding:20px">
|
141 |
-
<h2><?php _e("Log file not found or unreadable", '
|
142 |
|
143 |
-
<?php _e("Try to create a package, since no log files were found in the snapshots directory with the extension *.log", '
|
144 |
|
145 |
-
<?php _e("Reasons for log file not showing", '
|
146 |
-
- <?php _e("The web server does not support returning .log file extentions", '
|
147 |
-
- <?php _e("The snapshots directory does not have the correct permissions to write files. Try setting the permissions to 755", '
|
148 |
-
- <?php _e("The process that PHP runs under does not have enough permissions to create files. Please contact your hosting provider for more details", '
|
149 |
</div>
|
150 |
|
151 |
<?php else: ?>
|
@@ -154,25 +154,25 @@ jQuery(document).ready(function($) {
|
|
154 |
<tr>
|
155 |
<td id="dup-log-panel-left">
|
156 |
<div class="name"><i class='fa fa-list-alt'></i> <?php echo basename($logurl); ?></div>
|
157 |
-
<div class="opts"><a href="javascript:void(0)" id="dup-options"><?php _e("Options", '
|
158 |
<br style="clear:both" />
|
159 |
<iframe id="dup-log-content" src="<?php echo $logurl ?>" ></iframe>
|
160 |
</td>
|
161 |
<td id="dup-log-panel-right">
|
162 |
-
<h2><?php _e("Options", '
|
163 |
<div class="dup-opts-items">
|
164 |
-
<input type="button" class="button" id="dup-refresh" value="<?php _e("Refresh", '
|
165 |
<div style="display:inline-block; margin-top:5px">
|
166 |
<input type='checkbox' id="dup-auto-refresh" style="margin-top:1px" />
|
167 |
<label id="dup-auto-refresh-lbl" for="dup-auto-refresh">
|
168 |
|
169 |
-
<?php _e("Auto Refresh", '
|
170 |
[<div id="dup-refresh-count"></div>]
|
171 |
</label>
|
172 |
</div>
|
173 |
</div>
|
174 |
|
175 |
-
<b><?php _e("Last 20 Logs", '
|
176 |
|
177 |
<div class="dup-log-file-list">
|
178 |
<?php
|
138 |
<input type="hidden" id="auto" name="auto" value="<?php echo ($auto) ? 1 : 0 ?>" />
|
139 |
<?php if (! $logfound) : ?>
|
140 |
<div style="padding:20px">
|
141 |
+
<h2><?php _e("Log file not found or unreadable", 'duplicator') ?>.</h2>
|
142 |
|
143 |
+
<?php _e("Try to create a package, since no log files were found in the snapshots directory with the extension *.log", 'duplicator') ?>.<br/><br/>
|
144 |
|
145 |
+
<?php _e("Reasons for log file not showing", 'duplicator') ?>: <br/>
|
146 |
+
- <?php _e("The web server does not support returning .log file extentions", 'duplicator') ?>. <br/>
|
147 |
+
- <?php _e("The snapshots directory does not have the correct permissions to write files. Try setting the permissions to 755", 'duplicator') ?>. <br/>
|
148 |
+
- <?php _e("The process that PHP runs under does not have enough permissions to create files. Please contact your hosting provider for more details", 'duplicator') ?>. <br/>
|
149 |
</div>
|
150 |
|
151 |
<?php else: ?>
|
154 |
<tr>
|
155 |
<td id="dup-log-panel-left">
|
156 |
<div class="name"><i class='fa fa-list-alt'></i> <?php echo basename($logurl); ?></div>
|
157 |
+
<div class="opts"><a href="javascript:void(0)" id="dup-options"><?php _e("Options", 'duplicator') ?> <i class="fa fa-angle-double-right"></i></a> </div>
|
158 |
<br style="clear:both" />
|
159 |
<iframe id="dup-log-content" src="<?php echo $logurl ?>" ></iframe>
|
160 |
</td>
|
161 |
<td id="dup-log-panel-right">
|
162 |
+
<h2><?php _e("Options", 'duplicator') ?> </h2>
|
163 |
<div class="dup-opts-items">
|
164 |
+
<input type="button" class="button" id="dup-refresh" value="<?php _e("Refresh", 'duplicator') ?>" />
|
165 |
<div style="display:inline-block; margin-top:5px">
|
166 |
<input type='checkbox' id="dup-auto-refresh" style="margin-top:1px" />
|
167 |
<label id="dup-auto-refresh-lbl" for="dup-auto-refresh">
|
168 |
|
169 |
+
<?php _e("Auto Refresh", 'duplicator') ?>
|
170 |
[<div id="dup-refresh-count"></div>]
|
171 |
</label>
|
172 |
</div>
|
173 |
</div>
|
174 |
|
175 |
+
<b><?php _e("Last 20 Logs", 'duplicator') ?> </b><br/>
|
176 |
|
177 |
<div class="dup-log-file-list">
|
178 |
<?php
|