Version Description
Download this release
Release Info
| Developer | WebFactory |
| Plugin | |
| Version | 1.5 |
| Comparing to | |
| See all releases | |
Code changes from version 1.3.0 to 1.5
- css/sweetalert2.min.css +7 -0
- css/wp-htaccess-editor.css +156 -0
- img/loading-icon.png +0 -0
- index.php +0 -4
- js/sweetalert2.min.js +7 -0
- js/wp-htaccess-editor-pointers.js +32 -0
- js/wp-htaccess-editor.js +197 -0
- lang/cs_CZ.mo +0 -0
- lang/cs_CZ.po +0 -381
- lang/default.po +0 -398
- lang/es_ES.mo +0 -0
- lang/es_ES.po +0 -417
- lang/index.php +0 -4
- lib/index.php +0 -4
- lib/lib.ad.php +0 -21
- lib/lib.functions.php +0 -236
- lib/lib.pages.php +0 -68
- lib/lib.wp-files.php +0 -20
- license.txt +280 -0
- pages/index.php +0 -4
- pages/wphe-backup.php +0 -143
- pages/wphe-dashboard.php +0 -179
- readme.txt +66 -31
- screenshot-1.png +0 -0
- screenshot-2.png +0 -0
- screenshot-3.png +0 -0
- style/img/flag-cz.jpg +0 -0
- style/img/flag-en.jpg +0 -0
- style/img/flag-es.gif +0 -0
- style/img/wphe-mini.png +0 -0
- style/img/wphe.png +0 -0
- style/index.php +0 -4
- style/wphe-style.css +0 -5
- wp-htaccess-editor.php +802 -78
css/sweetalert2.min.css
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*
|
| 2 |
+
SweetAlert2
|
| 3 |
+
https://github.com/sweetalert2/sweetalert2
|
| 4 |
+
MIT License
|
| 5 |
+
*/
|
| 6 |
+
|
| 7 |
+
@-webkit-keyframes swal2-show{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes swal2-show{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.875em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.875em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}100%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}100%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}50%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}80%{margin-top:-.375em;-webkit-transform:scale(1.15);transform:scale(1.15)}100%{margin-top:0;-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}50%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}80%{margin-top:-.375em;-webkit-transform:scale(1.15);transform:scale(1.15)}100%{margin-top:0;-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}body.swal2-toast-shown.swal2-has-input>.swal2-container>.swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-shown.swal2-has-input>.swal2-container>.swal2-toast .swal2-actions{flex:1;align-self:stretch;justify-content:flex-end;height:2.2em}body.swal2-toast-shown.swal2-has-input>.swal2-container>.swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-shown.swal2-has-input>.swal2-container>.swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-shown.swal2-has-input>.swal2-container>.swal2-toast .swal2-validationerror{font-size:1em}body.swal2-toast-shown>.swal2-container{position:fixed;background-color:transparent}body.swal2-toast-shown>.swal2-container.swal2-shown{background-color:transparent}body.swal2-toast-shown>.swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-toast-shown>.swal2-container.swal2-top-end,body.swal2-toast-shown>.swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown>.swal2-container.swal2-top-left,body.swal2-toast-shown>.swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown>.swal2-container.swal2-center-left,body.swal2-toast-shown>.swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-toast-shown>.swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}body.swal2-toast-shown>.swal2-container.swal2-center-end,body.swal2-toast-shown>.swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-toast-shown>.swal2-container.swal2-bottom-left,body.swal2-toast-shown>.swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown>.swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-toast-shown>.swal2-container.swal2-bottom-end,body.swal2-toast-shown>.swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}.swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;box-shadow:0 0 .625em #d9d9d9;overflow-y:hidden}.swal2-popup.swal2-toast .swal2-header{flex-direction:row}.swal2-popup.swal2-toast .swal2-title{justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-close{position:initial}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon-text{font-size:2em;font-weight:700;line-height:1em}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{height:auto;margin:0 .3125em}.swal2-popup.swal2-toast .swal2-styled{margin:0 .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 .0625em #fff,0 0 0 .125em rgba(50,100,150,.4)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:2em;height:2.8125em;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.25em;left:-.9375em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:2em 2em;transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;-webkit-transform-origin:0 2em;transform-origin:0 2em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:showSweetToast .5s;animation:showSweetToast .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:hideSweetToast .2s forwards;animation:hideSweetToast .2s forwards}.swal2-popup.swal2-toast .swal2-animate-success-icon .swal2-success-line-tip{-webkit-animation:animate-toast-success-tip .75s;animation:animate-toast-success-tip .75s}.swal2-popup.swal2-toast .swal2-animate-success-icon .swal2-success-line-long{-webkit-animation:animate-toast-success-long .75s;animation:animate-toast-success-long .75s}@-webkit-keyframes showSweetToast{0%{-webkit-transform:translateY(-.625em) rotateZ(2deg);transform:translateY(-.625em) rotateZ(2deg);opacity:0}33%{-webkit-transform:translateY(0) rotateZ(-2deg);transform:translateY(0) rotateZ(-2deg);opacity:.5}66%{-webkit-transform:translateY(.3125em) rotateZ(2deg);transform:translateY(.3125em) rotateZ(2deg);opacity:.7}100%{-webkit-transform:translateY(0) rotateZ(0);transform:translateY(0) rotateZ(0);opacity:1}}@keyframes showSweetToast{0%{-webkit-transform:translateY(-.625em) rotateZ(2deg);transform:translateY(-.625em) rotateZ(2deg);opacity:0}33%{-webkit-transform:translateY(0) rotateZ(-2deg);transform:translateY(0) rotateZ(-2deg);opacity:.5}66%{-webkit-transform:translateY(.3125em) rotateZ(2deg);transform:translateY(.3125em) rotateZ(2deg);opacity:.7}100%{-webkit-transform:translateY(0) rotateZ(0);transform:translateY(0) rotateZ(0);opacity:1}}@-webkit-keyframes hideSweetToast{0%{opacity:1}33%{opacity:.5}100%{-webkit-transform:rotateZ(1deg);transform:rotateZ(1deg);opacity:0}}@keyframes hideSweetToast{0%{opacity:1}33%{opacity:.5}100%{-webkit-transform:rotateZ(1deg);transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes animate-toast-success-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes animate-toast-success-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes animate-toast-success-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes animate-toast-success-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-shown{top:auto;right:auto;bottom:auto;left:auto;background-color:transparent}body.swal2-no-backdrop .swal2-shown>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-shown.swal2-top{top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-no-backdrop .swal2-shown.swal2-top-left,body.swal2-no-backdrop .swal2-shown.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-shown.swal2-top-end,body.swal2-no-backdrop .swal2-shown.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-shown.swal2-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-shown.swal2-center-left,body.swal2-no-backdrop .swal2-shown.swal2-center-start{top:50%;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-no-backdrop .swal2-shown.swal2-center-end,body.swal2-no-backdrop .swal2-shown.swal2-center-right{top:50%;right:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-no-backdrop .swal2-shown.swal2-bottom{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-no-backdrop .swal2-shown.swal2-bottom-left,body.swal2-no-backdrop .swal2-shown.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-shown.swal2-bottom-end,body.swal2-no-backdrop .swal2-shown.swal2-bottom-right{right:0;bottom:0}.swal2-container{display:flex;position:fixed;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:10px;background-color:transparent;z-index:1060;overflow-x:hidden;-webkit-overflow-scrolling:touch}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-container.swal2-fade{transition:background-color .1s}.swal2-container.swal2-shown{background-color:rgba(0,0,0,.4)}.swal2-popup{display:none;position:relative;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border-radius:.3125em;background:#fff;font-family:inherit;font-size:1rem;box-sizing:border-box}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-popup .swal2-header{display:flex;flex-direction:column;align-items:center}.swal2-popup .swal2-title{display:block;position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-popup .swal2-actions{align-items:center;justify-content:center;margin:1.25em auto 0}.swal2-popup .swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-popup .swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-popup .swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-popup .swal2-actions.swal2-loading .swal2-styled.swal2-confirm{width:2.5em;height:2.5em;margin:.46875em;padding:0;border:.25em solid transparent;border-radius:100%;border-color:transparent;background-color:transparent!important;color:transparent;cursor:default;box-sizing:border-box;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-popup .swal2-actions.swal2-loading .swal2-styled.swal2-cancel{margin-right:30px;margin-left:30px}.swal2-popup .swal2-actions.swal2-loading :not(.swal2-styled).swal2-confirm::after{display:inline-block;width:15px;height:15px;margin-left:5px;border:3px solid #999;border-radius:50%;border-right-color:transparent;box-shadow:1px 1px 1px #fff;content:'';-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal}.swal2-popup .swal2-styled{margin:0 .3125em;padding:.625em 2em;font-weight:500;box-shadow:none}.swal2-popup .swal2-styled:not([disabled]){cursor:pointer}.swal2-popup .swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#3085d6;color:#fff;font-size:1.0625em}.swal2-popup .swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#aaa;color:#fff;font-size:1.0625em}.swal2-popup .swal2-styled:focus{outline:0;box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(50,100,150,.4)}.swal2-popup .swal2-styled::-moz-focus-inner{border:0}.swal2-popup .swal2-footer{justify-content:center;margin:1.25em 0 0;padding-top:1em;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-popup .swal2-image{max-width:100%;margin:1.25em auto}.swal2-popup .swal2-close{position:absolute;top:0;right:0;justify-content:center;width:1.2em;height:1.2em;padding:0;transition:color .1s ease-out;border:none;border-radius:0;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer;overflow:hidden}.swal2-popup .swal2-close:hover{-webkit-transform:none;transform:none;color:#f27474}.swal2-popup>.swal2-checkbox,.swal2-popup>.swal2-file,.swal2-popup>.swal2-input,.swal2-popup>.swal2-radio,.swal2-popup>.swal2-select,.swal2-popup>.swal2-textarea{display:none}.swal2-popup .swal2-content{justify-content:center;margin:0;padding:0;color:#545454;font-size:1.125em;font-weight:300;line-height:normal;word-wrap:break-word}.swal2-popup #swal2-content{text-align:center}.swal2-popup .swal2-checkbox,.swal2-popup .swal2-file,.swal2-popup .swal2-input,.swal2-popup .swal2-radio,.swal2-popup .swal2-select,.swal2-popup .swal2-textarea{margin:1em auto}.swal2-popup .swal2-file,.swal2-popup .swal2-input,.swal2-popup .swal2-textarea{width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;font-size:1.125em;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);box-sizing:border-box}.swal2-popup .swal2-file.swal2-inputerror,.swal2-popup .swal2-input.swal2-inputerror,.swal2-popup .swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-popup .swal2-file:focus,.swal2-popup .swal2-input:focus,.swal2-popup .swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 3px #c4e6f5}.swal2-popup .swal2-file::-webkit-input-placeholder,.swal2-popup .swal2-input::-webkit-input-placeholder,.swal2-popup .swal2-textarea::-webkit-input-placeholder{color:#ccc}.swal2-popup .swal2-file:-ms-input-placeholder,.swal2-popup .swal2-input:-ms-input-placeholder,.swal2-popup .swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-popup .swal2-file::-ms-input-placeholder,.swal2-popup .swal2-input::-ms-input-placeholder,.swal2-popup .swal2-textarea::-ms-input-placeholder{color:#ccc}.swal2-popup .swal2-file::placeholder,.swal2-popup .swal2-input::placeholder,.swal2-popup .swal2-textarea::placeholder{color:#ccc}.swal2-popup .swal2-range input{width:80%}.swal2-popup .swal2-range output{width:20%;font-weight:600;text-align:center}.swal2-popup .swal2-range input,.swal2-popup .swal2-range output{height:2.625em;margin:1em auto;padding:0;font-size:1.125em;line-height:2.625em}.swal2-popup .swal2-input{height:2.625em;padding:.75em}.swal2-popup .swal2-input[type=number]{max-width:10em}.swal2-popup .swal2-file{font-size:1.125em}.swal2-popup .swal2-textarea{height:6.75em;padding:.75em}.swal2-popup .swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;color:#545454;font-size:1.125em}.swal2-popup .swal2-checkbox,.swal2-popup .swal2-radio{align-items:center;justify-content:center}.swal2-popup .swal2-checkbox label,.swal2-popup .swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-popup .swal2-checkbox input,.swal2-popup .swal2-radio input{margin:0 .4em}.swal2-popup .swal2-validationerror{display:none;align-items:center;justify-content:center;padding:.625em;background:#f0f0f0;color:#666;font-size:1em;font-weight:300;overflow:hidden}.swal2-popup .swal2-validationerror::before{display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center;content:'!';zoom:normal}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-moz-document url-prefix(){.swal2-close:focus{outline:2px solid rgba(50,100,150,.4)}}.swal2-icon{position:relative;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;line-height:5em;cursor:default;box-sizing:content-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;zoom:normal}.swal2-icon-text{font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:3.75em 3.75em;transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 3.75em;transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;top:-.25em;left:-.25em;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%;z-index:2;box-sizing:content-box}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;top:.5em;left:1.625em;width:.4375em;height:5.625em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);z-index:1}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;height:.3125em;border-radius:.125em;background-color:#a5dc86;z-index:2}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.875em;width:1.5625em;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-progresssteps{align-items:center;margin:0 0 1.25em;padding:0;font-weight:600}.swal2-progresssteps li{display:inline-block;position:relative}.swal2-progresssteps .swal2-progresscircle{width:2em;height:2em;border-radius:2em;background:#3085d6;color:#fff;line-height:2em;text-align:center;z-index:20}.swal2-progresssteps .swal2-progresscircle:first-child{margin-left:0}.swal2-progresssteps .swal2-progresscircle:last-child{margin-right:0}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep{background:#3085d6}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progresscircle{background:#add8e6}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progressline{background:#add8e6}.swal2-progresssteps .swal2-progressline{width:2.5em;height:.4em;margin:0 -1px;background:#3085d6;z-index:10}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-show.swal2-noanimation{-webkit-animation:none;animation:none}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-hide.swal2-noanimation{-webkit-animation:none;animation:none}[dir=rtl] .swal2-close{right:auto;left:0}.swal2-animate-success-icon .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-animate-success-icon .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-animate-success-icon .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-animate-error-icon{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-animate-error-icon .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}@-webkit-keyframes swal2-rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}
|
css/wp-htaccess-editor.css
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
* WP Htaccess Editor
|
| 3 |
+
* (c) WebFactory Ltd, 2018-2019
|
| 4 |
+
*/
|
| 5 |
+
|
| 6 |
+
.tools_page_wp-htaccess-editor .card {
|
| 7 |
+
padding: 1em 2em 1em 2em;
|
| 8 |
+
width: 520px;
|
| 9 |
+
}
|
| 10 |
+
|
| 11 |
+
.tools_page_wp-htaccess-editor .toggle-card {
|
| 12 |
+
position: absolute;
|
| 13 |
+
right: 2em;
|
| 14 |
+
top: 2.2em;
|
| 15 |
+
text-decoration: none;
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
.tools_page_wp-htaccess-editor .card.collapsed p,
|
| 19 |
+
.tools_page_wp-htaccess-editor .card.collapsed b,
|
| 20 |
+
.tools_page_wp-htaccess-editor .card.collapsed ul {
|
| 21 |
+
display: none;
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
.tools_page_wp-htaccess-editor .textcenter {
|
| 25 |
+
text-align: center;
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
.tools_page_wp-htaccess-editor .button.disabled {
|
| 29 |
+
pointer-events: none;
|
| 30 |
+
cursor: not-allowed;
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
.tools_page_wp-htaccess-editor.wp-core-ui .button,
|
| 34 |
+
.tools_page_wp-htaccess-editor.wp-core-ui .button-primary,
|
| 35 |
+
.tools_page_wp-htaccess-editor.wp-core-ui .button-secondary {
|
| 36 |
+
border-radius: 0;
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
.tools_page_wp-htaccess-editor .button {
|
| 40 |
+
box-shadow: none;
|
| 41 |
+
text-shadow: none;
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
.tools_page_wp-htaccess-editor .plain-list {
|
| 45 |
+
margin-top: 5px;
|
| 46 |
+
list-style-type: circle;
|
| 47 |
+
list-style-position: inside;
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
.tools_page_wp-htaccess-editor .plain-list li {
|
| 51 |
+
text-indent: -18px;
|
| 52 |
+
padding-left: 23px;
|
| 53 |
+
line-height: 23px;
|
| 54 |
+
margin: 0;
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
#enable-editor-notice {
|
| 58 |
+
background-color: #dd3036e0;
|
| 59 |
+
width: 574px;
|
| 60 |
+
min-height: 300px;
|
| 61 |
+
height: calc(100vh - 400px);
|
| 62 |
+
position: absolute;
|
| 63 |
+
z-index: 10;
|
| 64 |
+
padding: 30px;
|
| 65 |
+
box-sizing: border-box;
|
| 66 |
+
text-align: center;
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
#enable-editor-notice h3 {
|
| 70 |
+
color: #fefefe;
|
| 71 |
+
line-height: 140%;
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
#enable-editor-notice a {
|
| 75 |
+
color: #111111;
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
#wphe-buttons .button {
|
| 79 |
+
margin-right: 15px;
|
| 80 |
+
}
|
| 81 |
+
|
| 82 |
+
.tools_page_wp-htaccess-editor .red {
|
| 83 |
+
color: #dd3036;
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
.tools_page_wp-htaccess-editor .green {
|
| 87 |
+
color: #1daf1d;
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
.tools_page_wp-htaccess-editor .dismiss-notice-rate {
|
| 91 |
+
vertical-align: bottom;
|
| 92 |
+
margin-left: 10px;
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
.tools_page_wp-htaccess-editor .swal2-container {
|
| 96 |
+
z-index: 99999;
|
| 97 |
+
}
|
| 98 |
+
|
| 99 |
+
.tools_page_wp-htaccess-editor .swal2-container.swal2-shown {
|
| 100 |
+
background-color: rgba(0,0,0,.6);
|
| 101 |
+
}
|
| 102 |
+
|
| 103 |
+
.tools_page_wp-htaccess-editor .swal2-popup .swal2-title {
|
| 104 |
+
line-height: 1;
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
.tools_page_wp-htaccess-editor code {
|
| 108 |
+
white-space: nowrap;
|
| 109 |
+
}
|
| 110 |
+
|
| 111 |
+
.tools_page_wp-htaccess-editor p {
|
| 112 |
+
line-height: 1.7;
|
| 113 |
+
}
|
| 114 |
+
|
| 115 |
+
.tools_page_wp-htaccess-editor .rotating {
|
| 116 |
+
-webkit-animation:spin 1.5s linear infinite;
|
| 117 |
+
-moz-animation:spin 1.5s linear infinite;
|
| 118 |
+
animation:spin 1.5s linear infinite;
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
.tools_page_wp-htaccess-editor .notice-error {
|
| 122 |
+
border-color: #dd3036;
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
.tools_page_wp-htaccess-editor .swal2-popup {
|
| 126 |
+
border-radius: 0;
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
#htaccess-editor-wrap .CodeMirror, #htaccess-editor-wrap textarea {
|
| 130 |
+
width: 100%;
|
| 131 |
+
max-width: 574px;
|
| 132 |
+
min-height: 300px;
|
| 133 |
+
height: calc(100vh - 400px);
|
| 134 |
+
border: 1px solid #ddd;
|
| 135 |
+
box-sizing: border-box;
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
#htaccess-editor-wrap {
|
| 139 |
+
margin-top: 20px;
|
| 140 |
+
}
|
| 141 |
+
|
| 142 |
+
@-moz-keyframes spin {
|
| 143 |
+
100% {
|
| 144 |
+
-moz-transform: rotate(-360deg);
|
| 145 |
+
}
|
| 146 |
+
}
|
| 147 |
+
@-webkit-keyframes spin {
|
| 148 |
+
100% {
|
| 149 |
+
-webkit-transform: rotate(-360deg);
|
| 150 |
+
}
|
| 151 |
+
}
|
| 152 |
+
@keyframes spin {
|
| 153 |
+
100% {
|
| 154 |
+
-webkit-transform: rotate(-360deg); transform:rotate(-360deg);
|
| 155 |
+
}
|
| 156 |
+
}
|
img/loading-icon.png
ADDED
|
Binary file
|
index.php
DELETED
|
@@ -1,4 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
header('Location: ../../');
|
| 3 |
-
exit();
|
| 4 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
js/sweetalert2.min.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*
|
| 2 |
+
SweetAlert2
|
| 3 |
+
https://github.com/sweetalert2/sweetalert2
|
| 4 |
+
MIT License
|
| 5 |
+
*/
|
| 6 |
+
|
| 7 |
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Sweetalert2=t()}(this,function(){"use strict";var q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},o=function(){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},i=function e(t,n,o){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var i=Object.getPrototypeOf(t);return null===i?void 0:e(i,n,o)}if("value"in r)return r.value;var a=r.get;return void 0!==a?a.call(o):void 0},a=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},u=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},M=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],o=!0,r=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(o=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);o=!0);}catch(e){r=!0,i=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},t="SweetAlert2:",B=function(e){console.warn(t+" "+e)},H=function(e){console.error(t+" "+e)},n=[],l=function(e){-1===n.indexOf(e)&&(n.push(e),B(e))},I=function(e){return"function"==typeof e?e():e},R=function(e){return"object"===(void 0===e?"undefined":q(e))&&"function"==typeof e.then},e=Object.freeze({cancel:"cancel",backdrop:"overlay",close:"close",esc:"esc",timer:"timer"}),c=function(e){var t={};for(var n in e)t[e[n]]="swal2-"+e[n];return t},D=c(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","toast","toast-shown","fade","show","hide","noanimation","close","title","header","content","actions","confirm","cancel","footer","icon","icon-text","image","input","has-input","file","range","select","radio","checkbox","textarea","inputerror","validationerror","progresssteps","activeprogressstep","progresscircle","progressline","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen"]),E=c(["success","warning","info","question","error"]),d={previousBodyPadding:null},p=function(e,t){return!!e.classList&&e.classList.contains(t)},N=function(e){if(e.focus(),"file"!==e.type){var t=e.value;e.value="",e.value=t}},f=function(e,t,n){e&&t&&("string"==typeof t&&(t=t.split(/\s+/).filter(Boolean)),t.forEach(function(t){e.forEach?e.forEach(function(e){n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)}))},W=function(e,t){f(e,t,!0)},P=function(e,t){f(e,t,!1)},z=function(e,t){for(var n=0;n<e.childNodes.length;n++)if(p(e.childNodes[n],t))return e.childNodes[n]},U=function(e){e.style.opacity="",e.style.display=e.id===D.content?"block":"flex"},F=function(e){e.style.opacity="",e.style.display="none"},S=function(e){for(;e.firstChild;)e.removeChild(e.firstChild)},K=function(e){return e&&(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},O=function(e,t){e.style.removeProperty?e.style.removeProperty(t):e.style.removeAttribute(t)},L=function(){return document.body.querySelector("."+D.container)},m=function(e){var t=L();return t?t.querySelector("."+e):null},Z=function(){return m(D.popup)},Q=function(){var e=Z();return Array.prototype.slice.call(e.querySelectorAll("."+D.icon))},Y=function(){return m(D.title)},$=function(){return m(D.content)},J=function(){return m(D.image)},X=function(){return m(D.progresssteps)},G=function(){return m(D.confirm)},ee=function(){return m(D.cancel)},te=function(){return m(D.actions)},ne=function(){return m(D.footer)},oe=function(){return m(D.close)},re=function(){var e=Array.prototype.slice.call(Z().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort(function(e,t){return e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))<e?1:e<t?-1:0}),t=Array.prototype.slice.call(Z().querySelectorAll('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex="0"], [contenteditable], audio[controls], video[controls]'));return function(e){for(var t=[],n=0;n<e.length;n++)-1===t.indexOf(e[n])&&t.push(e[n]);return t}(e.concat(t))},h=function(){return!document.body.classList.contains(D["toast-shown"])},g=function(){return document.body.classList.contains(D["toast-shown"])},v=function(){return"undefined"==typeof window||"undefined"==typeof document},y=('\n <div aria-labelledby="'+D.title+'" aria-describedby="'+D.content+'" class="'+D.popup+'" tabindex="-1">\n <div class="'+D.header+'">\n <ul class="'+D.progresssteps+'"></ul>\n <div class="'+D.icon+" "+E.error+'">\n <span class="swal2-x-mark"><span class="swal2-x-mark-line-left"></span><span class="swal2-x-mark-line-right"></span></span>\n </div>\n <div class="'+D.icon+" "+E.question+'">\n <span class="'+D["icon-text"]+'">?</span>\n </div>\n <div class="'+D.icon+" "+E.warning+'">\n <span class="'+D["icon-text"]+'">!</span>\n </div>\n <div class="'+D.icon+" "+E.info+'">\n <span class="'+D["icon-text"]+'">i</span>\n </div>\n <div class="'+D.icon+" "+E.success+'">\n <div class="swal2-success-circular-line-left"></div>\n <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span>\n <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div>\n <div class="swal2-success-circular-line-right"></div>\n </div>\n <img class="'+D.image+'" />\n <h2 class="'+D.title+'" id="'+D.title+'"></h2>\n <button type="button" class="'+D.close+'">×</button>\n </div>\n <div class="'+D.content+'">\n <div id="'+D.content+'"></div>\n <input class="'+D.input+'" />\n <input type="file" class="'+D.file+'" />\n <div class="'+D.range+'">\n <input type="range" />\n <output></output>\n </div>\n <select class="'+D.select+'"></select>\n <div class="'+D.radio+'"></div>\n <label for="'+D.checkbox+'" class="'+D.checkbox+'">\n <input type="checkbox" />\n </label>\n <textarea class="'+D.textarea+'"></textarea>\n <div class="'+D.validationerror+'" id="'+D.validationerror+'"></div>\n </div>\n <div class="'+D.actions+'">\n <button type="button" class="'+D.confirm+'">OK</button>\n <button type="button" class="'+D.cancel+'">Cancel</button>\n </div>\n <div class="'+D.footer+'">\n </div>\n </div>\n').replace(/(^|\n)\s*/g,""),ie=function(e){var t=L();if(t&&(t.parentNode.removeChild(t),P([document.documentElement,document.body],[D["no-backdrop"],D["has-input"],D["toast-shown"]])),!v()){var n=document.createElement("div");n.className=D.container,n.innerHTML=y,("string"==typeof e.target?document.querySelector(e.target):e.target).appendChild(n);var o=Z(),r=$(),i=z(r,D.input),a=z(r,D.file),s=r.querySelector("."+D.range+" input"),u=r.querySelector("."+D.range+" output"),l=z(r,D.select),c=r.querySelector("."+D.checkbox+" input"),d=z(r,D.textarea);o.setAttribute("role",e.toast?"alert":"dialog"),o.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||o.setAttribute("aria-modal","true");var p=void 0,f=function(e){Ae.isVisible()&&p!==e.target.value&&Ae.resetValidationError(),p=e.target.value};return i.oninput=f,a.onchange=f,l.onchange=f,c.onchange=f,d.oninput=f,s.oninput=function(e){f(e),u.value=s.value},s.onchange=function(e){f(e),s.nextSibling.value=s.value},o}H("SweetAlert2 requires document to initialize")},ae=function(e,t){if(!e)return F(t);if("object"===(void 0===e?"undefined":q(e)))if(t.innerHTML="",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0));else e&&(t.innerHTML=e);U(t)},b=function(){if(v())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(var n in t)if(t.hasOwnProperty(n)&&void 0!==e.style[n])return t[n];return!1}(),w=function(){null===d.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(d.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight=d.previousBodyPadding+function(){if("ontouchstart"in window||navigator.msMaxTouchPoints)return 0;var e=document.createElement("div");e.style.width="50px",e.style.height="50px",e.style.overflow="scroll",document.body.appendChild(e);var t=e.offsetWidth-e.clientWidth;return document.body.removeChild(e),t}()+"px")},se={},C=function(e,n){var o=L(),t=Z();if(t){null!==e&&"function"==typeof e&&e(t),P(t,D.show),W(t,D.hide);var r=function(){var e,t;g()||(e=window.scrollX,t=window.scrollY,se.restoreFocusTimeout=setTimeout(function(){se.previousActiveElement&&se.previousActiveElement.focus&&(se.previousActiveElement.focus(),se.previousActiveElement=null)},100),void 0!==e&&void 0!==t&&window.scrollTo(e,t),se.keydownTarget.removeEventListener("keydown",se.keydownHandler,{capture:se.keydownListenerCapture}),se.keydownHandlerAdded=!1),o.parentNode&&o.parentNode.removeChild(o),P([document.documentElement,document.body],[D.shown,D["height-auto"],D["no-backdrop"],D["has-input"],D["toast-shown"]]),h()&&(null!==d.previousBodyPadding&&(document.body.style.paddingRight=d.previousBodyPadding,d.previousBodyPadding=null),function(){if(p(document.body,D.iosfix)){var e=parseInt(document.body.style.top,10);P(document.body,D.iosfix),document.body.style.top="",document.body.scrollTop=-1*e}}()),null!==n&&"function"==typeof n&&setTimeout(function(){n()})};b&&!p(t,D.noanimation)?t.addEventListener(b,function e(){t.removeEventListener(b,e),p(t,D.hide)&&r()}):r()}};function k(e){var t=function e(){for(var t=arguments.length,n=Array(t),o=0;o<t;o++)n[o]=arguments[o];if(!(this instanceof e))return new(Function.prototype.bind.apply(e,[null].concat(n)));Object.getPrototypeOf(e).apply(this,n)};return t.prototype=r(Object.create(e.prototype),{constructor:t}),"function"==typeof Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e,t}var x={title:"",titleText:"",text:"",html:"",footer:"",type:null,toast:!1,customClass:"",target:"body",backdrop:!0,animation:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showCancelButton:!1,preConfirm:null,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:null,confirmButtonClass:null,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:null,cancelButtonClass:null,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusCancel:!1,showCloseButton:!1,closeButtonAriaLabel:"Close this dialog",showLoaderOnConfirm:!1,imageUrl:null,imageWidth:null,imageHeight:null,imageAlt:"",imageClass:null,timer:null,width:null,padding:null,background:null,input:null,inputPlaceholder:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputClass:null,inputAttributes:{},inputValidator:null,grow:!1,position:"center",progressSteps:[],currentProgressStep:null,progressStepsDistance:null,onBeforeOpen:null,onAfterClose:null,onOpen:null,onClose:null,useRejections:!1,expectRejections:!1},A=["useRejections","expectRejections"],T=function(e){return x.hasOwnProperty(e)||"extraParams"===e},j=function(e){return-1!==A.indexOf(e)},ue=function(e){for(var t in e)T(t)||B('Unknown parameter "'+t+'"'),j(t)&&l('The parameter "'+t+'" is deprecated and will be removed in the next major release.')},_='"setDefaults" & "resetDefaults" methods are deprecated in favor of "mixin" method and will be removed in the next major release. For new projects, use "mixin". For past projects already using "setDefaults", support will be provided through an additional package.',V={};var le=[],ce=function(){var e=Z();e||Ae(""),e=Z();var t=te(),n=G(),o=ee();U(t),U(n),W([e,t],D.loading),n.disabled=!0,o.disabled=!0,e.setAttribute("data-loading",!0),e.setAttribute("aria-busy",!0),e.focus()},de=Object.freeze({isValidParameter:T,isDeprecatedParameter:j,argsToParams:function(n){var o={};switch(q(n[0])){case"string":["title","html","type"].forEach(function(e,t){switch(q(n[t])){case"string":o[e]=n[t];break;case"undefined":break;default:H("Unexpected type of "+e+'! Expected "string", got '+q(n[t]))}});break;case"object":r(o,n[0]);break;default:return H('Unexpected type of argument! Expected "string" or "object", got '+q(n[0])),!1}return o},adaptInputValidator:function(n){return function(e,t){return n.call(this,e,t).then(function(){},function(e){return e})}},close:C,closePopup:C,closeModal:C,closeToast:C,isVisible:function(){return!!Z()},clickConfirm:function(){return G().click()},clickCancel:function(){return ee().click()},getPopup:Z,getTitle:Y,getContent:$,getImage:J,getIcons:Q,getButtonsWrapper:function(){return l("swal.getButtonsWrapper() is deprecated and will be removed in the next major release, use swal.getActions() instead"),m(D.actions)},getActions:te,getConfirmButton:G,getCancelButton:ee,getFooter:ne,isLoading:function(){return Z().hasAttribute("data-loading")},fire:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return new(Function.prototype.bind.apply(this,[null].concat(t)))},mixin:function(n){return k(function(e){function t(){return s(this,t),u(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),o(t,[{key:"_main",value:function(e){return i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"_main",this).call(this,r({},n,e))}}]),t}(this))},queue:function(e){var i=this;le=e;var a=function(){le=[],document.body.removeAttribute("data-swal2-queue-step")},s=[];return new Promise(function(r,e){!function t(n,o){n<le.length?(document.body.setAttribute("data-swal2-queue-step",n),i(le[n]).then(function(e){void 0!==e.value?(s.push(e.value),t(n+1,o)):(a(),r({dismiss:e.dismiss}))})):(a(),r({value:s}))}(0)})},getQueueStep:function(){return document.body.getAttribute("data-swal2-queue-step")},insertQueueStep:function(e,t){return t&&t<le.length?le.splice(t,0,e):le.push(e)},deleteQueueStep:function(e){void 0!==le[e]&&le.splice(e,1)},showLoading:ce,enableLoading:ce,getTimerLeft:function(){return se.timeout&&se.timeout.getTimerLeft()}}),pe="function"==typeof Symbol?Symbol:function(){var t=0;function e(e){return"__"+e+"_"+Math.floor(1e9*Math.random())+"_"+ ++t+"__"}return e.iterator=e("Symbol.iterator"),e}(),fe="function"==typeof WeakMap?WeakMap:function(n,o,t){function e(){o(this,n,{value:pe("WeakMap")})}return e.prototype={delete:function(e){delete e[this[n]]},get:function(e){return e[this[n]]},has:function(e){return t.call(e,this[n])},set:function(e,t){o(e,this[n],{configurable:!0,value:t})}},e}(pe("WeakMap"),Object.defineProperty,{}.hasOwnProperty),me={promise:new fe,innerParams:new fe,domCache:new fe};function he(){var e=me.innerParams.get(this),t=me.domCache.get(this);e.showConfirmButton||(F(t.confirmButton),e.showCancelButton||F(t.actions)),P([t.popup,t.actions],D.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.cancelButton.disabled=!1}var ge=function e(t,n){var o,r,i;s(this,e);var a=n;this.start=function(){i=!0,r=new Date,o=setTimeout(t,a)},this.stop=function(){i=!1,clearTimeout(o),a-=new Date-r},this.getTimerLeft=function(){return i&&(this.stop(),this.start()),a},this.getStateRunning=function(){return i},this.start()},ve={email:function(e,t){return/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.reject(t&&t.validationMessage?t.validationMessage:"Invalid email address")},url:function(e,t){return/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&//=]*)$/.test(e)?Promise.resolve():Promise.reject(t&&t.validationMessage?t.validationMessage:"Invalid URL")}};var ye=function(e){var t=L(),n=Z();null!==e.onBeforeOpen&&"function"==typeof e.onBeforeOpen&&e.onBeforeOpen(n),e.animation?(W(n,D.show),W(t,D.fade),P(n,D.hide)):P(n,D.fade),U(n),t.style.overflowY="hidden",b&&!p(n,D.noanimation)?n.addEventListener(b,function e(){n.removeEventListener(b,e),t.style.overflowY="auto"}):t.style.overflowY="auto",W([document.documentElement,document.body,t],D.shown),e.heightAuto&&e.backdrop&&!e.toast&&W([document.documentElement,document.body],D["height-auto"]),h()&&(w(),function(){if(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream&&!p(document.body,D.iosfix)){var e=document.body.scrollTop;document.body.style.top=-1*e+"px",W(document.body,D.iosfix)}}()),g()||se.previousActiveElement||(se.previousActiveElement=document.activeElement),null!==e.onOpen&&"function"==typeof e.onOpen&&setTimeout(function(){e.onOpen(n)})};var be=Object.freeze({hideLoading:he,disableLoading:he,getInput:function(e){var t=me.innerParams.get(this),n=me.domCache.get(this);if(!(e=e||t.input))return null;switch(e){case"select":case"textarea":case"file":return z(n.content,D[e]);case"checkbox":return n.popup.querySelector("."+D.checkbox+" input");case"radio":return n.popup.querySelector("."+D.radio+" input:checked")||n.popup.querySelector("."+D.radio+" input:first-child");case"range":return n.popup.querySelector("."+D.range+" input");default:return z(n.content,D.input)}},enableButtons:function(){var e=me.domCache.get(this);e.confirmButton.disabled=!1,e.cancelButton.disabled=!1},disableButtons:function(){var e=me.domCache.get(this);e.confirmButton.disabled=!0,e.cancelButton.disabled=!0},enableConfirmButton:function(){me.domCache.get(this).confirmButton.disabled=!1},disableConfirmButton:function(){me.domCache.get(this).confirmButton.disabled=!0},enableInput:function(){var e=this.getInput();if(!e)return!1;if("radio"===e.type)for(var t=e.parentNode.parentNode.querySelectorAll("input"),n=0;n<t.length;n++)t[n].disabled=!1;else e.disabled=!1},disableInput:function(){var e=this.getInput();if(!e)return!1;if(e&&"radio"===e.type)for(var t=e.parentNode.parentNode.querySelectorAll("input"),n=0;n<t.length;n++)t[n].disabled=!0;else e.disabled=!0},showValidationError:function(e){var t=me.domCache.get(this);t.validationError.innerHTML=e;var n=window.getComputedStyle(t.popup);t.validationError.style.marginLeft="-"+n.getPropertyValue("padding-left"),t.validationError.style.marginRight="-"+n.getPropertyValue("padding-right"),U(t.validationError);var o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedBy",D.validationerror),N(o),W(o,D.inputerror))},resetValidationError:function(){var e=me.domCache.get(this);e.validationError&&F(e.validationError);var t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedBy"),P(t,D.inputerror))},_main:function(e){var T=this;ue(e);var j=r({},x,e);!function(r){r.inputValidator||Object.keys(ve).forEach(function(e){r.input===e&&(r.inputValidator=r.expectRejections?ve[e]:Ae.adaptInputValidator(ve[e]))}),(!r.target||"string"==typeof r.target&&!document.querySelector(r.target)||"string"!=typeof r.target&&!r.target.appendChild)&&(B('Target parameter is not valid, defaulting to "body"'),r.target="body");var e=void 0,t=Z(),n="string"==typeof r.target?document.querySelector(r.target):r.target;e=t&&n&&t.parentNode!==n.parentNode?ie(r):t||ie(r),r.width&&(e.style.width="number"==typeof r.width?r.width+"px":r.width),r.padding&&(e.style.padding="number"==typeof r.padding?r.padding+"px":r.padding),r.background&&(e.style.background=r.background);for(var o=window.getComputedStyle(e).getPropertyValue("background-color"),i=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix"),a=0;a<i.length;a++)i[a].style.backgroundColor=o;var s=L(),u=Y(),l=$().querySelector("#"+D.content),c=te(),d=G(),p=ee(),f=oe(),m=ne();if(r.titleText?u.innerText=r.titleText:r.title&&(u.innerHTML=r.title.split("\n").join("<br />")),"string"==typeof r.backdrop?L().style.background=r.backdrop:r.backdrop||W([document.documentElement,document.body],D["no-backdrop"]),r.html?ae(r.html,l):r.text?(l.textContent=r.text,U(l)):F(l),r.position in D?W(s,D[r.position]):(B('The "position" parameter is not valid, defaulting to "center"'),W(s,D.center)),r.grow&&"string"==typeof r.grow){var h="grow-"+r.grow;h in D&&W(s,D[h])}"function"==typeof r.animation&&(r.animation=r.animation.call()),r.showCloseButton?(f.setAttribute("aria-label",r.closeButtonAriaLabel),U(f)):F(f),e.className=D.popup,r.toast?(W([document.documentElement,document.body],D["toast-shown"]),W(e,D.toast)):W(e,D.modal),r.customClass&&W(e,r.customClass);var g=X(),v=parseInt(null===r.currentProgressStep?Ae.getQueueStep():r.currentProgressStep,10);r.progressSteps&&r.progressSteps.length?(U(g),S(g),v>=r.progressSteps.length&&B("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),r.progressSteps.forEach(function(e,t){var n=document.createElement("li");if(W(n,D.progresscircle),n.innerHTML=e,t===v&&W(n,D.activeprogressstep),g.appendChild(n),t!==r.progressSteps.length-1){var o=document.createElement("li");W(o,D.progressline),r.progressStepsDistance&&(o.style.width=r.progressStepsDistance),g.appendChild(o)}})):F(g);for(var y=Q(),b=0;b<y.length;b++)F(y[b]);if(r.type){var w=!1;for(var C in E)if(r.type===C){w=!0;break}if(!w)return H("Unknown alert type: "+r.type);var k=e.querySelector("."+D.icon+"."+E[r.type]);U(k),r.animation&&W(k,"swal2-animate-"+r.type+"-icon")}var x=J();if(r.imageUrl?(x.setAttribute("src",r.imageUrl),x.setAttribute("alt",r.imageAlt),U(x),r.imageWidth?x.setAttribute("width",r.imageWidth):x.removeAttribute("width"),r.imageHeight?x.setAttribute("height",r.imageHeight):x.removeAttribute("height"),x.className=D.image,r.imageClass&&W(x,r.imageClass)):F(x),r.showCancelButton?p.style.display="inline-block":F(p),r.showConfirmButton?O(d,"display"):F(d),r.showConfirmButton||r.showCancelButton?U(c):F(c),d.innerHTML=r.confirmButtonText,p.innerHTML=r.cancelButtonText,d.setAttribute("aria-label",r.confirmButtonAriaLabel),p.setAttribute("aria-label",r.cancelButtonAriaLabel),d.className=D.confirm,W(d,r.confirmButtonClass),p.className=D.cancel,W(p,r.cancelButtonClass),r.buttonsStyling){W([d,p],D.styled),r.confirmButtonColor&&(d.style.backgroundColor=r.confirmButtonColor),r.cancelButtonColor&&(p.style.backgroundColor=r.cancelButtonColor);var A=window.getComputedStyle(d).getPropertyValue("background-color");d.style.borderLeftColor=A,d.style.borderRightColor=A}else P([d,p],D.styled),d.style.backgroundColor=d.style.borderLeftColor=d.style.borderRightColor="",p.style.backgroundColor=p.style.borderLeftColor=p.style.borderRightColor="";ae(r.footer,m),!0===r.animation?P(e,D.noanimation):W(e,D.noanimation),r.showLoaderOnConfirm&&!r.preConfirm&&B("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request")}(j),Object.freeze(j),me.innerParams.set(this,j),se.timeout&&(se.timeout.stop(),delete se.timeout),clearTimeout(se.restoreFocusTimeout);var _={popup:Z(),container:L(),content:$(),actions:te(),confirmButton:G(),cancelButton:ee(),closeButton:oe(),validationError:m(D.validationerror),progressSteps:X()};me.domCache.set(this,_);var V=this.constructor;return new Promise(function(t,n){var o=function(e){V.closePopup(j.onClose,j.onAfterClose),j.useRejections?t(e):t({value:e})},l=function(e){V.closePopup(j.onClose,j.onAfterClose),j.useRejections?n(e):t({dismiss:e})},c=function(e){V.closePopup(j.onClose,j.onAfterClose),n(e)};j.timer&&(se.timeout=new ge(function(){l("timer"),delete se.timeout},j.timer)),j.input&&setTimeout(function(){var e=T.getInput();e&&N(e)},0);for(var d=function(t){if(j.showLoaderOnConfirm&&V.showLoading(),j.preConfirm){T.resetValidationError();var e=Promise.resolve().then(function(){return j.preConfirm(t,j.extraParams)});j.expectRejections?e.then(function(e){return o(e||t)},function(e){T.hideLoading(),e&&T.showValidationError(e)}):e.then(function(e){K(_.validationError)||!1===e?T.hideLoading():o(e||t)},function(e){return c(e)})}else o(t)},e=function(e){var t=e||window.event,n=t.target||t.srcElement,o=_.confirmButton,r=_.cancelButton,i=o&&(o===n||o.contains(n)),a=r&&(r===n||r.contains(n));switch(t.type){case"click":if(i&&V.isVisible())if(T.disableButtons(),j.input){var s=function(){var e=T.getInput();if(!e)return null;switch(j.input){case"checkbox":return e.checked?1:0;case"radio":return e.checked?e.value:null;case"file":return e.files.length?e.files[0]:null;default:return j.inputAutoTrim?e.value.trim():e.value}}();if(j.inputValidator){T.disableInput();var u=Promise.resolve().then(function(){return j.inputValidator(s,j.extraParams)});j.expectRejections?u.then(function(){T.enableButtons(),T.enableInput(),d(s)},function(e){T.enableButtons(),T.enableInput(),e&&T.showValidationError(e)}):u.then(function(e){T.enableButtons(),T.enableInput(),e?T.showValidationError(e):d(s)},function(e){return c(e)})}else d(s)}else d(!0);else a&&V.isVisible()&&(T.disableButtons(),l(V.DismissReason.cancel))}},r=_.popup.querySelectorAll("button"),i=0;i<r.length;i++)r[i].onclick=e,r[i].onmouseover=e,r[i].onmouseout=e,r[i].onmousedown=e;if(_.closeButton.onclick=function(){l(V.DismissReason.close)},j.toast)_.popup.onclick=function(e){j.showConfirmButton||j.showCancelButton||j.showCloseButton||j.input||(V.closePopup(j.onClose,j.onAfterClose),l(V.DismissReason.close))};else{var a=!1;_.popup.onmousedown=function(){_.container.onmouseup=function(e){_.container.onmouseup=void 0,e.target===_.container&&(a=!0)}},_.container.onmousedown=function(){_.popup.onmouseup=function(e){_.popup.onmouseup=void 0,(e.target===_.popup||_.popup.contains(e.target))&&(a=!0)}},_.container.onclick=function(e){a?a=!1:e.target===_.container&&I(j.allowOutsideClick)&&l(V.DismissReason.backdrop)}}j.reverseButtons?_.confirmButton.parentNode.insertBefore(_.cancelButton,_.confirmButton):_.confirmButton.parentNode.insertBefore(_.confirmButton,_.cancelButton);var s=function(e,t){for(var n=re(j.focusCancel),o=0;o<n.length;o++){(e+=t)===n.length?e=0:-1===e&&(e=n.length-1);var r=n[e];if(K(r))return r.focus()}_.popup.focus()};se.keydownHandlerAdded&&(se.keydownTarget.removeEventListener("keydown",se.keydownHandler,{capture:se.keydownListenerCapture}),se.keydownHandlerAdded=!1),j.toast||(se.keydownHandler=function(e){return function(e,t){if(t.stopKeydownPropagation&&e.stopPropagation(),"Enter"!==e.key||e.isComposing)if("Tab"===e.key){for(var n=e.target||e.srcElement,o=re(t.focusCancel),r=-1,i=0;i<o.length;i++)if(n===o[i]){r=i;break}e.shiftKey?s(r,-1):s(r,1),e.stopPropagation(),e.preventDefault()}else-1!==["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Left","Right","Up","Down"].indexOf(e.key)?document.activeElement===_.confirmButton&&K(_.cancelButton)?_.cancelButton.focus():document.activeElement===_.cancelButton&&K(_.confirmButton)&&_.confirmButton.focus():"Escape"!==e.key&&"Esc"!==e.key||!0!==I(t.allowEscapeKey)||l(V.DismissReason.esc);else if(e.target&&T.getInput()&&e.target.outerHTML===T.getInput().outerHTML){if(-1!==["textarea","file"].indexOf(t.input))return;V.clickConfirm(),e.preventDefault()}}(e,j)},se.keydownTarget=j.keydownListenerCapture?window:_.popup,se.keydownListenerCapture=j.keydownListenerCapture,se.keydownTarget.addEventListener("keydown",se.keydownHandler,{capture:se.keydownListenerCapture}),se.keydownHandlerAdded=!0),T.enableButtons(),T.hideLoading(),T.resetValidationError(),j.input&&W(document.body,D["has-input"]);for(var u=["input","file","range","select","radio","checkbox","textarea"],p=void 0,f=0;f<u.length;f++){var m=D[u[f]],h=z(_.content,m);if(p=T.getInput(u[f])){for(var g in p.attributes)if(p.attributes.hasOwnProperty(g)){var v=p.attributes[g].name;"type"!==v&&"value"!==v&&p.removeAttribute(v)}for(var y in j.inputAttributes)p.setAttribute(y,j.inputAttributes[y])}h.className=m,j.inputClass&&W(h,j.inputClass),F(h)}var b=void 0;switch(j.input){case"text":case"email":case"password":case"number":case"tel":case"url":(p=z(_.content,D.input)).value=j.inputValue,p.placeholder=j.inputPlaceholder,p.type=j.input,U(p);break;case"file":(p=z(_.content,D.file)).placeholder=j.inputPlaceholder,p.type=j.input,U(p);break;case"range":var w=z(_.content,D.range),C=w.querySelector("input"),k=w.querySelector("output");C.value=j.inputValue,C.type=j.input,k.value=j.inputValue,U(w);break;case"select":var x=z(_.content,D.select);if(x.innerHTML="",j.inputPlaceholder){var A=document.createElement("option");A.innerHTML=j.inputPlaceholder,A.value="",A.disabled=!0,A.selected=!0,x.appendChild(A)}b=function(e){e.forEach(function(e){var t=M(e,2),n=t[0],o=t[1],r=document.createElement("option");r.value=n,r.innerHTML=o,j.inputValue.toString()===n.toString()&&(r.selected=!0),x.appendChild(r)}),U(x),x.focus()};break;case"radio":var B=z(_.content,D.radio);B.innerHTML="",b=function(e){e.forEach(function(e){var t=M(e,2),n=t[0],o=t[1],r=document.createElement("input"),i=document.createElement("label");r.type="radio",r.name=D.radio,r.value=n,j.inputValue.toString()===n.toString()&&(r.checked=!0),i.innerHTML=o,i.insertBefore(r,i.firstChild),B.appendChild(i)}),U(B);var t=B.querySelectorAll("input");t.length&&t[0].focus()};break;case"checkbox":var E=z(_.content,D.checkbox),P=T.getInput("checkbox");P.type="checkbox",P.value=1,P.id=D.checkbox,P.checked=Boolean(j.inputValue);var S=E.getElementsByTagName("span");S.length&&E.removeChild(S[0]),(S=document.createElement("span")).innerHTML=j.inputPlaceholder,E.appendChild(S),U(E);break;case"textarea":var O=z(_.content,D.textarea);O.value=j.inputValue,O.placeholder=j.inputPlaceholder,U(O);break;case null:break;default:H('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'+j.input+'"')}if("select"===j.input||"radio"===j.input){var L=function(e){return b((t=e,n=[],"undefined"!=typeof Map&&t instanceof Map?t.forEach(function(e,t){n.push([t,e])}):Object.keys(t).forEach(function(e){n.push([e,t[e]])}),n));var t,n};R(j.inputOptions)?(V.showLoading(),j.inputOptions.then(function(e){T.hideLoading(),L(e)})):"object"===q(j.inputOptions)?L(j.inputOptions):H("Unexpected type of inputOptions! Expected object, Map or Promise, got "+q(j.inputOptions))}else-1!==["text","email","number","tel","textarea"].indexOf(j.input)&&R(j.inputValue)&&(V.showLoading(),F(p),j.inputValue.then(function(e){p.value="number"===j.input?parseFloat(e)||0:e+"",U(p),T.hideLoading()}).catch(function(e){H("Error in inputValue promise: "+e),p.value="",U(p),T.hideLoading()}));ye(j),j.toast||(I(j.allowEnterKey)?j.focusCancel&&K(_.cancelButton)?_.cancelButton.focus():j.focusConfirm&&K(_.confirmButton)?_.confirmButton.focus():s(-1,1):document.activeElement&&document.activeElement.blur()),_.container.scrollTop=0})}}),we=void 0;function Ce(){if("undefined"!=typeof window){"undefined"==typeof Promise&&H("This package requires a Promise library, please include a shim to enable it in this browser (See: https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support)");for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(void 0===t[0])return H("SweetAlert2 expects at least 1 attribute!"),!1;we=this;var o=Object.freeze(this.constructor.argsToParams(t));Object.defineProperties(this,{params:{value:o,writable:!1,enumerable:!0}});var r=this._main(this.params);me.promise.set(this,r)}}Ce.prototype.then=function(e,t){return me.promise.get(this).then(e,t)},Ce.prototype.catch=function(e){return me.promise.get(this).catch(e)},Ce.prototype.finally=function(e){return me.promise.get(this).finally(e)},r(Ce.prototype,be),r(Ce,de),Object.keys(be).forEach(function(t){Ce[t]=function(){var e;if(we)return(e=we)[t].apply(e,arguments)}}),Ce.DismissReason=e,Ce.noop=function(){},Ce.version="7.25.0";var ke,xe,Ae=k((ke=Ce,xe=function(e){function t(){return s(this,t),u(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,ke),o(t,[{key:"_main",value:function(e){return i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"_main",this).call(this,r({},V,e))}}],[{key:"setDefaults",value:function(t){if(l(_),!t||"object"!==(void 0===t?"undefined":q(t)))throw new TypeError("SweetAlert2: The argument for setDefaults() is required and has to be a object");ue(t),Object.keys(t).forEach(function(e){ke.isValidParameter(e)&&(V[e]=t[e])})}},{key:"resetDefaults",value:function(){l(_),V={}}}]),t}(),"undefined"!=typeof window&&"object"===q(window._swalDefaults)&&xe.setDefaults(window._swalDefaults),xe));return Ae.default=Ae}),"undefined"!=typeof window&&window.Sweetalert2&&(window.swal=window.sweetAlert=window.Swal=window.SweetAlert=window.Sweetalert2);
|
js/wp-htaccess-editor-pointers.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*
|
| 2 |
+
* WP Htaccess Editor
|
| 3 |
+
* Backend GUI pointers
|
| 4 |
+
* (c) Web factory Ltd, 2017 - 2018
|
| 5 |
+
*/
|
| 6 |
+
|
| 7 |
+
jQuery(document).ready(function($){
|
| 8 |
+
if (typeof wp_htaccess_editor_pointers == 'undefined') {
|
| 9 |
+
return;
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
$.each(wp_htaccess_editor_pointers, function(index, pointer) {
|
| 13 |
+
if (index.charAt(0) == '_') {
|
| 14 |
+
return true;
|
| 15 |
+
}
|
| 16 |
+
$(pointer.target).pointer({
|
| 17 |
+
content: '<h3>WP Htaccess Editor</h3><p>' + pointer.content + '</p>',
|
| 18 |
+
pointerWidth: 380,
|
| 19 |
+
position: {
|
| 20 |
+
edge: pointer.edge,
|
| 21 |
+
align: pointer.align
|
| 22 |
+
},
|
| 23 |
+
close: function() {
|
| 24 |
+
$.get(ajaxurl, {
|
| 25 |
+
notice_name: index,
|
| 26 |
+
_ajax_nonce: wp_htaccess_editor_pointers._nonce_dismiss_pointer,
|
| 27 |
+
action: 'wp_htaccess_editor_dismiss_notice'
|
| 28 |
+
});
|
| 29 |
+
}
|
| 30 |
+
}).pointer('open');
|
| 31 |
+
});
|
| 32 |
+
});
|
js/wp-htaccess-editor.js
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
* WP Htaccess Editor
|
| 3 |
+
* (c) WebFactory Ltd, 2018-2019
|
| 4 |
+
*/
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
jQuery(document).ready(function($) {
|
| 8 |
+
// init code editor
|
| 9 |
+
wp.themePluginEditor.init($('#htaccess-editor-wrap'), wp_htaccess_editor.cm_settings);
|
| 10 |
+
wp.themePluginEditor.themeOrPlugin = 'theme';
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
// display a message while an action is performed
|
| 14 |
+
function block_ui(message) {
|
| 15 |
+
tmp = swal({
|
| 16 |
+
text: message,
|
| 17 |
+
type: false,
|
| 18 |
+
imageUrl: wp_htaccess_editor.loading_icon_url,
|
| 19 |
+
onOpen: () => { $(swal.getImage()).addClass('rotating'); },
|
| 20 |
+
imageWidth: 100,
|
| 21 |
+
imageHeight: 100,
|
| 22 |
+
imageAlt: message,
|
| 23 |
+
allowOutsideClick: false,
|
| 24 |
+
allowEscapeKey: false,
|
| 25 |
+
allowEnterKey: false,
|
| 26 |
+
showConfirmButton: false,
|
| 27 |
+
width: 600
|
| 28 |
+
});
|
| 29 |
+
|
| 30 |
+
return tmp;
|
| 31 |
+
} // block_ui
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
// display dialog to confirm action
|
| 35 |
+
function confirm_action(title, question, btn_confirm, btn_cancel) {
|
| 36 |
+
tmp = swal({
|
| 37 |
+
title: title,
|
| 38 |
+
type: 'question',
|
| 39 |
+
html: question,
|
| 40 |
+
showCancelButton: true,
|
| 41 |
+
focusConfirm: false,
|
| 42 |
+
confirmButtonText: btn_confirm,
|
| 43 |
+
cancelButtonText: btn_cancel,
|
| 44 |
+
confirmButtonColor: '#dd3036',
|
| 45 |
+
width: 600
|
| 46 |
+
});
|
| 47 |
+
|
| 48 |
+
return tmp;
|
| 49 |
+
} // confirm_action
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
// dismiss notice / pointer
|
| 53 |
+
$('.wphe-dismiss-notice').on('click', function(e) {
|
| 54 |
+
notice_name = $(this).data('notice');
|
| 55 |
+
if (!notice_name) {
|
| 56 |
+
return true;
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
$.get(ajaxurl, { notice_name: notice_name,
|
| 60 |
+
_ajax_nonce: wp_htaccess_editor.nonce_dismiss_notice,
|
| 61 |
+
action: 'wp_htaccess_editor_dismiss_notice'
|
| 62 |
+
});
|
| 63 |
+
|
| 64 |
+
$(this).parents('.notice-wrapper').fadeOut();
|
| 65 |
+
|
| 66 |
+
if (notice_name == 'editor-warning') {
|
| 67 |
+
$('#wphe-buttons').fadeIn();
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
e.preventDefault();
|
| 71 |
+
return false;
|
| 72 |
+
}); // dismiss notice
|
| 73 |
+
|
| 74 |
+
|
| 75 |
+
// collapse / expand card
|
| 76 |
+
$('.card').on('click', '.toggle-card', function(e) {
|
| 77 |
+
e.preventDefault();
|
| 78 |
+
|
| 79 |
+
card = $(this).parents('.card').toggleClass('collapsed');
|
| 80 |
+
$('.dashicons', this).toggleClass('dashicons-arrow-up-alt2').toggleClass('dashicons-arrow-down-alt2');
|
| 81 |
+
$(this).blur();
|
| 82 |
+
|
| 83 |
+
cards = localStorage.getItem('wp-htaccess-editor-cards');
|
| 84 |
+
if (cards == null) {
|
| 85 |
+
cards = new Object();
|
| 86 |
+
} else {
|
| 87 |
+
cards = JSON.parse(cards);
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
if (card.hasClass('collapsed')) {
|
| 91 |
+
cards[card.attr('id')] = 'collapsed';
|
| 92 |
+
} else {
|
| 93 |
+
cards[card.attr('id')] = 'expanded';
|
| 94 |
+
}
|
| 95 |
+
localStorage.setItem('wp-htaccess-editor-cards', JSON.stringify(cards));
|
| 96 |
+
|
| 97 |
+
return false;
|
| 98 |
+
}); // toggle-card
|
| 99 |
+
|
| 100 |
+
|
| 101 |
+
// init cards; collapse those that need collapsing
|
| 102 |
+
cards = localStorage.getItem('wp-htaccess-editor-cards');
|
| 103 |
+
if (cards != null) {
|
| 104 |
+
cards = JSON.parse(cards);
|
| 105 |
+
}
|
| 106 |
+
$.each(cards, function(card_name, card_value) {
|
| 107 |
+
if (card_value == 'collapsed') {
|
| 108 |
+
$('a.toggle-card', '#' + card_name).trigger('click');
|
| 109 |
+
}
|
| 110 |
+
});
|
| 111 |
+
|
| 112 |
+
|
| 113 |
+
// save htaccess file
|
| 114 |
+
$('#wphe_save_htaccess').click(function(e) {
|
| 115 |
+
e.preventDefault();
|
| 116 |
+
|
| 117 |
+
block_ui(wp_htaccess_editor.saving);
|
| 118 |
+
$.post({
|
| 119 |
+
url: ajaxurl,
|
| 120 |
+
data: {
|
| 121 |
+
action: 'wp_htaccess_editor_do_action',
|
| 122 |
+
_ajax_nonce: wp_htaccess_editor.nonce_do_action,
|
| 123 |
+
subaction: 'save_htaccess',
|
| 124 |
+
new_content: wp.themePluginEditor.instance.codemirror.getValue()
|
| 125 |
+
}
|
| 126 |
+
}).always(function(data) {
|
| 127 |
+
swal.close();
|
| 128 |
+
}).done(function(data) {
|
| 129 |
+
if (typeof data.success != 'undefined' && data.success) {
|
| 130 |
+
// TODO: bug; does not work if user continues to edit after saving; we need to re-hook it
|
| 131 |
+
$(window).off('beforeunload');
|
| 132 |
+
jQuery.get(wp_htaccess_editor.home_url).always(function(data, text, xhr) {
|
| 133 |
+
status = xhr.status;
|
| 134 |
+
if (status.substr(0, 1) != '2') {
|
| 135 |
+
swal({ type: 'error', title: wp_htaccess_editor.site_error });
|
| 136 |
+
} else {
|
| 137 |
+
swal({ type: 'success', title: wp_htaccess_editor.save_success, showConfirmButton: false, timer: 1000 });
|
| 138 |
+
}
|
| 139 |
+
})
|
| 140 |
+
} else if (typeof data.success != 'undefined' && !data.success) {
|
| 141 |
+
swal({ type: 'error', title: data.data });
|
| 142 |
+
} else {
|
| 143 |
+
swal({ type: 'error', title: wp_htaccess_editor.undocumented_error });
|
| 144 |
+
}
|
| 145 |
+
}).fail(function(data) {
|
| 146 |
+
if (data.data) {
|
| 147 |
+
swal({ type: 'error', title: wp_htaccess_editor.documented_error + ' ' + data.data });
|
| 148 |
+
} else {
|
| 149 |
+
swal({ type: 'error', title: wp_htaccess_editor.undocumented_error });
|
| 150 |
+
}
|
| 151 |
+
});
|
| 152 |
+
|
| 153 |
+
return false;
|
| 154 |
+
}); // save htaccess
|
| 155 |
+
|
| 156 |
+
|
| 157 |
+
// restore htaccess backup from DB
|
| 158 |
+
$('#wphe_restore_htaccess').click(function(e) {
|
| 159 |
+
message = wp_htaccess_editor.restore_message;
|
| 160 |
+
swal({
|
| 161 |
+
title: wp_htaccess_editor.restore_title,
|
| 162 |
+
type: 'question',
|
| 163 |
+
html: message,
|
| 164 |
+
showCancelButton: true,
|
| 165 |
+
focusConfirm: false,
|
| 166 |
+
confirmButtonText: wp_htaccess_editor.restore_button,
|
| 167 |
+
cancelButtonText: wp_htaccess_editor.cancel_button,
|
| 168 |
+
confirmButtonColor: '#dd3036',
|
| 169 |
+
width: 600
|
| 170 |
+
}).then((result) => {
|
| 171 |
+
if (result.value === true) {
|
| 172 |
+
block_ui(wp_htaccess_editor.restoring);
|
| 173 |
+
$.post({
|
| 174 |
+
url: ajaxurl,
|
| 175 |
+
data: {
|
| 176 |
+
action: 'wp_htaccess_editor_do_action',
|
| 177 |
+
_ajax_nonce: wp_htaccess_editor.nonce_do_action,
|
| 178 |
+
subaction: 'restore_htaccess_from_db'
|
| 179 |
+
}
|
| 180 |
+
}).always(function(data) {
|
| 181 |
+
swal.close();
|
| 182 |
+
}).done(function(data) {
|
| 183 |
+
if (data.success) {
|
| 184 |
+
// TODO: see note on line #130
|
| 185 |
+
$(window).off('beforeunload');
|
| 186 |
+
swal({ type: 'success', title: wp_htaccess_editor.restore_success, onClose: function() { location.reload(); } });
|
| 187 |
+
} else {
|
| 188 |
+
swal({ type: 'error', title: wp_htaccess_editor.documented_error + ' ' + data.data });
|
| 189 |
+
}
|
| 190 |
+
}).fail(function(data) {
|
| 191 |
+
swal({ type: 'error', title: wp_htaccess_editor.undocumented_error });
|
| 192 |
+
});
|
| 193 |
+
return false;
|
| 194 |
+
}
|
| 195 |
+
});
|
| 196 |
+
}); // restore htaccess from DB
|
| 197 |
+
}); // onload
|
lang/cs_CZ.mo
DELETED
|
Binary file
|
lang/cs_CZ.po
DELETED
|
@@ -1,381 +0,0 @@
|
|
| 1 |
-
msgid ""
|
| 2 |
-
msgstr ""
|
| 3 |
-
"Project-Id-Version: WP Htaccess editor\n"
|
| 4 |
-
"Report-Msgid-Bugs-To: \n"
|
| 5 |
-
"POT-Creation-Date: 2012-08-23 21:43+0100\n"
|
| 6 |
-
"PO-Revision-Date: 2012-08-23 21:43+0100\n"
|
| 7 |
-
"Last-Translator: Lukenzi <lukenzi@gmail.com>\n"
|
| 8 |
-
"Language-Team: Lukenzi <lukenzi@gmail.com>\n"
|
| 9 |
-
"Language: \n"
|
| 10 |
-
"MIME-Version: 1.0\n"
|
| 11 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
| 12 |
-
"Content-Transfer-Encoding: 8bit\n"
|
| 13 |
-
"X-Poedit-KeywordsList: _e;__\n"
|
| 14 |
-
"X-Poedit-Basepath: /opt/lampp/htdocs/wordpress/wp-content/plugins/wp-htaccess-editor/\n"
|
| 15 |
-
"X-Poedit-Language: Czech\n"
|
| 16 |
-
"X-Poedit-Country: CZECH REPUBLIC\n"
|
| 17 |
-
"X-Poedit-SourceCharset: utf-8\n"
|
| 18 |
-
"X-Poedit-SearchPath-0: .\n"
|
| 19 |
-
|
| 20 |
-
#: wp-htaccess-editor.php:77
|
| 21 |
-
#: wp-htaccess-editor.php:81
|
| 22 |
-
#: wp-htaccess-editor.php:85
|
| 23 |
-
#: wp-htaccess-editor.php:90
|
| 24 |
-
#: lib/lib.pages.php:31
|
| 25 |
-
#: lib/lib.pages.php:38
|
| 26 |
-
#: lib/lib.pages.php:45
|
| 27 |
-
msgid "Fatal error: Plugin <strong>WP Htaccess Editor</strong> is corrupted"
|
| 28 |
-
msgstr "Chyba: Plugin <strong>WP Htaccess Editor</strong> je poškozen"
|
| 29 |
-
|
| 30 |
-
#: pages/wphe-backup.php:7
|
| 31 |
-
#: lib/lib.pages.php:11
|
| 32 |
-
msgid "Backup"
|
| 33 |
-
msgstr "Záloha"
|
| 34 |
-
|
| 35 |
-
#: pages/wphe-backup.php:16
|
| 36 |
-
msgid "Unable to restore backup! Probably the wrong setting write permissions to the files."
|
| 37 |
-
msgstr "Obnovení zálohy nebylo úspěšné! Pravděpodobně jsou špatně nastavena práva k zápisu do souboru. "
|
| 38 |
-
|
| 39 |
-
#: pages/wphe-backup.php:18
|
| 40 |
-
#: pages/wphe-backup.php:38
|
| 41 |
-
msgid "The backup file is located in the <code>wp-content</code> folder."
|
| 42 |
-
msgstr "Soubor zálohy je uložen ve složce <code>wp-content</code>."
|
| 43 |
-
|
| 44 |
-
#: pages/wphe-backup.php:22
|
| 45 |
-
msgid "Backup was restored successfully"
|
| 46 |
-
msgstr "Záloha souboru byla úspěšně obnovena."
|
| 47 |
-
|
| 48 |
-
#: pages/wphe-backup.php:23
|
| 49 |
-
msgid "Old backup file was deleted successfully"
|
| 50 |
-
msgstr "Starý záložní soubor byl úspěšně odstraněn."
|
| 51 |
-
|
| 52 |
-
#: pages/wphe-backup.php:26
|
| 53 |
-
msgid "Unable to restore backup!"
|
| 54 |
-
msgstr "Nelze obnovit zálohu!"
|
| 55 |
-
|
| 56 |
-
#: pages/wphe-backup.php:28
|
| 57 |
-
msgid "This is contents of the original file, put it into a file manually"
|
| 58 |
-
msgstr "Toto je obsah původního souboru, vložte jej do souboru <code>htaccess</code> ručně."
|
| 59 |
-
|
| 60 |
-
#: pages/wphe-backup.php:36
|
| 61 |
-
msgid "Backup file was created successfully"
|
| 62 |
-
msgstr "Záložní soubor byl úspěšně vytvořen."
|
| 63 |
-
|
| 64 |
-
#: pages/wphe-backup.php:41
|
| 65 |
-
msgid "Unable to create backup! <code>wp-content</code> folder is not writeable! Change the permissions this folder manually!"
|
| 66 |
-
msgstr "Nelze vytvořit zálohu! Do složky <code>wp-content</code> nelze zapisovat, změňte oprávnění této složky!"
|
| 67 |
-
|
| 68 |
-
#: pages/wphe-backup.php:42
|
| 69 |
-
#: pages/wphe-backup.php:52
|
| 70 |
-
#: pages/wphe-dashboard.php:31
|
| 71 |
-
#: pages/wphe-dashboard.php:43
|
| 72 |
-
msgid "Due to server configuration can not change permissions on files or create new files"
|
| 73 |
-
msgstr "Kvůli nastavení serveru nelze měnit oprávnění souborů ani vytvářet nové soubory nebo mazat stávající"
|
| 74 |
-
|
| 75 |
-
#: pages/wphe-backup.php:49
|
| 76 |
-
msgid "Backup file was successfully removed"
|
| 77 |
-
msgstr "Záložní soubor byl úspěšně odstraněn."
|
| 78 |
-
|
| 79 |
-
#: pages/wphe-backup.php:51
|
| 80 |
-
msgid "Backup file could not be removed! Probably the wrong setting write permissions to the files."
|
| 81 |
-
msgstr "Záložní soubor nelze odstranit! Pravděpodobně jsou špatně nastavena práva k zápisu do souboru. "
|
| 82 |
-
|
| 83 |
-
#: pages/wphe-backup.php:63
|
| 84 |
-
msgid "Do you want to restore the backup file?"
|
| 85 |
-
msgstr "Chcete obnovit zálohu původního souboru?"
|
| 86 |
-
|
| 87 |
-
#: pages/wphe-backup.php:63
|
| 88 |
-
msgid "Restore backup »"
|
| 89 |
-
msgstr "Obnovit »"
|
| 90 |
-
|
| 91 |
-
#: pages/wphe-backup.php:72
|
| 92 |
-
msgid "Do you want to delete a backup file?"
|
| 93 |
-
msgstr "Chcete odstranit záložní soubor?"
|
| 94 |
-
|
| 95 |
-
#: pages/wphe-backup.php:72
|
| 96 |
-
#: pages/wphe-dashboard.php:25
|
| 97 |
-
msgid "Remove backup »"
|
| 98 |
-
msgstr "Odstranit zálohu »"
|
| 99 |
-
|
| 100 |
-
#: pages/wphe-backup.php:78
|
| 101 |
-
msgid "Backup file not found..."
|
| 102 |
-
msgstr "Záložní soubor nebyl nalezen..."
|
| 103 |
-
|
| 104 |
-
#: pages/wphe-backup.php:86
|
| 105 |
-
msgid "Do you want to create a new backup file?"
|
| 106 |
-
msgstr "Chcete vytvořit nový záložní soubor?"
|
| 107 |
-
|
| 108 |
-
#: pages/wphe-backup.php:86
|
| 109 |
-
msgid "Create new »"
|
| 110 |
-
msgstr "Vytvořit nový »"
|
| 111 |
-
|
| 112 |
-
#: pages/wphe-backup.php:95
|
| 113 |
-
#: pages/wphe-dashboard.php:129
|
| 114 |
-
msgid "Information about this plugin"
|
| 115 |
-
msgstr "Informace o tomto pluginu"
|
| 116 |
-
|
| 117 |
-
#: pages/wphe-backup.php:97
|
| 118 |
-
#: pages/wphe-dashboard.php:131
|
| 119 |
-
msgid "Author"
|
| 120 |
-
msgstr "Autor"
|
| 121 |
-
|
| 122 |
-
#: pages/wphe-backup.php:101
|
| 123 |
-
#: pages/wphe-dashboard.php:135
|
| 124 |
-
msgid "Translators"
|
| 125 |
-
msgstr "Překladatelé"
|
| 126 |
-
|
| 127 |
-
#: pages/wphe-backup.php:108
|
| 128 |
-
#: pages/wphe-dashboard.php:142
|
| 129 |
-
msgid "Plugin"
|
| 130 |
-
msgstr "Plugin"
|
| 131 |
-
|
| 132 |
-
#: pages/wphe-backup.php:110
|
| 133 |
-
#: pages/wphe-dashboard.php:144
|
| 134 |
-
msgid "Version:"
|
| 135 |
-
msgstr "Verze pluginu:"
|
| 136 |
-
|
| 137 |
-
#: pages/wphe-backup.php:111
|
| 138 |
-
#: pages/wphe-dashboard.php:145
|
| 139 |
-
msgid "Plugin homepage:"
|
| 140 |
-
msgstr "Domovská stránka pluginu:"
|
| 141 |
-
|
| 142 |
-
#: pages/wphe-backup.php:111
|
| 143 |
-
#: pages/wphe-dashboard.php:145
|
| 144 |
-
msgid "WordPress repository"
|
| 145 |
-
msgstr "WordPress repozitář"
|
| 146 |
-
|
| 147 |
-
#: pages/wphe-backup.php:112
|
| 148 |
-
#: pages/wphe-dashboard.php:146
|
| 149 |
-
msgid "Support:"
|
| 150 |
-
msgstr "Podpora:"
|
| 151 |
-
|
| 152 |
-
#: pages/wphe-backup.php:112
|
| 153 |
-
#: pages/wphe-dashboard.php:146
|
| 154 |
-
msgid "Forum"
|
| 155 |
-
msgstr "Fórum"
|
| 156 |
-
|
| 157 |
-
#: pages/wphe-backup.php:113
|
| 158 |
-
#: pages/wphe-dashboard.php:147
|
| 159 |
-
msgid "Support for the development:"
|
| 160 |
-
msgstr "Přispějte na další vývoj:"
|
| 161 |
-
|
| 162 |
-
#: pages/wphe-backup.php:113
|
| 163 |
-
#: pages/wphe-backup.php:124
|
| 164 |
-
#: pages/wphe-dashboard.php:147
|
| 165 |
-
#: pages/wphe-dashboard.php:158
|
| 166 |
-
#: lib/lib.ad.php:20
|
| 167 |
-
msgid "Donate"
|
| 168 |
-
msgstr "Přispějte"
|
| 169 |
-
|
| 170 |
-
#: pages/wphe-backup.php:117
|
| 171 |
-
#: pages/wphe-dashboard.php:151
|
| 172 |
-
msgid "Other plugins"
|
| 173 |
-
msgstr "Další pluginy autora"
|
| 174 |
-
|
| 175 |
-
#: pages/wphe-backup.php:119
|
| 176 |
-
#: pages/wphe-dashboard.php:153
|
| 177 |
-
msgid "System Files Editor"
|
| 178 |
-
msgstr "System Files Editor"
|
| 179 |
-
|
| 180 |
-
#: pages/wphe-backup.php:120
|
| 181 |
-
#: pages/wphe-dashboard.php:154
|
| 182 |
-
msgid "Czech support for WordPress"
|
| 183 |
-
msgstr "Česká podpora pro WordPress"
|
| 184 |
-
|
| 185 |
-
#: pages/wphe-backup.php:139
|
| 186 |
-
#: pages/wphe-dashboard.php:174
|
| 187 |
-
msgid "You do not have permission to view this page"
|
| 188 |
-
msgstr "Nemáte oprávnění k zobrazení této stránky"
|
| 189 |
-
|
| 190 |
-
#: pages/wphe-dashboard.php:17
|
| 191 |
-
msgid "File has been successfully changed"
|
| 192 |
-
msgstr "Soubor byl uložen"
|
| 193 |
-
|
| 194 |
-
#: pages/wphe-dashboard.php:19
|
| 195 |
-
msgid "You have made changes to the htaccess file. The original file was automatically backed up (in <code>wp-content</code> folder)"
|
| 196 |
-
msgstr "Provedli jste změny v htaccess souboru. Původní soubor byl automaticky zálohován (ve složce <code>wp-content</code>)"
|
| 197 |
-
|
| 198 |
-
#: pages/wphe-dashboard.php:20
|
| 199 |
-
msgid "Check the functionality of your site (the links to the articles or categories)."
|
| 200 |
-
msgstr "Vyzkoušejte funkčnost Vašeho webu (odkazy na články nebo rubriky)."
|
| 201 |
-
|
| 202 |
-
#: pages/wphe-dashboard.php:20
|
| 203 |
-
msgid "If something is not working properly restore the original file from backup"
|
| 204 |
-
msgstr "Pokud nefungují správně, obnovte zálohu původního souboru."
|
| 205 |
-
|
| 206 |
-
#: pages/wphe-dashboard.php:25
|
| 207 |
-
msgid "If everything works properly, you can delete the backup file:"
|
| 208 |
-
msgstr "Pokud vše funguje jak má, můžete záložní soubor smazat:"
|
| 209 |
-
|
| 210 |
-
#: pages/wphe-dashboard.php:25
|
| 211 |
-
#: pages/wphe-dashboard.php:66
|
| 212 |
-
msgid "or"
|
| 213 |
-
msgstr "nebo"
|
| 214 |
-
|
| 215 |
-
#: pages/wphe-dashboard.php:25
|
| 216 |
-
msgid "restore the original file from backup"
|
| 217 |
-
msgstr "obnovte zálohu původního souboru"
|
| 218 |
-
|
| 219 |
-
#: pages/wphe-dashboard.php:30
|
| 220 |
-
#: pages/wphe-dashboard.php:34
|
| 221 |
-
msgid "The file could not be saved!"
|
| 222 |
-
msgstr "Soubor nebyl uložen!"
|
| 223 |
-
|
| 224 |
-
#: pages/wphe-dashboard.php:35
|
| 225 |
-
msgid "Unable to create backup of the original file! <code>wp-content</code> folder is not writeable! Change the permissions this folder!"
|
| 226 |
-
msgstr "Nelze vytvořit zálohu původního souboru! Do složky <code>wp-content</code> nelze zapisovat, změňte oprávnění u této složky!"
|
| 227 |
-
|
| 228 |
-
#: pages/wphe-dashboard.php:42
|
| 229 |
-
msgid "Htaccess file is not created."
|
| 230 |
-
msgstr "Soubor Htaccess nebyl vytvořen."
|
| 231 |
-
|
| 232 |
-
#: pages/wphe-dashboard.php:45
|
| 233 |
-
msgid "Htaccess file was successfully created."
|
| 234 |
-
msgstr "Soubor htaccess byl úspěšně vytvořen."
|
| 235 |
-
|
| 236 |
-
#: pages/wphe-dashboard.php:46
|
| 237 |
-
msgid "View new Htaccess file"
|
| 238 |
-
msgstr "Zobrazit Htaccess soubor"
|
| 239 |
-
|
| 240 |
-
#: pages/wphe-dashboard.php:53
|
| 241 |
-
msgid "Backup file could not be removed! <code>wp-content</code> folder is not writeable! Change the permissions this folder!"
|
| 242 |
-
msgstr "Záložní soubor nelze odstranit! Složka <code>wp-content</code> nemá nastavena oprávnění pro zápis, změňte oprávnění ručně!"
|
| 243 |
-
|
| 244 |
-
#: pages/wphe-dashboard.php:55
|
| 245 |
-
msgid "Backup file has been successfully removed."
|
| 246 |
-
msgstr "Záložní soubor byl úspěšně odstraněn."
|
| 247 |
-
|
| 248 |
-
#: pages/wphe-dashboard.php:60
|
| 249 |
-
msgid "Using this editor you can easily modify your htaccess file without having to use an FTP client."
|
| 250 |
-
msgstr "Tento editor slouží k snadné úpravě vašeho htaccess souboru bez nutnosti použití FTP klienta."
|
| 251 |
-
|
| 252 |
-
#: pages/wphe-dashboard.php:61
|
| 253 |
-
msgid "<strong>WARNING:</strong> Any error in this file may cause malfunction of your site!"
|
| 254 |
-
msgstr "<strong>POZOR:</strong> Jakákoliv chyba v tomto souboru může způsobit nefunkčnost vašeho webu!"
|
| 255 |
-
|
| 256 |
-
#: pages/wphe-dashboard.php:62
|
| 257 |
-
msgid "Edit htaccess file should therefore be performed only by experienced users!"
|
| 258 |
-
msgstr "Upravovat htaccess soubor by měli provádět pouze zkušení uživatelé!"
|
| 259 |
-
|
| 260 |
-
#: pages/wphe-dashboard.php:65
|
| 261 |
-
msgid "Information for editing htaccess file"
|
| 262 |
-
msgstr "Informace pro úpravy Htaccess souboru"
|
| 263 |
-
|
| 264 |
-
#: pages/wphe-dashboard.php:66
|
| 265 |
-
msgid "For more information on possible adjustments to this file, please visit"
|
| 266 |
-
msgstr "Pro více informací o možných úpravách tohoto souboru navštivte weby"
|
| 267 |
-
|
| 268 |
-
#: pages/wphe-dashboard.php:67
|
| 269 |
-
msgid "Interesting tips and guides can also be found on "
|
| 270 |
-
msgstr "Zajímavé tipy a návody můžete nalézt také na webu"
|
| 271 |
-
|
| 272 |
-
#: pages/wphe-dashboard.php:68
|
| 273 |
-
msgid "Or use the Google search."
|
| 274 |
-
msgstr "Nebo použijte vyhledávač Google"
|
| 275 |
-
|
| 276 |
-
#: pages/wphe-dashboard.php:74
|
| 277 |
-
msgid "Htaccess file does not exists!"
|
| 278 |
-
msgstr "Soubor Htaccess neexistuje!"
|
| 279 |
-
|
| 280 |
-
#: pages/wphe-dashboard.php:82
|
| 281 |
-
#: pages/wphe-dashboard.php:91
|
| 282 |
-
msgid "Htaccess file cannot read!"
|
| 283 |
-
msgstr "Soubor Htaccess nelze přečíst!"
|
| 284 |
-
|
| 285 |
-
#: pages/wphe-dashboard.php:106
|
| 286 |
-
msgid "Content of the Htaccess file"
|
| 287 |
-
msgstr "Obsah Htaccess souboru"
|
| 288 |
-
|
| 289 |
-
#: pages/wphe-dashboard.php:108
|
| 290 |
-
msgid "Save file »"
|
| 291 |
-
msgstr "Uložit soubor »"
|
| 292 |
-
|
| 293 |
-
#: pages/wphe-dashboard.php:119
|
| 294 |
-
msgid "Create new <code>.htaccess</code> file?"
|
| 295 |
-
msgstr "Vytvořit nový <code>.htaccess</code> soubor?"
|
| 296 |
-
|
| 297 |
-
#: pages/wphe-dashboard.php:119
|
| 298 |
-
msgid "Create »"
|
| 299 |
-
msgstr "Vytvořit nový »"
|
| 300 |
-
|
| 301 |
-
#: lib/lib.wp-files.php:10
|
| 302 |
-
msgid "Plugin WP Htaccess Editor Error: File \"/wp-includes/pluggable.php\" does not exists!"
|
| 303 |
-
msgstr "Chyba v pluginu WP Htaccess Editor: Soubor \"/wp-includes/pluggable.php\" neexistuje!"
|
| 304 |
-
|
| 305 |
-
#: lib/lib.wp-files.php:18
|
| 306 |
-
msgid "Plugin WP Htaccess Editor Error: File \"/wp-includes/capabilities.php\" does not exists!"
|
| 307 |
-
msgstr "Chyba v pluginu WP Htaccess Editor: Soubor \"/wp-includes/capabilities.php\" neexistuje!"
|
| 308 |
-
|
| 309 |
-
#: lib/lib.ad.php:7
|
| 310 |
-
msgid "Plugin homepage"
|
| 311 |
-
msgstr "Web autora pluginu"
|
| 312 |
-
|
| 313 |
-
#~ msgid "The backup file was found..."
|
| 314 |
-
#~ msgstr "Záložní soubor byl nalezen..."
|
| 315 |
-
|
| 316 |
-
#~ msgid "Unlimited hosting WEDOS"
|
| 317 |
-
#~ msgstr "Neomezený hosting WEDOS"
|
| 318 |
-
|
| 319 |
-
#~ msgid "WP Htaccess Editor"
|
| 320 |
-
#~ msgstr "WP Htaccess Editor"
|
| 321 |
-
|
| 322 |
-
#~ msgid "Htaccess"
|
| 323 |
-
#~ msgstr "Htaccess"
|
| 324 |
-
|
| 325 |
-
#~ msgid "Htaccess Editor"
|
| 326 |
-
#~ msgstr "Htaccess Editor"
|
| 327 |
-
|
| 328 |
-
#~ msgid "WP Htaccess Editor - Backup"
|
| 329 |
-
#~ msgstr "WP Htaccess Editor - Záloha"
|
| 330 |
-
|
| 331 |
-
#~ msgid "Download backup file"
|
| 332 |
-
#~ msgstr "Uložit záložní soubor do PC"
|
| 333 |
-
|
| 334 |
-
#~ msgid ""
|
| 335 |
-
#~ "Unable to create backup! Probably the wrong setting write permissions to "
|
| 336 |
-
#~ "the files."
|
| 337 |
-
#~ msgstr ""
|
| 338 |
-
#~ "Vytvoření zálohy nebylo úspěšné! Pravděpodobně jsou špatně nastavena "
|
| 339 |
-
#~ "práva k zápisu do souboru. "
|
| 340 |
-
|
| 341 |
-
#~ msgid "Access denied"
|
| 342 |
-
#~ msgstr "Přístup odepřen"
|
| 343 |
-
|
| 344 |
-
#~ msgid ""
|
| 345 |
-
#~ "The file could not be saved! Probably the wrong setting read permissions "
|
| 346 |
-
#~ "to the files"
|
| 347 |
-
#~ msgstr ""
|
| 348 |
-
#~ "Soubor nebyl uložen! Pravděpodobně jsou špatně nastavena práva k zápisu "
|
| 349 |
-
#~ "do souboru. "
|
| 350 |
-
|
| 351 |
-
#~ msgid ""
|
| 352 |
-
#~ "Htaccess file is not created. Probably the wrong setting read permissions "
|
| 353 |
-
#~ "to the files"
|
| 354 |
-
#~ msgstr ""
|
| 355 |
-
#~ "Soubor Htaccess nebyl vytvořen! Pravděpodobně jsou špatně nastavena práva "
|
| 356 |
-
#~ "k zápisu do souboru. "
|
| 357 |
-
|
| 358 |
-
#~ msgid ""
|
| 359 |
-
#~ "Backup file could not be removed! Probably the wrong setting read "
|
| 360 |
-
#~ "permissions to the files"
|
| 361 |
-
#~ msgstr ""
|
| 362 |
-
#~ "Záložní soubor se nepodařilo odstranit! Pravděpodobně jsou špatně "
|
| 363 |
-
#~ "nastavena práva k zápisu do souboru. "
|
| 364 |
-
|
| 365 |
-
#~ msgid "Htaccess file not found!"
|
| 366 |
-
#~ msgstr "Htaccess soubor nebyl nalezen!"
|
| 367 |
-
|
| 368 |
-
#~ msgid "Htaccess file found..."
|
| 369 |
-
#~ msgstr "Htaccess soubor byl nalezen..."
|
| 370 |
-
|
| 371 |
-
#~ msgid "Htaccess file is empty..."
|
| 372 |
-
#~ msgstr "Htaccess soubor je prázdný..."
|
| 373 |
-
|
| 374 |
-
#~ msgid "Htaccess file is not readable, probably does not exist"
|
| 375 |
-
#~ msgstr "Htaccess soubor nelze přečíst, pravděpodobně neexistuje"
|
| 376 |
-
|
| 377 |
-
#~ msgid "URL:"
|
| 378 |
-
#~ msgstr "Web pluginu:"
|
| 379 |
-
|
| 380 |
-
#~ msgid "Feedback:"
|
| 381 |
-
#~ msgstr "Hlášení chyb:"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lang/default.po
DELETED
|
@@ -1,398 +0,0 @@
|
|
| 1 |
-
msgid ""
|
| 2 |
-
msgstr ""
|
| 3 |
-
"Project-Id-Version: WP Htaccess editor\n"
|
| 4 |
-
"Report-Msgid-Bugs-To: \n"
|
| 5 |
-
"POT-Creation-Date: 2012-08-23 21:25+0100\n"
|
| 6 |
-
"PO-Revision-Date: 2012-08-23 21:26+0100\n"
|
| 7 |
-
"Last-Translator: Lukenzi <lukenzi@gmail.com>\n"
|
| 8 |
-
"Language-Team: Lukenzi <lukenzi@gmail.com>\n"
|
| 9 |
-
"Language: \n"
|
| 10 |
-
"MIME-Version: 1.0\n"
|
| 11 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
| 12 |
-
"Content-Transfer-Encoding: 8bit\n"
|
| 13 |
-
"X-Poedit-KeywordsList: _e;__\n"
|
| 14 |
-
"X-Poedit-Basepath: /opt/lampp/htdocs/wordpress/wp-content/plugins/wp-htaccess-editor/\n"
|
| 15 |
-
"X-Poedit-Language: Czech\n"
|
| 16 |
-
"X-Poedit-Country: CZECH REPUBLIC\n"
|
| 17 |
-
"X-Poedit-SourceCharset: utf-8\n"
|
| 18 |
-
"X-Poedit-SearchPath-0: .\n"
|
| 19 |
-
|
| 20 |
-
#: wp-htaccess-editor.php:77
|
| 21 |
-
#: wp-htaccess-editor.php:81
|
| 22 |
-
#: wp-htaccess-editor.php:85
|
| 23 |
-
#: wp-htaccess-editor.php:90
|
| 24 |
-
#: lib/lib.pages.php:31
|
| 25 |
-
#: lib/lib.pages.php:38
|
| 26 |
-
#: lib/lib.pages.php:45
|
| 27 |
-
msgid "Fatal error: Plugin <strong>WP Htaccess Editor</strong> is corrupted"
|
| 28 |
-
msgstr ""
|
| 29 |
-
|
| 30 |
-
#: pages/wphe-backup.php:7
|
| 31 |
-
#: lib/lib.pages.php:11
|
| 32 |
-
#, fuzzy
|
| 33 |
-
msgid "Backup"
|
| 34 |
-
msgstr "Záložní"
|
| 35 |
-
|
| 36 |
-
#: pages/wphe-backup.php:16
|
| 37 |
-
msgid "Unable to restore backup! Probably the wrong setting write permissions to the files."
|
| 38 |
-
msgstr ""
|
| 39 |
-
|
| 40 |
-
#: pages/wphe-backup.php:18
|
| 41 |
-
#: pages/wphe-backup.php:38
|
| 42 |
-
msgid "The backup file is located in the <code>wp-content</code> folder."
|
| 43 |
-
msgstr ""
|
| 44 |
-
|
| 45 |
-
#: pages/wphe-backup.php:22
|
| 46 |
-
#, fuzzy
|
| 47 |
-
msgid "Backup was restored successfully"
|
| 48 |
-
msgstr "<b>{0}</b> z <b>{1}</b> lepicí poznámky bylo úspěšně importováno."
|
| 49 |
-
|
| 50 |
-
#: pages/wphe-backup.php:23
|
| 51 |
-
msgid "Old backup file was deleted successfully"
|
| 52 |
-
msgstr ""
|
| 53 |
-
|
| 54 |
-
#: pages/wphe-backup.php:26
|
| 55 |
-
#, fuzzy
|
| 56 |
-
msgid "Unable to restore backup!"
|
| 57 |
-
msgstr "nelze obnovit záložní verzi „%.250s“"
|
| 58 |
-
|
| 59 |
-
#: pages/wphe-backup.php:28
|
| 60 |
-
msgid "This is contents of the original file, put it into a file manually"
|
| 61 |
-
msgstr ""
|
| 62 |
-
|
| 63 |
-
#: pages/wphe-backup.php:36
|
| 64 |
-
msgid "Backup file was created successfully"
|
| 65 |
-
msgstr ""
|
| 66 |
-
|
| 67 |
-
#: pages/wphe-backup.php:41
|
| 68 |
-
msgid "Unable to create backup! <code>wp-content</code> folder is not writeable! Change the permissions this folder manually!"
|
| 69 |
-
msgstr ""
|
| 70 |
-
|
| 71 |
-
#: pages/wphe-backup.php:42
|
| 72 |
-
#: pages/wphe-backup.php:52
|
| 73 |
-
#: pages/wphe-dashboard.php:31
|
| 74 |
-
#: pages/wphe-dashboard.php:43
|
| 75 |
-
msgid "Due to server configuration can not change permissions on files or create new files"
|
| 76 |
-
msgstr ""
|
| 77 |
-
|
| 78 |
-
#: pages/wphe-backup.php:49
|
| 79 |
-
msgid "Backup file was successfully removed"
|
| 80 |
-
msgstr ""
|
| 81 |
-
|
| 82 |
-
#: pages/wphe-backup.php:51
|
| 83 |
-
msgid "Backup file could not be removed! Probably the wrong setting write permissions to the files."
|
| 84 |
-
msgstr ""
|
| 85 |
-
|
| 86 |
-
#: pages/wphe-backup.php:59
|
| 87 |
-
#, fuzzy
|
| 88 |
-
msgid "The backup file was found..."
|
| 89 |
-
msgstr "Soubor s nastavením „%s“ nebyl nalezen: %s"
|
| 90 |
-
|
| 91 |
-
#: pages/wphe-backup.php:66
|
| 92 |
-
#, fuzzy
|
| 93 |
-
msgid "Do you want to restore the backup file?"
|
| 94 |
-
msgstr "Chcete nahradit stávající soubor?"
|
| 95 |
-
|
| 96 |
-
#: pages/wphe-backup.php:66
|
| 97 |
-
#, fuzzy
|
| 98 |
-
msgid "Restore backup »"
|
| 99 |
-
msgstr "Odhlásit se »"
|
| 100 |
-
|
| 101 |
-
#: pages/wphe-backup.php:75
|
| 102 |
-
#, fuzzy
|
| 103 |
-
msgid "Do you want to delete a backup file?"
|
| 104 |
-
msgstr "Chcete nahradit stávající soubor?"
|
| 105 |
-
|
| 106 |
-
#: pages/wphe-backup.php:75
|
| 107 |
-
#: pages/wphe-dashboard.php:25
|
| 108 |
-
#, fuzzy
|
| 109 |
-
msgid "Remove backup »"
|
| 110 |
-
msgstr "Při zavření odst_ranit záložní soubor"
|
| 111 |
-
|
| 112 |
-
#: pages/wphe-backup.php:81
|
| 113 |
-
#, fuzzy
|
| 114 |
-
msgid "Backup file not found..."
|
| 115 |
-
msgstr "Soubor s nastavením „%s“ nebyl nalezen: %s"
|
| 116 |
-
|
| 117 |
-
#: pages/wphe-backup.php:89
|
| 118 |
-
#, fuzzy
|
| 119 |
-
msgid "Do you want to create a new backup file?"
|
| 120 |
-
msgstr "Chcete vytvořit nový archiv s těmito soubory?"
|
| 121 |
-
|
| 122 |
-
#: pages/wphe-backup.php:89
|
| 123 |
-
#, fuzzy
|
| 124 |
-
msgid "Create new »"
|
| 125 |
-
msgstr "Vytvořit nový web"
|
| 126 |
-
|
| 127 |
-
#: pages/wphe-backup.php:98
|
| 128 |
-
#: pages/wphe-dashboard.php:129
|
| 129 |
-
#, fuzzy
|
| 130 |
-
msgid "Information about this plugin"
|
| 131 |
-
msgstr "Zobrazit informace o aplikaci gthumb"
|
| 132 |
-
|
| 133 |
-
#: pages/wphe-backup.php:100
|
| 134 |
-
#: pages/wphe-dashboard.php:131
|
| 135 |
-
#, fuzzy
|
| 136 |
-
msgid "Author"
|
| 137 |
-
msgstr "Autor"
|
| 138 |
-
|
| 139 |
-
#: pages/wphe-backup.php:104
|
| 140 |
-
#: pages/wphe-dashboard.php:135
|
| 141 |
-
#, fuzzy
|
| 142 |
-
msgid "Translators"
|
| 143 |
-
msgstr "Česká lokalizace"
|
| 144 |
-
|
| 145 |
-
#: pages/wphe-backup.php:111
|
| 146 |
-
#: pages/wphe-dashboard.php:142
|
| 147 |
-
#, fuzzy
|
| 148 |
-
msgid "Plugin"
|
| 149 |
-
msgstr "Plugin"
|
| 150 |
-
|
| 151 |
-
#: pages/wphe-backup.php:113
|
| 152 |
-
#: pages/wphe-dashboard.php:144
|
| 153 |
-
#, fuzzy
|
| 154 |
-
msgid "Version:"
|
| 155 |
-
msgstr "Verze:"
|
| 156 |
-
|
| 157 |
-
#: pages/wphe-backup.php:114
|
| 158 |
-
#: pages/wphe-dashboard.php:145
|
| 159 |
-
#, fuzzy
|
| 160 |
-
msgid "Plugin homepage:"
|
| 161 |
-
msgstr "Domácí stránka pluginu »"
|
| 162 |
-
|
| 163 |
-
#: pages/wphe-backup.php:114
|
| 164 |
-
#: pages/wphe-dashboard.php:145
|
| 165 |
-
#, fuzzy
|
| 166 |
-
msgid "WordPress repository"
|
| 167 |
-
msgstr "Přid_at zdroj"
|
| 168 |
-
|
| 169 |
-
#: pages/wphe-backup.php:115
|
| 170 |
-
#: pages/wphe-dashboard.php:146
|
| 171 |
-
#, fuzzy
|
| 172 |
-
msgid "Support:"
|
| 173 |
-
msgstr "Fórum podpory"
|
| 174 |
-
|
| 175 |
-
#: pages/wphe-backup.php:115
|
| 176 |
-
#: pages/wphe-dashboard.php:146
|
| 177 |
-
#, fuzzy
|
| 178 |
-
msgid "Forum"
|
| 179 |
-
msgstr "Online fórum..."
|
| 180 |
-
|
| 181 |
-
#: pages/wphe-backup.php:116
|
| 182 |
-
#: pages/wphe-dashboard.php:147
|
| 183 |
-
#, fuzzy
|
| 184 |
-
msgid "Support for the development:"
|
| 185 |
-
msgstr "Nástroje na vývoj softwaru"
|
| 186 |
-
|
| 187 |
-
#: pages/wphe-backup.php:116
|
| 188 |
-
#: pages/wphe-backup.php:127
|
| 189 |
-
#: pages/wphe-dashboard.php:147
|
| 190 |
-
#: pages/wphe-dashboard.php:158
|
| 191 |
-
#: lib/lib.ad.php:20
|
| 192 |
-
msgid "Donate"
|
| 193 |
-
msgstr ""
|
| 194 |
-
|
| 195 |
-
#: pages/wphe-backup.php:120
|
| 196 |
-
#: pages/wphe-dashboard.php:151
|
| 197 |
-
#, fuzzy
|
| 198 |
-
msgid "Other plugins"
|
| 199 |
-
msgstr "Instalace pluginů"
|
| 200 |
-
|
| 201 |
-
#: pages/wphe-backup.php:122
|
| 202 |
-
#: pages/wphe-dashboard.php:153
|
| 203 |
-
#, fuzzy
|
| 204 |
-
msgid "System Files Editor"
|
| 205 |
-
msgstr "Editor systému nastavení MateConf."
|
| 206 |
-
|
| 207 |
-
#: pages/wphe-backup.php:123
|
| 208 |
-
#: pages/wphe-dashboard.php:154
|
| 209 |
-
#, fuzzy
|
| 210 |
-
msgid "Czech support for WordPress"
|
| 211 |
-
msgstr "http://www.separatista.net/forum/"
|
| 212 |
-
|
| 213 |
-
#: pages/wphe-backup.php:142
|
| 214 |
-
#: pages/wphe-dashboard.php:174
|
| 215 |
-
#, fuzzy
|
| 216 |
-
msgid "You do not have permission to view this page"
|
| 217 |
-
msgstr "Nemáte dostatečné oprávnění pro úpravy tohoto uživatele."
|
| 218 |
-
|
| 219 |
-
#: pages/wphe-dashboard.php:17
|
| 220 |
-
#, fuzzy
|
| 221 |
-
msgid "File has been successfully changed"
|
| 222 |
-
msgstr "Dříve otevřený soubor byl změněn."
|
| 223 |
-
|
| 224 |
-
#: pages/wphe-dashboard.php:19
|
| 225 |
-
msgid "You have made changes to the htaccess file. The original file was automatically backed up (in <code>wp-content</code> folder)"
|
| 226 |
-
msgstr ""
|
| 227 |
-
|
| 228 |
-
#: pages/wphe-dashboard.php:20
|
| 229 |
-
msgid "Check the functionality of your site (the links to the articles or categories)."
|
| 230 |
-
msgstr ""
|
| 231 |
-
|
| 232 |
-
#: pages/wphe-dashboard.php:20
|
| 233 |
-
#, fuzzy
|
| 234 |
-
msgid "If something is not working properly restore the original file from backup"
|
| 235 |
-
msgstr "Ze zálohy nelze obnovit nastavení displeje"
|
| 236 |
-
|
| 237 |
-
#: pages/wphe-dashboard.php:25
|
| 238 |
-
msgid "If everything works properly, you can delete the backup file:"
|
| 239 |
-
msgstr ""
|
| 240 |
-
|
| 241 |
-
#: pages/wphe-dashboard.php:25
|
| 242 |
-
#: pages/wphe-dashboard.php:66
|
| 243 |
-
#, fuzzy
|
| 244 |
-
msgid "or"
|
| 245 |
-
msgstr "nebo"
|
| 246 |
-
|
| 247 |
-
#: pages/wphe-dashboard.php:25
|
| 248 |
-
#, fuzzy
|
| 249 |
-
msgid "restore the original file from backup"
|
| 250 |
-
msgstr "Ze zálohy nelze obnovit nastavení displeje"
|
| 251 |
-
|
| 252 |
-
#: pages/wphe-dashboard.php:30
|
| 253 |
-
#: pages/wphe-dashboard.php:34
|
| 254 |
-
#, fuzzy
|
| 255 |
-
msgid "The file could not be saved!"
|
| 256 |
-
msgstr "Soubor s nastaveními nemohl být uložen"
|
| 257 |
-
|
| 258 |
-
#: pages/wphe-dashboard.php:35
|
| 259 |
-
msgid "Unable to create backup of the original file! <code>wp-content</code> folder is not writeable! Change the permissions this folder!"
|
| 260 |
-
msgstr ""
|
| 261 |
-
|
| 262 |
-
#: pages/wphe-dashboard.php:42
|
| 263 |
-
#, fuzzy
|
| 264 |
-
msgid "Htaccess file is not created."
|
| 265 |
-
msgstr "Soubor není platným souborem .desktop"
|
| 266 |
-
|
| 267 |
-
#: pages/wphe-dashboard.php:45
|
| 268 |
-
msgid "Htaccess file was successfully created."
|
| 269 |
-
msgstr ""
|
| 270 |
-
|
| 271 |
-
#: pages/wphe-dashboard.php:46
|
| 272 |
-
#, fuzzy
|
| 273 |
-
msgid "View new Htaccess file"
|
| 274 |
-
msgstr "_Uložit nový soubor jako:"
|
| 275 |
-
|
| 276 |
-
#: pages/wphe-dashboard.php:53
|
| 277 |
-
msgid "Backup file could not be removed! <code>wp-content</code> folder is not writeable! Change the permissions this folder!"
|
| 278 |
-
msgstr ""
|
| 279 |
-
|
| 280 |
-
#: pages/wphe-dashboard.php:55
|
| 281 |
-
msgid "Backup file has been successfully removed."
|
| 282 |
-
msgstr ""
|
| 283 |
-
|
| 284 |
-
#: pages/wphe-dashboard.php:60
|
| 285 |
-
msgid "Using this editor you can easily modify your htaccess file without having to use an FTP client."
|
| 286 |
-
msgstr ""
|
| 287 |
-
|
| 288 |
-
#: pages/wphe-dashboard.php:61
|
| 289 |
-
msgid "<strong>WARNING:</strong> Any error in this file may cause malfunction of your site!"
|
| 290 |
-
msgstr ""
|
| 291 |
-
|
| 292 |
-
#: pages/wphe-dashboard.php:62
|
| 293 |
-
msgid "Edit htaccess file should therefore be performed only by experienced users!"
|
| 294 |
-
msgstr ""
|
| 295 |
-
|
| 296 |
-
#: pages/wphe-dashboard.php:65
|
| 297 |
-
#, fuzzy
|
| 298 |
-
msgid "Information for editing htaccess file"
|
| 299 |
-
msgstr "Nemohu získat informace o souboru '%s': %s"
|
| 300 |
-
|
| 301 |
-
#: pages/wphe-dashboard.php:66
|
| 302 |
-
msgid "For more information on possible adjustments to this file, please visit"
|
| 303 |
-
msgstr ""
|
| 304 |
-
|
| 305 |
-
#: pages/wphe-dashboard.php:67
|
| 306 |
-
msgid "Interesting tips and guides can also be found on "
|
| 307 |
-
msgstr ""
|
| 308 |
-
|
| 309 |
-
#: pages/wphe-dashboard.php:68
|
| 310 |
-
#, fuzzy
|
| 311 |
-
msgid "Or use the Google search."
|
| 312 |
-
msgstr "Vyhledat <i>%(name)s</i> pomocí <b>Google</b>"
|
| 313 |
-
|
| 314 |
-
#: pages/wphe-dashboard.php:74
|
| 315 |
-
#, fuzzy
|
| 316 |
-
msgid "Htaccess file does not exists!"
|
| 317 |
-
msgstr "Plugin neexistuje."
|
| 318 |
-
|
| 319 |
-
#: pages/wphe-dashboard.php:82
|
| 320 |
-
#: pages/wphe-dashboard.php:91
|
| 321 |
-
#, fuzzy
|
| 322 |
-
msgid "Htaccess file cannot read!"
|
| 323 |
-
msgstr ""
|
| 324 |
-
"Nemůžu přečíst zvkukový soubor:\n"
|
| 325 |
-
"%s"
|
| 326 |
-
|
| 327 |
-
#: pages/wphe-dashboard.php:106
|
| 328 |
-
#, fuzzy
|
| 329 |
-
msgid "Content of the Htaccess file"
|
| 330 |
-
msgstr "Chyba při čtení obsahu souboru '%s'"
|
| 331 |
-
|
| 332 |
-
#: pages/wphe-dashboard.php:108
|
| 333 |
-
#, fuzzy
|
| 334 |
-
msgid "Save file »"
|
| 335 |
-
msgstr "Uložit aktuální soubor"
|
| 336 |
-
|
| 337 |
-
#: pages/wphe-dashboard.php:119
|
| 338 |
-
#, fuzzy
|
| 339 |
-
msgid "Create new <code>.htaccess</code> file?"
|
| 340 |
-
msgstr "Vytvořit nový soubor ze šablony"
|
| 341 |
-
|
| 342 |
-
#: pages/wphe-dashboard.php:119
|
| 343 |
-
#, fuzzy
|
| 344 |
-
msgid "Create »"
|
| 345 |
-
msgstr "Další »"
|
| 346 |
-
|
| 347 |
-
#: lib/lib.wp-files.php:10
|
| 348 |
-
msgid "Plugin WP Htaccess Editor Error: File \"/wp-includes/pluggable.php\" does not exists!"
|
| 349 |
-
msgstr ""
|
| 350 |
-
|
| 351 |
-
#: lib/lib.wp-files.php:18
|
| 352 |
-
msgid "Plugin WP Htaccess Editor Error: File \"/wp-includes/capabilities.php\" does not exists!"
|
| 353 |
-
msgstr ""
|
| 354 |
-
|
| 355 |
-
#: lib/lib.ad.php:7
|
| 356 |
-
#, fuzzy
|
| 357 |
-
msgid "Plugin homepage"
|
| 358 |
-
msgstr "Domácí stránka pluginu »"
|
| 359 |
-
|
| 360 |
-
#, fuzzy
|
| 361 |
-
#~ msgid "Unlimited hosting WEDOS"
|
| 362 |
-
#~ msgstr "Zadejte 0 pro neomezenou rychlost."
|
| 363 |
-
|
| 364 |
-
#, fuzzy
|
| 365 |
-
#~ msgid "WP Htaccess Editor"
|
| 366 |
-
#~ msgstr "Modernizované API pro editor"
|
| 367 |
-
|
| 368 |
-
#, fuzzy
|
| 369 |
-
#~ msgid "Htaccess Editor"
|
| 370 |
-
#~ msgstr "Stylování vizuálního editoru"
|
| 371 |
-
|
| 372 |
-
#, fuzzy
|
| 373 |
-
#~ msgid "Download backup file"
|
| 374 |
-
#~ msgstr "Nezdařila se záloha souboru"
|
| 375 |
-
|
| 376 |
-
#, fuzzy
|
| 377 |
-
#~ msgid "Access denied"
|
| 378 |
-
#~ msgstr "Přístup zamítnut"
|
| 379 |
-
|
| 380 |
-
#, fuzzy
|
| 381 |
-
#~ msgid "Htaccess file not found!"
|
| 382 |
-
#~ msgstr "Soubor s nastavením „%s“ nebyl nalezen: %s"
|
| 383 |
-
|
| 384 |
-
#, fuzzy
|
| 385 |
-
#~ msgid "Htaccess file found..."
|
| 386 |
-
#~ msgstr "Soubor nebyl nalezen"
|
| 387 |
-
|
| 388 |
-
#, fuzzy
|
| 389 |
-
#~ msgid "Htaccess file is empty..."
|
| 390 |
-
#~ msgstr "Soubor s nastavením „%s“ je prázdný"
|
| 391 |
-
|
| 392 |
-
#, fuzzy
|
| 393 |
-
#~ msgid "URL:"
|
| 394 |
-
#~ msgstr "URL:"
|
| 395 |
-
|
| 396 |
-
#, fuzzy
|
| 397 |
-
#~ msgid "Feedback:"
|
| 398 |
-
#~ msgstr "Přání a stížnosti"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lang/es_ES.mo
DELETED
|
Binary file
|
lang/es_ES.po
DELETED
|
@@ -1,417 +0,0 @@
|
|
| 1 |
-
msgid ""
|
| 2 |
-
msgstr ""
|
| 3 |
-
"Project-Id-Version: WP Htaccess editor\n"
|
| 4 |
-
"Report-Msgid-Bugs-To: \n"
|
| 5 |
-
"POT-Creation-Date: 2012-08-23 21:43+0100\n"
|
| 6 |
-
"PO-Revision-Date: 2014-02-06 14:30+0100\n"
|
| 7 |
-
"Last-Translator: jelena kovacevic <jecajeca260@gmail.com>\n"
|
| 8 |
-
"Language-Team: Lukenzi <lukenzi@gmail.com>\n"
|
| 9 |
-
"Language: cs_CZ\n"
|
| 10 |
-
"MIME-Version: 1.0\n"
|
| 11 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
| 12 |
-
"Content-Transfer-Encoding: 8bit\n"
|
| 13 |
-
"X-Poedit-KeywordsList: _e;__\n"
|
| 14 |
-
"X-Poedit-Basepath: /opt/lampp/htdocs/wordpress/wp-content/plugins/wp-"
|
| 15 |
-
"htaccess-editor/\n"
|
| 16 |
-
"X-Poedit-SourceCharset: utf-8\n"
|
| 17 |
-
"X-Generator: Poedit 1.5.5\n"
|
| 18 |
-
"X-Poedit-SearchPath-0: .\n"
|
| 19 |
-
|
| 20 |
-
#: wp-htaccess-editor.php:77 wp-htaccess-editor.php:81
|
| 21 |
-
#: wp-htaccess-editor.php:85 wp-htaccess-editor.php:90 lib/lib.pages.php:31
|
| 22 |
-
#: lib/lib.pages.php:38 lib/lib.pages.php:45
|
| 23 |
-
msgid "Fatal error: Plugin <strong>WP Htaccess Editor</strong> is corrupted"
|
| 24 |
-
msgstr "Error Fatal: Plugin <strong> WP htaccess Editor </strong> está dañado"
|
| 25 |
-
|
| 26 |
-
#: pages/wphe-backup.php:7 lib/lib.pages.php:11
|
| 27 |
-
msgid "Backup"
|
| 28 |
-
msgstr "Copia de seguridad"
|
| 29 |
-
|
| 30 |
-
#: pages/wphe-backup.php:16
|
| 31 |
-
msgid ""
|
| 32 |
-
"Unable to restore backup! Probably the wrong setting write permissions to "
|
| 33 |
-
"the files."
|
| 34 |
-
msgstr ""
|
| 35 |
-
"¡No se puede restaurar copia de seguridad! Probablemente el ajuste "
|
| 36 |
-
"incorrecto de permisos de escritura a los archivos."
|
| 37 |
-
|
| 38 |
-
#: pages/wphe-backup.php:18 pages/wphe-backup.php:38
|
| 39 |
-
msgid "The backup file is located in the <code>wp-content</code> folder."
|
| 40 |
-
msgstr ""
|
| 41 |
-
"El archivo de copia de seguridad se encuentra en la carpeta <code> wp-"
|
| 42 |
-
"content </code>."
|
| 43 |
-
|
| 44 |
-
#: pages/wphe-backup.php:22
|
| 45 |
-
msgid "Backup was restored successfully"
|
| 46 |
-
msgstr "La copia de seguridad se restauró con éxito"
|
| 47 |
-
|
| 48 |
-
#: pages/wphe-backup.php:23
|
| 49 |
-
msgid "Old backup file was deleted successfully"
|
| 50 |
-
msgstr "Archivo de copia de seguridad viejo se ha eliminado correctamente"
|
| 51 |
-
|
| 52 |
-
#: pages/wphe-backup.php:26
|
| 53 |
-
msgid "Unable to restore backup!"
|
| 54 |
-
msgstr "¡No se puede restaurar copia de seguridad!"
|
| 55 |
-
|
| 56 |
-
#: pages/wphe-backup.php:28
|
| 57 |
-
msgid "This is contents of the original file, put it into a file manually"
|
| 58 |
-
msgstr ""
|
| 59 |
-
"Este es el contenido del archivo original, póngalo en un archivo de forma "
|
| 60 |
-
"manual"
|
| 61 |
-
|
| 62 |
-
#: pages/wphe-backup.php:36
|
| 63 |
-
msgid "Backup file was created successfully"
|
| 64 |
-
msgstr "Archivo de Copia de seguridad fue creado con éxito"
|
| 65 |
-
|
| 66 |
-
#: pages/wphe-backup.php:41
|
| 67 |
-
msgid ""
|
| 68 |
-
"Unable to create backup! <code>wp-content</code> folder is not writeable! "
|
| 69 |
-
"Change the permissions this folder manually!"
|
| 70 |
-
msgstr ""
|
| 71 |
-
"¡No se puede crear la copia de seguridad! <code> wp-content </code> ¡La "
|
| 72 |
-
"carpeta no se puede escribir! ¡Cambie los permisos de esta carpeta "
|
| 73 |
-
"manualmente!"
|
| 74 |
-
|
| 75 |
-
#: pages/wphe-backup.php:42 pages/wphe-backup.php:52
|
| 76 |
-
#: pages/wphe-dashboard.php:31 pages/wphe-dashboard.php:43
|
| 77 |
-
msgid ""
|
| 78 |
-
"Due to server configuration can not change permissions on files or create "
|
| 79 |
-
"new files"
|
| 80 |
-
msgstr ""
|
| 81 |
-
"Debido a la configuración del servidor no se pueden cambiar los permisos de "
|
| 82 |
-
"los archivos o crear nuevos archivos"
|
| 83 |
-
|
| 84 |
-
#: pages/wphe-backup.php:49
|
| 85 |
-
msgid "Backup file was successfully removed"
|
| 86 |
-
msgstr "El archivo de copia de seguridad se ha eliminado correctamente"
|
| 87 |
-
|
| 88 |
-
#: pages/wphe-backup.php:51
|
| 89 |
-
msgid ""
|
| 90 |
-
"Backup file could not be removed! Probably the wrong setting write "
|
| 91 |
-
"permissions to the files."
|
| 92 |
-
msgstr ""
|
| 93 |
-
"¡El archivo de copia de seguridad no puede ser eliminado! Probablemente el "
|
| 94 |
-
"ajuste incorrecto de permisos de escritura a los archivos."
|
| 95 |
-
|
| 96 |
-
#: pages/wphe-backup.php:63
|
| 97 |
-
msgid "Do you want to restore the backup file?"
|
| 98 |
-
msgstr "¿Usted desea restaurar el archivo de copia de seguridad?"
|
| 99 |
-
|
| 100 |
-
#: pages/wphe-backup.php:63
|
| 101 |
-
msgid "Restore backup »"
|
| 102 |
-
msgstr "Restaurar copia de seguridad »"
|
| 103 |
-
|
| 104 |
-
#: pages/wphe-backup.php:72
|
| 105 |
-
msgid "Do you want to delete a backup file?"
|
| 106 |
-
msgstr "¿Quiere eliminar un archivo de copia de seguridad?"
|
| 107 |
-
|
| 108 |
-
#: pages/wphe-backup.php:72 pages/wphe-dashboard.php:25
|
| 109 |
-
msgid "Remove backup »"
|
| 110 |
-
msgstr "Eliminar copia de seguridad »"
|
| 111 |
-
|
| 112 |
-
#: pages/wphe-backup.php:78
|
| 113 |
-
msgid "Backup file not found..."
|
| 114 |
-
msgstr "El archivo de copia de seguridad no se encuentra ..."
|
| 115 |
-
|
| 116 |
-
#: pages/wphe-backup.php:86
|
| 117 |
-
msgid "Do you want to create a new backup file?"
|
| 118 |
-
msgstr "¿Quiere crear un nuevo archivo de copia de seguridad?"
|
| 119 |
-
|
| 120 |
-
#: pages/wphe-backup.php:86
|
| 121 |
-
msgid "Create new »"
|
| 122 |
-
msgstr "Crear nuevo »"
|
| 123 |
-
|
| 124 |
-
#: pages/wphe-backup.php:95 pages/wphe-dashboard.php:129
|
| 125 |
-
msgid "Information about this plugin"
|
| 126 |
-
msgstr "Información sobre este plugin"
|
| 127 |
-
|
| 128 |
-
#: pages/wphe-backup.php:97 pages/wphe-dashboard.php:131
|
| 129 |
-
msgid "Author"
|
| 130 |
-
msgstr "Autor"
|
| 131 |
-
|
| 132 |
-
#: pages/wphe-backup.php:101 pages/wphe-dashboard.php:135
|
| 133 |
-
msgid "Translators"
|
| 134 |
-
msgstr "Traductores"
|
| 135 |
-
|
| 136 |
-
#: pages/wphe-backup.php:108 pages/wphe-dashboard.php:142
|
| 137 |
-
msgid "Plugin"
|
| 138 |
-
msgstr "Plugin"
|
| 139 |
-
|
| 140 |
-
#: pages/wphe-backup.php:110 pages/wphe-dashboard.php:144
|
| 141 |
-
msgid "Version:"
|
| 142 |
-
msgstr "Versión:"
|
| 143 |
-
|
| 144 |
-
#: pages/wphe-backup.php:111 pages/wphe-dashboard.php:145
|
| 145 |
-
msgid "Plugin homepage:"
|
| 146 |
-
msgstr "Página de inicio Plugin:"
|
| 147 |
-
|
| 148 |
-
#: pages/wphe-backup.php:111 pages/wphe-dashboard.php:145
|
| 149 |
-
msgid "WordPress repository"
|
| 150 |
-
msgstr "Repositorio WordPress"
|
| 151 |
-
|
| 152 |
-
#: pages/wphe-backup.php:112 pages/wphe-dashboard.php:146
|
| 153 |
-
msgid "Support:"
|
| 154 |
-
msgstr "Apoyo:"
|
| 155 |
-
|
| 156 |
-
#: pages/wphe-backup.php:112 pages/wphe-dashboard.php:146
|
| 157 |
-
msgid "Forum"
|
| 158 |
-
msgstr "Foro"
|
| 159 |
-
|
| 160 |
-
#: pages/wphe-backup.php:113 pages/wphe-dashboard.php:147
|
| 161 |
-
msgid "Support for the development:"
|
| 162 |
-
msgstr "Apoyo para el desarrollo:"
|
| 163 |
-
|
| 164 |
-
#: pages/wphe-backup.php:113 pages/wphe-backup.php:124
|
| 165 |
-
#: pages/wphe-dashboard.php:147 pages/wphe-dashboard.php:158 lib/lib.ad.php:20
|
| 166 |
-
msgid "Donate"
|
| 167 |
-
msgstr "Donar"
|
| 168 |
-
|
| 169 |
-
#: pages/wphe-backup.php:117 pages/wphe-dashboard.php:151
|
| 170 |
-
msgid "Other plugins"
|
| 171 |
-
msgstr "Otros plugins"
|
| 172 |
-
|
| 173 |
-
#: pages/wphe-backup.php:119 pages/wphe-dashboard.php:153
|
| 174 |
-
msgid "System Files Editor"
|
| 175 |
-
msgstr "System Files Editor"
|
| 176 |
-
|
| 177 |
-
#: pages/wphe-backup.php:120 pages/wphe-dashboard.php:154
|
| 178 |
-
msgid "Czech support for WordPress"
|
| 179 |
-
msgstr "Soporte Checo para WordPress"
|
| 180 |
-
|
| 181 |
-
#: pages/wphe-backup.php:139 pages/wphe-dashboard.php:174
|
| 182 |
-
msgid "You do not have permission to view this page"
|
| 183 |
-
msgstr "No tienes permiso para ver esta página"
|
| 184 |
-
|
| 185 |
-
#: pages/wphe-dashboard.php:17
|
| 186 |
-
msgid "File has been successfully changed"
|
| 187 |
-
msgstr "El archivo ha cambiado correctamente"
|
| 188 |
-
|
| 189 |
-
#: pages/wphe-dashboard.php:19
|
| 190 |
-
msgid ""
|
| 191 |
-
"You have made changes to the htaccess file. The original file was "
|
| 192 |
-
"automatically backed up (in <code>wp-content</code> folder)"
|
| 193 |
-
msgstr ""
|
| 194 |
-
"Usted ha realizado cambios en el archivo htaccess. El archivo original se "
|
| 195 |
-
"copia automáticamente (en <code> wp-content </code>)"
|
| 196 |
-
|
| 197 |
-
#: pages/wphe-dashboard.php:20
|
| 198 |
-
msgid ""
|
| 199 |
-
"Check the functionality of your site (the links to the articles or "
|
| 200 |
-
"categories)."
|
| 201 |
-
msgstr ""
|
| 202 |
-
"Compruebe la funcionalidad de su sitio web (los enlaces a los artículos o "
|
| 203 |
-
"categorías)."
|
| 204 |
-
|
| 205 |
-
#: pages/wphe-dashboard.php:20
|
| 206 |
-
msgid ""
|
| 207 |
-
"If something is not working properly restore the original file from backup"
|
| 208 |
-
msgstr ""
|
| 209 |
-
"Si algo no está funcionando adecuadamente restaurar el archivo original "
|
| 210 |
-
"desde la copia de seguridad"
|
| 211 |
-
|
| 212 |
-
#: pages/wphe-dashboard.php:25
|
| 213 |
-
msgid "If everything works properly, you can delete the backup file:"
|
| 214 |
-
msgstr ""
|
| 215 |
-
"Si todo funciona correctamente, puede eliminar el archivo de copia de "
|
| 216 |
-
"seguridad:"
|
| 217 |
-
|
| 218 |
-
#: pages/wphe-dashboard.php:25 pages/wphe-dashboard.php:66
|
| 219 |
-
msgid "or"
|
| 220 |
-
msgstr "O"
|
| 221 |
-
|
| 222 |
-
#: pages/wphe-dashboard.php:25
|
| 223 |
-
msgid "restore the original file from backup"
|
| 224 |
-
msgstr "restaurar el archivo original desde la copia de seguridad"
|
| 225 |
-
|
| 226 |
-
#: pages/wphe-dashboard.php:30 pages/wphe-dashboard.php:34
|
| 227 |
-
msgid "The file could not be saved!"
|
| 228 |
-
msgstr "¡El archivo no se puede guardar!"
|
| 229 |
-
|
| 230 |
-
#: pages/wphe-dashboard.php:35
|
| 231 |
-
msgid ""
|
| 232 |
-
"Unable to create backup of the original file! <code>wp-content</code> folder "
|
| 233 |
-
"is not writeable! Change the permissions this folder!"
|
| 234 |
-
msgstr ""
|
| 235 |
-
"No se puede crear la copia de seguridad del archivo original <code> wp-"
|
| 236 |
-
"content </code> ¡La carpeta no se puede escribir! ¡Cambie los permisos de "
|
| 237 |
-
"esta carpeta!"
|
| 238 |
-
|
| 239 |
-
#: pages/wphe-dashboard.php:42
|
| 240 |
-
msgid "Htaccess file is not created."
|
| 241 |
-
msgstr "No se crea el archivo htaccess."
|
| 242 |
-
|
| 243 |
-
#: pages/wphe-dashboard.php:45
|
| 244 |
-
msgid "Htaccess file was successfully created."
|
| 245 |
-
msgstr "El archivo Htaccess sido creado con éxito."
|
| 246 |
-
|
| 247 |
-
#: pages/wphe-dashboard.php:46
|
| 248 |
-
msgid "View new Htaccess file"
|
| 249 |
-
msgstr "Ver nuevo archivo htaccess"
|
| 250 |
-
|
| 251 |
-
#: pages/wphe-dashboard.php:53
|
| 252 |
-
msgid ""
|
| 253 |
-
"Backup file could not be removed! <code>wp-content</code> folder is not "
|
| 254 |
-
"writeable! Change the permissions this folder!"
|
| 255 |
-
msgstr ""
|
| 256 |
-
"¡El archivo de copia de seguridad no puede ser eliminado! <code> wp-content "
|
| 257 |
-
"</code> ¡La carpeta no se puede escribir! ¡Cambie los permisos de esta "
|
| 258 |
-
"carpeta!"
|
| 259 |
-
|
| 260 |
-
#: pages/wphe-dashboard.php:55
|
| 261 |
-
msgid "Backup file has been successfully removed."
|
| 262 |
-
msgstr "El archivo de copia de seguridad se ha eliminado con éxito"
|
| 263 |
-
|
| 264 |
-
#: pages/wphe-dashboard.php:60
|
| 265 |
-
msgid ""
|
| 266 |
-
"Using this editor you can easily modify your htaccess file without having to "
|
| 267 |
-
"use an FTP client."
|
| 268 |
-
msgstr ""
|
| 269 |
-
"El uso de este editor puede modificar fácilmente su archivo htaccess sin "
|
| 270 |
-
"tener que utilizar un cliente de FTP."
|
| 271 |
-
|
| 272 |
-
#: pages/wphe-dashboard.php:61
|
| 273 |
-
msgid ""
|
| 274 |
-
"<strong>WARNING:</strong> Any error in this file may cause malfunction of "
|
| 275 |
-
"your site!"
|
| 276 |
-
msgstr ""
|
| 277 |
-
"<strong>ADVERTENCIA:</strong> ¡Cualquier error en este archivo podrían "
|
| 278 |
-
"causar un mal funcionamiento de su sitio!"
|
| 279 |
-
|
| 280 |
-
#: pages/wphe-dashboard.php:62
|
| 281 |
-
msgid ""
|
| 282 |
-
"Edit htaccess file should therefore be performed only by experienced users!"
|
| 283 |
-
msgstr ""
|
| 284 |
-
"Por lo tanto, ¡editar el archivo htaccess sólo debe ser efectuado por "
|
| 285 |
-
"usuarios experimentados!"
|
| 286 |
-
|
| 287 |
-
#: pages/wphe-dashboard.php:65
|
| 288 |
-
msgid "Information for editing htaccess file"
|
| 289 |
-
msgstr "Información para la edición del archivo htaccess"
|
| 290 |
-
|
| 291 |
-
#: pages/wphe-dashboard.php:66
|
| 292 |
-
msgid "For more information on possible adjustments to this file, please visit"
|
| 293 |
-
msgstr ""
|
| 294 |
-
"Para obtener más información sobre los posibles ajustes en el archivo, por "
|
| 295 |
-
"favor visite"
|
| 296 |
-
|
| 297 |
-
#: pages/wphe-dashboard.php:67
|
| 298 |
-
msgid "Interesting tips and guides can also be found on "
|
| 299 |
-
msgstr "Interesantes consejos y guías también se pueden encontrar en"
|
| 300 |
-
|
| 301 |
-
#: pages/wphe-dashboard.php:68
|
| 302 |
-
msgid "Or use the Google search."
|
| 303 |
-
msgstr "O utilizar la búsqueda de Google."
|
| 304 |
-
|
| 305 |
-
#: pages/wphe-dashboard.php:74
|
| 306 |
-
msgid "Htaccess file does not exists!"
|
| 307 |
-
msgstr "¡El archivo htaccess no existe!"
|
| 308 |
-
|
| 309 |
-
#: pages/wphe-dashboard.php:82 pages/wphe-dashboard.php:91
|
| 310 |
-
msgid "Htaccess file cannot read!"
|
| 311 |
-
msgstr "¡El archivo htaccess no se puede leer!"
|
| 312 |
-
|
| 313 |
-
#: pages/wphe-dashboard.php:106
|
| 314 |
-
msgid "Content of the Htaccess file"
|
| 315 |
-
msgstr "Contenido del archivo htaccess"
|
| 316 |
-
|
| 317 |
-
#: pages/wphe-dashboard.php:108
|
| 318 |
-
msgid "Save file »"
|
| 319 |
-
msgstr "Guardar archivo »"
|
| 320 |
-
|
| 321 |
-
#: pages/wphe-dashboard.php:119
|
| 322 |
-
msgid "Create new <code>.htaccess</code> file?"
|
| 323 |
-
msgstr "¿Crear nuevo archivo<code> htaccess </code>?"
|
| 324 |
-
|
| 325 |
-
#: pages/wphe-dashboard.php:119
|
| 326 |
-
msgid "Create »"
|
| 327 |
-
msgstr "Create »"
|
| 328 |
-
|
| 329 |
-
#: lib/lib.wp-files.php:10
|
| 330 |
-
msgid ""
|
| 331 |
-
"Plugin WP Htaccess Editor Error: File \"/wp-includes/pluggable.php\" does "
|
| 332 |
-
"not exists!"
|
| 333 |
-
msgstr ""
|
| 334 |
-
"Error del Plugin WP htaccess Editor: ¡El archivo \"/ wp-includes/pluggable."
|
| 335 |
-
"php\"no existe!"
|
| 336 |
-
|
| 337 |
-
#: lib/lib.wp-files.php:18
|
| 338 |
-
msgid ""
|
| 339 |
-
"Plugin WP Htaccess Editor Error: File \"/wp-includes/capabilities.php\" does "
|
| 340 |
-
"not exists!"
|
| 341 |
-
msgstr ""
|
| 342 |
-
"Error: del Plugin WP htaccess Editor: ¡El archivo \"/wp-includes/"
|
| 343 |
-
"capabilities.php\"no existe!"
|
| 344 |
-
|
| 345 |
-
#: lib/lib.ad.php:7
|
| 346 |
-
msgid "Plugin homepage"
|
| 347 |
-
msgstr "Página de inicio del Plugin"
|
| 348 |
-
|
| 349 |
-
#~ msgid "The backup file was found..."
|
| 350 |
-
#~ msgstr "Záložní soubor byl nalezen..."
|
| 351 |
-
|
| 352 |
-
#~ msgid "Unlimited hosting WEDOS"
|
| 353 |
-
#~ msgstr "Neomezený hosting WEDOS"
|
| 354 |
-
|
| 355 |
-
#~ msgid "WP Htaccess Editor"
|
| 356 |
-
#~ msgstr "WP Htaccess Editor"
|
| 357 |
-
|
| 358 |
-
#~ msgid "Htaccess"
|
| 359 |
-
#~ msgstr "Htaccess"
|
| 360 |
-
|
| 361 |
-
#~ msgid "Htaccess Editor"
|
| 362 |
-
#~ msgstr "Htaccess Editor"
|
| 363 |
-
|
| 364 |
-
#~ msgid "WP Htaccess Editor - Backup"
|
| 365 |
-
#~ msgstr "WP Htaccess Editor - Záloha"
|
| 366 |
-
|
| 367 |
-
#~ msgid "Download backup file"
|
| 368 |
-
#~ msgstr "Uložit záložní soubor do PC"
|
| 369 |
-
|
| 370 |
-
#~ msgid ""
|
| 371 |
-
#~ "Unable to create backup! Probably the wrong setting write permissions to "
|
| 372 |
-
#~ "the files."
|
| 373 |
-
#~ msgstr ""
|
| 374 |
-
#~ "Vytvoření zálohy nebylo úspěšné! Pravděpodobně jsou špatně nastavena "
|
| 375 |
-
#~ "práva k zápisu do souboru. "
|
| 376 |
-
|
| 377 |
-
#~ msgid "Access denied"
|
| 378 |
-
#~ msgstr "Přístup odepřen"
|
| 379 |
-
|
| 380 |
-
#~ msgid ""
|
| 381 |
-
#~ "The file could not be saved! Probably the wrong setting read permissions "
|
| 382 |
-
#~ "to the files"
|
| 383 |
-
#~ msgstr ""
|
| 384 |
-
#~ "Soubor nebyl uložen! Pravděpodobně jsou špatně nastavena práva k zápisu "
|
| 385 |
-
#~ "do souboru. "
|
| 386 |
-
|
| 387 |
-
#~ msgid ""
|
| 388 |
-
#~ "Htaccess file is not created. Probably the wrong setting read permissions "
|
| 389 |
-
#~ "to the files"
|
| 390 |
-
#~ msgstr ""
|
| 391 |
-
#~ "Soubor Htaccess nebyl vytvořen! Pravděpodobně jsou špatně nastavena práva "
|
| 392 |
-
#~ "k zápisu do souboru. "
|
| 393 |
-
|
| 394 |
-
#~ msgid ""
|
| 395 |
-
#~ "Backup file could not be removed! Probably the wrong setting read "
|
| 396 |
-
#~ "permissions to the files"
|
| 397 |
-
#~ msgstr ""
|
| 398 |
-
#~ "Záložní soubor se nepodařilo odstranit! Pravděpodobně jsou špatně "
|
| 399 |
-
#~ "nastavena práva k zápisu do souboru. "
|
| 400 |
-
|
| 401 |
-
#~ msgid "Htaccess file not found!"
|
| 402 |
-
#~ msgstr "Htaccess soubor nebyl nalezen!"
|
| 403 |
-
|
| 404 |
-
#~ msgid "Htaccess file found..."
|
| 405 |
-
#~ msgstr "Htaccess soubor byl nalezen..."
|
| 406 |
-
|
| 407 |
-
#~ msgid "Htaccess file is empty..."
|
| 408 |
-
#~ msgstr "Htaccess soubor je prázdný..."
|
| 409 |
-
|
| 410 |
-
#~ msgid "Htaccess file is not readable, probably does not exist"
|
| 411 |
-
#~ msgstr "Htaccess soubor nelze přečíst, pravděpodobně neexistuje"
|
| 412 |
-
|
| 413 |
-
#~ msgid "URL:"
|
| 414 |
-
#~ msgstr "Web pluginu:"
|
| 415 |
-
|
| 416 |
-
#~ msgid "Feedback:"
|
| 417 |
-
#~ msgstr "Hlášení chyb:"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lang/index.php
DELETED
|
@@ -1,4 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
header('Location: ../../');
|
| 3 |
-
exit();
|
| 4 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
lib/index.php
DELETED
|
@@ -1,4 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
header('Location: ../../');
|
| 3 |
-
exit();
|
| 4 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
lib/lib.ad.php
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
if (!defined('ABSPATH')) die('You do not have sufficient permissions to access this file.');
|
| 3 |
-
|
| 4 |
-
/*** funkce pro zobrazení odkazu na domovskou stránku pluginu ***/
|
| 5 |
-
function WPHE_PluginLink()
|
| 6 |
-
{
|
| 7 |
-
echo '<a class="plugin-link" href="http://wordpress.org/extend/plugins/wp-htaccess-editor/" title="'.__('Plugin homepage','wphe').'" target="_blank">'.__('Plugin homepage','wphe').'</a>';
|
| 8 |
-
}
|
| 9 |
-
|
| 10 |
-
/*** funkce pro zobrazení odkazu na domovskou stránku autora ***/
|
| 11 |
-
function WPHE_AuthorLink()
|
| 12 |
-
{
|
| 13 |
-
echo '<a class="author-link" href="http://wp-blog.cz/" target="_blank">WP-blog.cz</a>';
|
| 14 |
-
}
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
/*** funkce pro zobrazení odkazu na příspěvky autorovi ***/
|
| 18 |
-
function WPHE_DonateLink()
|
| 19 |
-
{
|
| 20 |
-
echo '<a class="author-link" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NSKURYL8JEVU8" target="_blank">'.__('Donate', 'wphe').'</a>';
|
| 21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/lib.functions.php
DELETED
|
@@ -1,236 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
if (!defined('ABSPATH')) die('You do not have sufficient permissions to access this file.');
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
/***** Vytvoření zálohy htaccess souboru ******************************/
|
| 7 |
-
function WPHE_CreateBackup(){
|
| 8 |
-
$WPHE_backup_path = ABSPATH.'wp-content/htaccess.backup';
|
| 9 |
-
$WPHE_orig_path = ABSPATH.'.htaccess';
|
| 10 |
-
@clearstatcache();
|
| 11 |
-
|
| 12 |
-
WPHE_CreateSecureWPcontent();
|
| 13 |
-
|
| 14 |
-
if(file_exists($WPHE_backup_path)){
|
| 15 |
-
WPHE_DeleteBackup();
|
| 16 |
-
|
| 17 |
-
if(file_exists(ABSPATH.'.htaccess')){
|
| 18 |
-
$htaccess_content_orig = @file_get_contents($WPHE_orig_path, false, NULL);
|
| 19 |
-
$htaccess_content_orig = trim($htaccess_content_orig);
|
| 20 |
-
$htaccess_content_orig = str_replace('\\\\', '\\', $htaccess_content_orig);
|
| 21 |
-
$htaccess_content_orig = str_replace('\"', '"', $htaccess_content_orig);
|
| 22 |
-
@chmod($WPHE_backup_path, 0666);
|
| 23 |
-
$WPHE_success = @file_put_contents($WPHE_backup_path, $htaccess_content_orig, LOCK_EX);
|
| 24 |
-
if($WPHE_success === false)
|
| 25 |
-
{
|
| 26 |
-
unset($WPHE_backup_path);
|
| 27 |
-
unset($WPHE_orig_path);
|
| 28 |
-
unset($htaccess_content_orig);
|
| 29 |
-
unset($WPHE_success);
|
| 30 |
-
return false;
|
| 31 |
-
}else{
|
| 32 |
-
unset($WPHE_backup_path);
|
| 33 |
-
unset($WPHE_orig_path);
|
| 34 |
-
unset($htaccess_content_orig);
|
| 35 |
-
unset($WPHE_success);
|
| 36 |
-
return true;
|
| 37 |
-
}
|
| 38 |
-
@chmod($WPHE_backup_path, 0644);
|
| 39 |
-
}else{
|
| 40 |
-
unset($WPHE_backup_path);
|
| 41 |
-
unset($WPHE_orig_path);
|
| 42 |
-
return false;
|
| 43 |
-
}
|
| 44 |
-
}else{
|
| 45 |
-
if(file_exists(ABSPATH.'.htaccess')){
|
| 46 |
-
$htaccess_content_orig = @file_get_contents($WPHE_orig_path, false, NULL);
|
| 47 |
-
$htaccess_content_orig = trim($htaccess_content_orig);
|
| 48 |
-
$htaccess_content_orig = str_replace('\\\\', '\\', $htaccess_content_orig);
|
| 49 |
-
$htaccess_content_orig = str_replace('\"', '"', $htaccess_content_orig);
|
| 50 |
-
@chmod($WPHE_backup_path, 0666);
|
| 51 |
-
$WPHE_success = @file_put_contents($WPHE_backup_path, $htaccess_content_orig, LOCK_EX);
|
| 52 |
-
if($WPHE_success === false){
|
| 53 |
-
unset($WPHE_backup_path);
|
| 54 |
-
unset($WPHE_orig_path);
|
| 55 |
-
unset($htaccess_content_orig);
|
| 56 |
-
unset($WPHE_success);
|
| 57 |
-
return false;
|
| 58 |
-
}else{
|
| 59 |
-
unset($WPHE_backup_path);
|
| 60 |
-
unset($WPHE_orig_path);
|
| 61 |
-
unset($htaccess_content_orig);
|
| 62 |
-
unset($WPHE_success);
|
| 63 |
-
return true;
|
| 64 |
-
}
|
| 65 |
-
@chmod($WPHE_backup_path, 0644);
|
| 66 |
-
}else{
|
| 67 |
-
unset($WPHE_backup_path);
|
| 68 |
-
unset($WPHE_orig_path);
|
| 69 |
-
return false;
|
| 70 |
-
}
|
| 71 |
-
}
|
| 72 |
-
}
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
/***** Vytvoření htaccess souboru ve složce wp-content ****************/
|
| 77 |
-
function WPHE_CreateSecureWPcontent(){
|
| 78 |
-
$wphe_secure_path = ABSPATH.'wp-content/.htaccess';
|
| 79 |
-
$wphe_secure_text = '
|
| 80 |
-
# WP Htaccess Editor - Secure backups
|
| 81 |
-
<files htaccess.backup>
|
| 82 |
-
order allow,deny
|
| 83 |
-
deny from all
|
| 84 |
-
</files>
|
| 85 |
-
';
|
| 86 |
-
|
| 87 |
-
if(is_readable(ABSPATH.'wp-content/.htaccess')){
|
| 88 |
-
$wphe_secure_content = @file_get_contents(ABSPATH.'wp-content/.htaccess');
|
| 89 |
-
|
| 90 |
-
if($wphe_secure_content !== false){
|
| 91 |
-
if(strpos($wphe_secure_content, 'Secure backups') === false){
|
| 92 |
-
unset($wphe_secure_content);
|
| 93 |
-
$wphe_create_sec = @file_put_contents(ABSPATH.'wp-content/.htaccess', $wphe_secure_text, FILE_APPEND|LOCK_EX);
|
| 94 |
-
if($wphe_create_sec !== false){
|
| 95 |
-
unset($wphe_secure_text);
|
| 96 |
-
unset($wphe_create_sec);
|
| 97 |
-
return true;
|
| 98 |
-
}else{
|
| 99 |
-
unset($wphe_secure_text);
|
| 100 |
-
unset($wphe_create_sec);
|
| 101 |
-
return false;
|
| 102 |
-
}
|
| 103 |
-
}else{
|
| 104 |
-
unset($wphe_secure_content);
|
| 105 |
-
return true;
|
| 106 |
-
}
|
| 107 |
-
}else{
|
| 108 |
-
unset($wphe_secure_content);
|
| 109 |
-
return false;
|
| 110 |
-
}
|
| 111 |
-
}else{
|
| 112 |
-
if(file_exists(ABSPATH.'wp-content/.htaccess')){
|
| 113 |
-
return false;
|
| 114 |
-
}else{
|
| 115 |
-
$wphe_create_sec = @file_put_contents(ABSPATH.'wp-content/.htaccess', $wphe_secure_text, LOCK_EX);
|
| 116 |
-
if($wphe_create_sec !== false){
|
| 117 |
-
return true;
|
| 118 |
-
}else{
|
| 119 |
-
return false;
|
| 120 |
-
}
|
| 121 |
-
}
|
| 122 |
-
}
|
| 123 |
-
}
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
/***** Obnova zálohy htaccess souboru *********************************/
|
| 128 |
-
function WPHE_RestoreBackup(){
|
| 129 |
-
$wphe_backup_path = ABSPATH.'wp-content/htaccess.backup';
|
| 130 |
-
$WPHE_orig_path = ABSPATH.'.htaccess';
|
| 131 |
-
@clearstatcache();
|
| 132 |
-
|
| 133 |
-
if(!file_exists($wphe_backup_path)){
|
| 134 |
-
unset($wphe_backup_path);
|
| 135 |
-
unset($WPHE_orig_path);
|
| 136 |
-
return false;
|
| 137 |
-
}else{
|
| 138 |
-
if(file_exists($WPHE_orig_path)){
|
| 139 |
-
if(is_writable($WPHE_orig_path)){
|
| 140 |
-
@unlink($WPHE_orig_path);
|
| 141 |
-
}else{
|
| 142 |
-
@chmod($WPHE_orig_path, 0666);
|
| 143 |
-
@unlink($WPHE_orig_path);
|
| 144 |
-
}
|
| 145 |
-
}
|
| 146 |
-
$wphe_htaccess_content_backup = @file_get_contents($wphe_backup_path, false, NULL);
|
| 147 |
-
if(WPHE_WriteNewHtaccess($wphe_htaccess_content_backup) === false){
|
| 148 |
-
unset($wphe_success);
|
| 149 |
-
unset($WPHE_orig_path);
|
| 150 |
-
unset($wphe_backup_path);
|
| 151 |
-
return $wphe_htaccess_content_backup;
|
| 152 |
-
}else{
|
| 153 |
-
WPHE_DeleteBackup();
|
| 154 |
-
unset($wphe_success);
|
| 155 |
-
unset($wphe_htaccess_content_backup);
|
| 156 |
-
unset($WPHE_orig_path);
|
| 157 |
-
unset($wphe_backup_path);
|
| 158 |
-
return true;
|
| 159 |
-
}
|
| 160 |
-
}
|
| 161 |
-
}
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
/***** Smazání záložního souboru **************************************/
|
| 166 |
-
function WPHE_DeleteBackup(){
|
| 167 |
-
$wphe_backup_path = ABSPATH.'wp-content/htaccess.backup';
|
| 168 |
-
@clearstatcache();
|
| 169 |
-
|
| 170 |
-
if(file_exists($wphe_backup_path)){
|
| 171 |
-
if(is_writable($wphe_backup_path)){
|
| 172 |
-
@unlink($wphe_backup_path);
|
| 173 |
-
}else{
|
| 174 |
-
@chmod($wphe_backup_path, 0666);
|
| 175 |
-
@unlink($wphe_backup_path);
|
| 176 |
-
}
|
| 177 |
-
|
| 178 |
-
@clearstatcache();
|
| 179 |
-
|
| 180 |
-
if(file_exists($wphe_backup_path)){
|
| 181 |
-
unset($wphe_backup_path);
|
| 182 |
-
return false;
|
| 183 |
-
}else{
|
| 184 |
-
unset($wphe_backup_path);
|
| 185 |
-
return true;
|
| 186 |
-
}
|
| 187 |
-
}else{
|
| 188 |
-
unset($wphe_backup_path);
|
| 189 |
-
return true;
|
| 190 |
-
}
|
| 191 |
-
}
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
/***** Vytvoření nového htaccess souboru ******************************/
|
| 196 |
-
function WPHE_WriteNewHtaccess($WPHE_new_content){
|
| 197 |
-
$WPHE_orig_path = ABSPATH.'.htaccess';
|
| 198 |
-
@clearstatcache();
|
| 199 |
-
|
| 200 |
-
if(file_exists($WPHE_orig_path))
|
| 201 |
-
{
|
| 202 |
-
if(is_writable($WPHE_orig_path))
|
| 203 |
-
{
|
| 204 |
-
@unlink($WPHE_orig_path);
|
| 205 |
-
}else{
|
| 206 |
-
@chmod($WPHE_orig_path, 0666);
|
| 207 |
-
@unlink($WPHE_orig_path);
|
| 208 |
-
}
|
| 209 |
-
}
|
| 210 |
-
$WPHE_new_content = trim($WPHE_new_content);
|
| 211 |
-
$WPHE_new_content = str_replace('\\\\', '\\', $WPHE_new_content);
|
| 212 |
-
$WPHE_new_content = str_replace('\"', '"', $WPHE_new_content);
|
| 213 |
-
$WPHE_write_success = @file_put_contents($WPHE_orig_path, $WPHE_new_content, LOCK_EX);
|
| 214 |
-
@clearstatcache();
|
| 215 |
-
if(!file_exists($WPHE_orig_path) && $WPHE_write_success === false)
|
| 216 |
-
{
|
| 217 |
-
unset($WPHE_orig_path);
|
| 218 |
-
unset($WPHE_new_content);
|
| 219 |
-
unset($WPHE_write_success);
|
| 220 |
-
return false;
|
| 221 |
-
}else{
|
| 222 |
-
unset($WPHE_orig_path);
|
| 223 |
-
unset($WPHE_new_content);
|
| 224 |
-
unset($WPHE_write_success);
|
| 225 |
-
return true;
|
| 226 |
-
}
|
| 227 |
-
}
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
/****** debug funkce **************************************************/
|
| 232 |
-
function WPHE_Debug($data){
|
| 233 |
-
echo '<pre>';
|
| 234 |
-
var_dump($data);
|
| 235 |
-
echo '</pre>';
|
| 236 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/lib.pages.php
DELETED
|
@@ -1,68 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
if (!defined('ABSPATH')) die('You do not have sufficient permissions to access this file.');
|
| 3 |
-
|
| 4 |
-
/***** Přidání stránek do menu v administraci *************************/
|
| 5 |
-
function WPHE_admin_menu()
|
| 6 |
-
{
|
| 7 |
-
global $WPHE_dirname, $WPHE_dirurl;
|
| 8 |
-
if(current_user_can('activate_plugins')){
|
| 9 |
-
add_menu_page('WP Htaccess Editor', 'Htaccess', 'activate_plugins', $WPHE_dirname, 'WPHE_view_page', $WPHE_dirurl.'style/img/wphe-mini.png');
|
| 10 |
-
WPHE_add_page('Htaccess Editor','Htaccess Editor', 'activate_plugins', $WPHE_dirname, 'WPHE_view_page');
|
| 11 |
-
WPHE_add_page(__('Backup', 'wphe'),__('Backup', 'wphe'), 'activate_plugins', $WPHE_dirname.'_backup', 'WPHE_view_page');
|
| 12 |
-
|
| 13 |
-
// přidání css stylu do administrace
|
| 14 |
-
wp_enqueue_style('wphe-style', $WPHE_dirurl.'style/wphe-style.css');
|
| 15 |
-
}
|
| 16 |
-
unset($WPHE_dirname);
|
| 17 |
-
unset($WPHE_dirurl);
|
| 18 |
-
}
|
| 19 |
-
|
| 20 |
-
/***** Zobrazení stránky podle požadavku ******************************/
|
| 21 |
-
function WPHE_view_page()
|
| 22 |
-
{
|
| 23 |
-
global $WPHE_dirname, $WPHE_root, $WPHE_dirurl, $WPHE_version;
|
| 24 |
-
|
| 25 |
-
switch (strip_tags(addslashes($_GET['page'])))
|
| 26 |
-
{
|
| 27 |
-
case $WPHE_dirname:
|
| 28 |
-
if(file_exists($WPHE_root.'pages/wphe-dashboard.php')){
|
| 29 |
-
require $WPHE_root.'pages/wphe-dashboard.php';
|
| 30 |
-
}else{
|
| 31 |
-
wp_die(__('Fatal error: Plugin <strong>WP Htaccess Editor</strong> is corrupted', 'wphe'));
|
| 32 |
-
}
|
| 33 |
-
break;
|
| 34 |
-
case $WPHE_dirname.'_backup':
|
| 35 |
-
if(file_exists($WPHE_root.'pages/wphe-backup.php')){
|
| 36 |
-
require $WPHE_root.'pages/wphe-backup.php';
|
| 37 |
-
}else{
|
| 38 |
-
wp_die(__('Fatal error: Plugin <strong>WP Htaccess Editor</strong> is corrupted', 'wphe'));
|
| 39 |
-
}
|
| 40 |
-
break;
|
| 41 |
-
default:
|
| 42 |
-
if(file_exists($WPHE_root.'pages/wphe-dashboard.php')){
|
| 43 |
-
require $WPHE_root.'pages/wphe-dashboard.php';
|
| 44 |
-
}else{
|
| 45 |
-
wp_die(__('Fatal error: Plugin <strong>WP Htaccess Editor</strong> is corrupted', 'wphe'));
|
| 46 |
-
}
|
| 47 |
-
break;
|
| 48 |
-
}
|
| 49 |
-
|
| 50 |
-
unset($WPHE_dirname);
|
| 51 |
-
unset($WPHE_root);
|
| 52 |
-
unset($WPHE_dirurl);
|
| 53 |
-
unset($WPHE_version);
|
| 54 |
-
}
|
| 55 |
-
|
| 56 |
-
/***** Pomocná funkce pro vytvoření menu ******************************/
|
| 57 |
-
function WPHE_add_page($page_title, $menu_title, $access_level, $file, $function = '')
|
| 58 |
-
{
|
| 59 |
-
global $WPHE_dirname;
|
| 60 |
-
add_submenu_page($WPHE_dirname, $page_title, $menu_title, $access_level, $file, $function);
|
| 61 |
-
|
| 62 |
-
unset($WPHE_dirname);
|
| 63 |
-
unset($page_title);
|
| 64 |
-
unset($menu_title);
|
| 65 |
-
unset($access_level);
|
| 66 |
-
unset($file);
|
| 67 |
-
unset($function);
|
| 68 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/lib.wp-files.php
DELETED
|
@@ -1,20 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
if (!defined('ABSPATH')) die('You do not have sufficient permissions to access this file.');
|
| 3 |
-
|
| 4 |
-
/***** Načtení systémových souborů WP pro kontrolu oprávnění uživatele */
|
| 5 |
-
|
| 6 |
-
if(!function_exists('wp_get_current_user')){
|
| 7 |
-
if(file_exists(ABSPATH.'wp-includes/pluggable.php')){
|
| 8 |
-
require_once ABSPATH.'wp-includes/pluggable.php';
|
| 9 |
-
}else{
|
| 10 |
-
wp_die(__('Plugin WP Htaccess Editor Error: File "/wp-includes/pluggable.php" does not exists!', 'wphe'));
|
| 11 |
-
}
|
| 12 |
-
}
|
| 13 |
-
|
| 14 |
-
if(!function_exists('current_user_can')){
|
| 15 |
-
if(file_exists(ABSPATH.'wp-includes/capabilities.php')){
|
| 16 |
-
require_once ABSPATH.'wp-includes/capabilities.php';
|
| 17 |
-
}else{
|
| 18 |
-
wp_die(__('Plugin WP Htaccess Editor Error: File "/wp-includes/capabilities.php" does not exists!', 'wphe'));
|
| 19 |
-
}
|
| 20 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
license.txt
ADDED
|
@@ -0,0 +1,280 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
GNU GENERAL PUBLIC LICENSE
|
| 2 |
+
Version 2, June 1991
|
| 3 |
+
|
| 4 |
+
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
| 5 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
| 6 |
+
Everyone is permitted to copy and distribute verbatim copies
|
| 7 |
+
of this license document, but changing it is not allowed.
|
| 8 |
+
|
| 9 |
+
Preamble
|
| 10 |
+
|
| 11 |
+
The licenses for most software are designed to take away your
|
| 12 |
+
freedom to share and change it. By contrast, the GNU General Public
|
| 13 |
+
License is intended to guarantee your freedom to share and change free
|
| 14 |
+
software--to make sure the software is free for all its users. This
|
| 15 |
+
General Public License applies to most of the Free Software
|
| 16 |
+
Foundation's software and to any other program whose authors commit to
|
| 17 |
+
using it. (Some other Free Software Foundation software is covered by
|
| 18 |
+
the GNU Lesser General Public License instead.) You can apply it to
|
| 19 |
+
your programs, too.
|
| 20 |
+
|
| 21 |
+
When we speak of free software, we are referring to freedom, not
|
| 22 |
+
price. Our General Public Licenses are designed to make sure that you
|
| 23 |
+
have the freedom to distribute copies of free software (and charge for
|
| 24 |
+
this service if you wish), that you receive source code or can get it
|
| 25 |
+
if you want it, that you can change the software or use pieces of it
|
| 26 |
+
in new free programs; and that you know you can do these things.
|
| 27 |
+
|
| 28 |
+
To protect your rights, we need to make restrictions that forbid
|
| 29 |
+
anyone to deny you these rights or to ask you to surrender the rights.
|
| 30 |
+
These restrictions translate to certain responsibilities for you if you
|
| 31 |
+
distribute copies of the software, or if you modify it.
|
| 32 |
+
|
| 33 |
+
For example, if you distribute copies of such a program, whether
|
| 34 |
+
gratis or for a fee, you must give the recipients all the rights that
|
| 35 |
+
you have. You must make sure that they, too, receive or can get the
|
| 36 |
+
source code. And you must show them these terms so they know their
|
| 37 |
+
rights.
|
| 38 |
+
|
| 39 |
+
We protect your rights with two steps: (1) copyright the software, and
|
| 40 |
+
(2) offer you this license which gives you legal permission to copy,
|
| 41 |
+
distribute and/or modify the software.
|
| 42 |
+
|
| 43 |
+
Also, for each author's protection and ours, we want to make certain
|
| 44 |
+
that everyone understands that there is no warranty for this free
|
| 45 |
+
software. If the software is modified by someone else and passed on, we
|
| 46 |
+
want its recipients to know that what they have is not the original, so
|
| 47 |
+
that any problems introduced by others will not reflect on the original
|
| 48 |
+
authors' reputations.
|
| 49 |
+
|
| 50 |
+
Finally, any free program is threatened constantly by software
|
| 51 |
+
patents. We wish to avoid the danger that redistributors of a free
|
| 52 |
+
program will individually obtain patent licenses, in effect making the
|
| 53 |
+
program proprietary. To prevent this, we have made it clear that any
|
| 54 |
+
patent must be licensed for everyone's free use or not licensed at all.
|
| 55 |
+
|
| 56 |
+
The precise terms and conditions for copying, distribution and
|
| 57 |
+
modification follow.
|
| 58 |
+
|
| 59 |
+
GNU GENERAL PUBLIC LICENSE
|
| 60 |
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
| 61 |
+
|
| 62 |
+
0. This License applies to any program or other work which contains
|
| 63 |
+
a notice placed by the copyright holder saying it may be distributed
|
| 64 |
+
under the terms of this General Public License. The "Program", below,
|
| 65 |
+
refers to any such program or work, and a "work based on the Program"
|
| 66 |
+
means either the Program or any derivative work under copyright law:
|
| 67 |
+
that is to say, a work containing the Program or a portion of it,
|
| 68 |
+
either verbatim or with modifications and/or translated into another
|
| 69 |
+
language. (Hereinafter, translation is included without limitation in
|
| 70 |
+
the term "modification".) Each licensee is addressed as "you".
|
| 71 |
+
|
| 72 |
+
Activities other than copying, distribution and modification are not
|
| 73 |
+
covered by this License; they are outside its scope. The act of
|
| 74 |
+
running the Program is not restricted, and the output from the Program
|
| 75 |
+
is covered only if its contents constitute a work based on the
|
| 76 |
+
Program (independent of having been made by running the Program).
|
| 77 |
+
Whether that is true depends on what the Program does.
|
| 78 |
+
|
| 79 |
+
1. You may copy and distribute verbatim copies of the Program's
|
| 80 |
+
source code as you receive it, in any medium, provided that you
|
| 81 |
+
conspicuously and appropriately publish on each copy an appropriate
|
| 82 |
+
copyright notice and disclaimer of warranty; keep intact all the
|
| 83 |
+
notices that refer to this License and to the absence of any warranty;
|
| 84 |
+
and give any other recipients of the Program a copy of this License
|
| 85 |
+
along with the Program.
|
| 86 |
+
|
| 87 |
+
You may charge a fee for the physical act of transferring a copy, and
|
| 88 |
+
you may at your option offer warranty protection in exchange for a fee.
|
| 89 |
+
|
| 90 |
+
2. You may modify your copy or copies of the Program or any portion
|
| 91 |
+
of it, thus forming a work based on the Program, and copy and
|
| 92 |
+
distribute such modifications or work under the terms of Section 1
|
| 93 |
+
above, provided that you also meet all of these conditions:
|
| 94 |
+
|
| 95 |
+
a) You must cause the modified files to carry prominent notices
|
| 96 |
+
stating that you changed the files and the date of any change.
|
| 97 |
+
|
| 98 |
+
b) You must cause any work that you distribute or publish, that in
|
| 99 |
+
whole or in part contains or is derived from the Program or any
|
| 100 |
+
part thereof, to be licensed as a whole at no charge to all third
|
| 101 |
+
parties under the terms of this License.
|
| 102 |
+
|
| 103 |
+
c) If the modified program normally reads commands interactively
|
| 104 |
+
when run, you must cause it, when started running for such
|
| 105 |
+
interactive use in the most ordinary way, to print or display an
|
| 106 |
+
announcement including an appropriate copyright notice and a
|
| 107 |
+
notice that there is no warranty (or else, saying that you provide
|
| 108 |
+
a warranty) and that users may redistribute the program under
|
| 109 |
+
these conditions, and telling the user how to view a copy of this
|
| 110 |
+
License. (Exception: if the Program itself is interactive but
|
| 111 |
+
does not normally print such an announcement, your work based on
|
| 112 |
+
the Program is not required to print an announcement.)
|
| 113 |
+
|
| 114 |
+
These requirements apply to the modified work as a whole. If
|
| 115 |
+
identifiable sections of that work are not derived from the Program,
|
| 116 |
+
and can be reasonably considered independent and separate works in
|
| 117 |
+
themselves, then this License, and its terms, do not apply to those
|
| 118 |
+
sections when you distribute them as separate works. But when you
|
| 119 |
+
distribute the same sections as part of a whole which is a work based
|
| 120 |
+
on the Program, the distribution of the whole must be on the terms of
|
| 121 |
+
this License, whose permissions for other licensees extend to the
|
| 122 |
+
entire whole, and thus to each and every part regardless of who wrote it.
|
| 123 |
+
|
| 124 |
+
Thus, it is not the intent of this section to claim rights or contest
|
| 125 |
+
your rights to work written entirely by you; rather, the intent is to
|
| 126 |
+
exercise the right to control the distribution of derivative or
|
| 127 |
+
collective works based on the Program.
|
| 128 |
+
|
| 129 |
+
In addition, mere aggregation of another work not based on the Program
|
| 130 |
+
with the Program (or with a work based on the Program) on a volume of
|
| 131 |
+
a storage or distribution medium does not bring the other work under
|
| 132 |
+
the scope of this License.
|
| 133 |
+
|
| 134 |
+
3. You may copy and distribute the Program (or a work based on it,
|
| 135 |
+
under Section 2) in object code or executable form under the terms of
|
| 136 |
+
Sections 1 and 2 above provided that you also do one of the following:
|
| 137 |
+
|
| 138 |
+
a) Accompany it with the complete corresponding machine-readable
|
| 139 |
+
source code, which must be distributed under the terms of Sections
|
| 140 |
+
1 and 2 above on a medium customarily used for software interchange; or,
|
| 141 |
+
|
| 142 |
+
b) Accompany it with a written offer, valid for at least three
|
| 143 |
+
years, to give any third party, for a charge no more than your
|
| 144 |
+
cost of physically performing source distribution, a complete
|
| 145 |
+
machine-readable copy of the corresponding source code, to be
|
| 146 |
+
distributed under the terms of Sections 1 and 2 above on a medium
|
| 147 |
+
customarily used for software interchange; or,
|
| 148 |
+
|
| 149 |
+
c) Accompany it with the information you received as to the offer
|
| 150 |
+
to distribute corresponding source code. (This alternative is
|
| 151 |
+
allowed only for noncommercial distribution and only if you
|
| 152 |
+
received the program in object code or executable form with such
|
| 153 |
+
an offer, in accord with Subsection b above.)
|
| 154 |
+
|
| 155 |
+
The source code for a work means the preferred form of the work for
|
| 156 |
+
making modifications to it. For an executable work, complete source
|
| 157 |
+
code means all the source code for all modules it contains, plus any
|
| 158 |
+
associated interface definition files, plus the scripts used to
|
| 159 |
+
control compilation and installation of the executable. However, as a
|
| 160 |
+
special exception, the source code distributed need not include
|
| 161 |
+
anything that is normally distributed (in either source or binary
|
| 162 |
+
form) with the major components (compiler, kernel, and so on) of the
|
| 163 |
+
operating system on which the executable runs, unless that component
|
| 164 |
+
itself accompanies the executable.
|
| 165 |
+
|
| 166 |
+
If distribution of executable or object code is made by offering
|
| 167 |
+
access to copy from a designated place, then offering equivalent
|
| 168 |
+
access to copy the source code from the same place counts as
|
| 169 |
+
distribution of the source code, even though third parties are not
|
| 170 |
+
compelled to copy the source along with the object code.
|
| 171 |
+
|
| 172 |
+
4. You may not copy, modify, sublicense, or distribute the Program
|
| 173 |
+
except as expressly provided under this License. Any attempt
|
| 174 |
+
otherwise to copy, modify, sublicense or distribute the Program is
|
| 175 |
+
void, and will automatically terminate your rights under this License.
|
| 176 |
+
However, parties who have received copies, or rights, from you under
|
| 177 |
+
this License will not have their licenses terminated so long as such
|
| 178 |
+
parties remain in full compliance.
|
| 179 |
+
|
| 180 |
+
5. You are not required to accept this License, since you have not
|
| 181 |
+
signed it. However, nothing else grants you permission to modify or
|
| 182 |
+
distribute the Program or its derivative works. These actions are
|
| 183 |
+
prohibited by law if you do not accept this License. Therefore, by
|
| 184 |
+
modifying or distributing the Program (or any work based on the
|
| 185 |
+
Program), you indicate your acceptance of this License to do so, and
|
| 186 |
+
all its terms and conditions for copying, distributing or modifying
|
| 187 |
+
the Program or works based on it.
|
| 188 |
+
|
| 189 |
+
6. Each time you redistribute the Program (or any work based on the
|
| 190 |
+
Program), the recipient automatically receives a license from the
|
| 191 |
+
original licensor to copy, distribute or modify the Program subject to
|
| 192 |
+
these terms and conditions. You may not impose any further
|
| 193 |
+
restrictions on the recipients' exercise of the rights granted herein.
|
| 194 |
+
You are not responsible for enforcing compliance by third parties to
|
| 195 |
+
this License.
|
| 196 |
+
|
| 197 |
+
7. If, as a consequence of a court judgment or allegation of patent
|
| 198 |
+
infringement or for any other reason (not limited to patent issues),
|
| 199 |
+
conditions are imposed on you (whether by court order, agreement or
|
| 200 |
+
otherwise) that contradict the conditions of this License, they do not
|
| 201 |
+
excuse you from the conditions of this License. If you cannot
|
| 202 |
+
distribute so as to satisfy simultaneously your obligations under this
|
| 203 |
+
License and any other pertinent obligations, then as a consequence you
|
| 204 |
+
may not distribute the Program at all. For example, if a patent
|
| 205 |
+
license would not permit royalty-free redistribution of the Program by
|
| 206 |
+
all those who receive copies directly or indirectly through you, then
|
| 207 |
+
the only way you could satisfy both it and this License would be to
|
| 208 |
+
refrain entirely from distribution of the Program.
|
| 209 |
+
|
| 210 |
+
If any portion of this section is held invalid or unenforceable under
|
| 211 |
+
any particular circumstance, the balance of the section is intended to
|
| 212 |
+
apply and the section as a whole is intended to apply in other
|
| 213 |
+
circumstances.
|
| 214 |
+
|
| 215 |
+
It is not the purpose of this section to induce you to infringe any
|
| 216 |
+
patents or other property right claims or to contest validity of any
|
| 217 |
+
such claims; this section has the sole purpose of protecting the
|
| 218 |
+
integrity of the free software distribution system, which is
|
| 219 |
+
implemented by public license practices. Many people have made
|
| 220 |
+
generous contributions to the wide range of software distributed
|
| 221 |
+
through that system in reliance on consistent application of that
|
| 222 |
+
system; it is up to the author/donor to decide if he or she is willing
|
| 223 |
+
to distribute software through any other system and a licensee cannot
|
| 224 |
+
impose that choice.
|
| 225 |
+
|
| 226 |
+
This section is intended to make thoroughly clear what is believed to
|
| 227 |
+
be a consequence of the rest of this License.
|
| 228 |
+
|
| 229 |
+
8. If the distribution and/or use of the Program is restricted in
|
| 230 |
+
certain countries either by patents or by copyrighted interfaces, the
|
| 231 |
+
original copyright holder who places the Program under this License
|
| 232 |
+
may add an explicit geographical distribution limitation excluding
|
| 233 |
+
those countries, so that distribution is permitted only in or among
|
| 234 |
+
countries not thus excluded. In such case, this License incorporates
|
| 235 |
+
the limitation as if written in the body of this License.
|
| 236 |
+
|
| 237 |
+
9. The Free Software Foundation may publish revised and/or new versions
|
| 238 |
+
of the General Public License from time to time. Such new versions will
|
| 239 |
+
be similar in spirit to the present version, but may differ in detail to
|
| 240 |
+
address new problems or concerns.
|
| 241 |
+
|
| 242 |
+
Each version is given a distinguishing version number. If the Program
|
| 243 |
+
specifies a version number of this License which applies to it and "any
|
| 244 |
+
later version", you have the option of following the terms and conditions
|
| 245 |
+
either of that version or of any later version published by the Free
|
| 246 |
+
Software Foundation. If the Program does not specify a version number of
|
| 247 |
+
this License, you may choose any version ever published by the Free Software
|
| 248 |
+
Foundation.
|
| 249 |
+
|
| 250 |
+
10. If you wish to incorporate parts of the Program into other free
|
| 251 |
+
programs whose distribution conditions are different, write to the author
|
| 252 |
+
to ask for permission. For software which is copyrighted by the Free
|
| 253 |
+
Software Foundation, write to the Free Software Foundation; we sometimes
|
| 254 |
+
make exceptions for this. Our decision will be guided by the two goals
|
| 255 |
+
of preserving the free status of all derivatives of our free software and
|
| 256 |
+
of promoting the sharing and reuse of software generally.
|
| 257 |
+
|
| 258 |
+
NO WARRANTY
|
| 259 |
+
|
| 260 |
+
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
| 261 |
+
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
| 262 |
+
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
| 263 |
+
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
| 264 |
+
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
| 265 |
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
| 266 |
+
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
| 267 |
+
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
| 268 |
+
REPAIR OR CORRECTION.
|
| 269 |
+
|
| 270 |
+
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
| 271 |
+
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
| 272 |
+
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
| 273 |
+
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
| 274 |
+
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
| 275 |
+
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
| 276 |
+
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
| 277 |
+
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
| 278 |
+
POSSIBILITY OF SUCH DAMAGES.
|
| 279 |
+
|
| 280 |
+
END OF TERMS AND CONDITIONS
|
pages/index.php
DELETED
|
@@ -1,4 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
header('Location: ../../');
|
| 3 |
-
exit();
|
| 4 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
pages/wphe-backup.php
DELETED
|
@@ -1,143 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
if (!defined('ABSPATH')) die('You do not have sufficient permissions to access this file.');
|
| 3 |
-
|
| 4 |
-
if(current_user_can('activate_plugins')){
|
| 5 |
-
?>
|
| 6 |
-
<div class="wrap">
|
| 7 |
-
<h2 class="wphe-title">WP Htaccess Editor - <?php _e('Backup', 'wphe'); ?></h2>
|
| 8 |
-
<?php
|
| 9 |
-
//============================ Restore Backup ===================================
|
| 10 |
-
if(!empty($_POST['submit']) && !empty($_POST['restore_backup']) && check_admin_referer('wphe_restoreb', 'wphe_restoreb'))
|
| 11 |
-
{
|
| 12 |
-
|
| 13 |
-
$wphe_restore_result = WPHE_RestoreBackup();
|
| 14 |
-
if($wphe_restore_result === false)
|
| 15 |
-
{
|
| 16 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('Unable to restore backup! Probably the wrong setting write permissions to the files.', 'wphe').'</strong></p></div>';
|
| 17 |
-
echo'<div class="postbox wphe-box">';
|
| 18 |
-
echo'<p>'.__('The backup file is located in the <code>wp-content</code> folder.','wphe').'</p>';
|
| 19 |
-
echo'</div>';
|
| 20 |
-
}elseif($wphe_restore_result === true)
|
| 21 |
-
{
|
| 22 |
-
echo'<div id="message" class="updated fade"><p><strong>'.__('Backup was restored successfully', 'wphe').'</strong></p></div>';
|
| 23 |
-
echo'<div id="message" class="updated fade"><p><strong>'.__('Old backup file was deleted successfully', 'wphe').'</strong></p></div>';
|
| 24 |
-
}else
|
| 25 |
-
{
|
| 26 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('Unable to restore backup!', 'wphe').'</strong></p></div>';
|
| 27 |
-
echo'<div class="postbox wphe-box" style="background: #FFEECE;">';
|
| 28 |
-
echo'<p class="wphe-red">'.__('This is contents of the original file, put it into a file manually','wphe').':</p>';
|
| 29 |
-
echo'<textarea class="wphe-textarea">'.$wphe_restore_result.'</textarea>';
|
| 30 |
-
echo'</div>';
|
| 31 |
-
}
|
| 32 |
-
//============================== Create Backup ===================================
|
| 33 |
-
}elseif(!empty($_POST['submit']) && !empty($_POST['create_backup']) && check_admin_referer('wphe_createb', 'wphe_createb')){
|
| 34 |
-
if(WPHE_CreateBackup())
|
| 35 |
-
{
|
| 36 |
-
echo'<div id="message" class="updated fade"><p><strong>'.__('Backup file was created successfully', 'wphe').'</strong></p></div>';
|
| 37 |
-
echo'<div class="postbox wphe-box">';
|
| 38 |
-
echo'<p>'.__('The backup file is located in the <code>wp-content</code> folder.','wphe').'</p>';
|
| 39 |
-
echo'</div>';
|
| 40 |
-
}else{
|
| 41 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('Unable to create backup! <code>wp-content</code> folder is not writeable! Change the permissions this folder manually!', 'wphe').'</strong></p></div>';
|
| 42 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('Due to server configuration can not change permissions on files or create new files','wphe').'</strong></p></div>';
|
| 43 |
-
}
|
| 44 |
-
//============================== Delete Backup ====================================
|
| 45 |
-
}elseif(!empty($_POST['submit']) && !empty($_POST['delete_backup']) && check_admin_referer('wphe_deleteb', 'wphe_deleteb'))
|
| 46 |
-
{
|
| 47 |
-
if(WPHE_DeleteBackup())
|
| 48 |
-
{
|
| 49 |
-
echo'<div id="message" class="updated fade"><p><strong>'.__('Backup file was successfully removed', 'wphe').'</strong></p></div>';
|
| 50 |
-
}else{
|
| 51 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('Backup file could not be removed! Probably the wrong setting write permissions to the files.','wphe').'</strong></p></div>';
|
| 52 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('Due to server configuration can not change permissions on files or create new files','wphe').'</strong></p></div>';
|
| 53 |
-
}
|
| 54 |
-
//============================== Home ==============================================
|
| 55 |
-
}else{
|
| 56 |
-
if(file_exists(ABSPATH.'wp-content/htaccess.backup'))
|
| 57 |
-
{
|
| 58 |
-
echo '<div class="postbox wphe-box" style="background: #FFEECE;">';
|
| 59 |
-
?>
|
| 60 |
-
<form method="post" action="admin.php?page=<?php echo $WPHE_dirname; ?>_backup">
|
| 61 |
-
<?php wp_nonce_field('wphe_restoreb','wphe_restoreb'); ?>
|
| 62 |
-
<input type="hidden" name="restore_backup" value="restore" />
|
| 63 |
-
<p class="submit"><?php _e('Do you want to restore the backup file?', 'wphe'); ?> <input type="submit" class="button button-primary" name="submit" value="<?php _e('Restore backup »', 'wphe'); ?>" /></p>
|
| 64 |
-
</form>
|
| 65 |
-
<?php
|
| 66 |
-
echo '</div>';
|
| 67 |
-
echo '<div class="postbox wphe-box" style="background: #FFEECE;">';
|
| 68 |
-
?>
|
| 69 |
-
<form method="post" action="admin.php?page=<?php echo $WPHE_dirname; ?>_backup">
|
| 70 |
-
<?php wp_nonce_field('wphe_deleteb','wphe_deleteb'); ?>
|
| 71 |
-
<input type="hidden" name="delete_backup" value="delete" />
|
| 72 |
-
<p class="submit"><?php _e('Do you want to delete a backup file?', 'wphe'); ?> <input type="submit" class="button button-primary" name="submit" value="<?php _e('Remove backup »', 'wphe'); ?>" /></p>
|
| 73 |
-
</form>
|
| 74 |
-
<?php
|
| 75 |
-
echo '</div>';
|
| 76 |
-
}else{
|
| 77 |
-
echo '<div class="postbox wphe-box">';
|
| 78 |
-
echo '<pre class="wphe-red">'.__('Backup file not found...','wphe').'</pre>';
|
| 79 |
-
echo '</div>';
|
| 80 |
-
|
| 81 |
-
echo '<div class="postbox wphe-box" style="background: #E0FCE1;">';
|
| 82 |
-
?>
|
| 83 |
-
<form method="post" action="admin.php?page=<?php echo $WPHE_dirname; ?>_backup">
|
| 84 |
-
<?php wp_nonce_field('wphe_createb','wphe_createb'); ?>
|
| 85 |
-
<input type="hidden" name="create_backup" value="create" />
|
| 86 |
-
<p class="submit"><?php _e('Do you want to create a new backup file?', 'wphe'); ?> <input type="submit" class="button button-primary" name="submit" value="<?php _e('Create new »', 'wphe'); ?>" /></p>
|
| 87 |
-
</form>
|
| 88 |
-
<?php
|
| 89 |
-
echo '</div>';
|
| 90 |
-
}
|
| 91 |
-
}
|
| 92 |
-
?>
|
| 93 |
-
<p style="clear:both;"> </p>
|
| 94 |
-
<div class="postbox wphe-box">
|
| 95 |
-
<h3 class="wphe-title"><?php _e('Information about this plugin', 'wphe');?></h3>
|
| 96 |
-
<div class="wphe-infobox">
|
| 97 |
-
<h4><?php _e('Author','wphe'); ?></h4>
|
| 98 |
-
<p style="padding-left: 5px"><em>Lukenzi</em> <?php WPHE_AuthorLink(); ?></p>
|
| 99 |
-
</div>
|
| 100 |
-
<div class="wphe-infobox">
|
| 101 |
-
<h4><?php _e('Translators','wphe'); ?></h4>
|
| 102 |
-
<table class="wphe-translators">
|
| 103 |
-
<tr><td><em>Lukenzi</em></td><td><img src="<?php echo $WPHE_dirurl.'style/img/flag-cz.jpg'; ?>" border="0" alt="Czech" width="12" height="9" /></td><td><?php WPHE_AuthorLink(); ?></td></tr>
|
| 104 |
-
<tr><td><em>Andi Eko</em></td><td><img src="<?php echo $WPHE_dirurl.'style/img/flag-en.jpg'; ?>" border="0" alt="English" width="12" height="9" /></td><td><a href="http://andieko.info/" target="_blank">andieko.info</a></td></tr>
|
| 105 |
-
<tr><td><em>Andrew Kurtis</em></td><td><img src="<?php echo $WPHE_dirurl.'style/img/flag-es.gif'; ?>" border="0" alt="Spanish" width="12" height="9" /></td><td><a href="http://www.webhostinghub.com" target="_blank">WebHostingHub.com</a></td></tr>
|
| 106 |
-
</table>
|
| 107 |
-
</div>
|
| 108 |
-
<div class="wphe-infobox">
|
| 109 |
-
<h4><?php _e('Plugin','wphe'); ?></h4>
|
| 110 |
-
<table>
|
| 111 |
-
<tr><td><em><?php _e('Version:','wphe'); ?></em></td><td><span class="wphe-green"><?php echo $WPHE_version; ?></span></td></tr>
|
| 112 |
-
<tr><td><em><?php _e('Plugin homepage:','wphe'); ?></em></td><td><a href="http://wordpress.org/extend/plugins/wp-htaccess-editor/" target="_blank"><?php _e('WordPress repository','wphe'); ?></a></td></tr>
|
| 113 |
-
<tr><td><em><?php _e('Support:','wphe'); ?></em></td><td><a href="http://wordpress.org/support/plugin/wp-htaccess-editor"><?php _e('Forum','wphe'); ?></a></td></tr>
|
| 114 |
-
<tr><td><em><?php _e('Support for the development:','wphe');?></em></td><td><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KM4GZAE9FVPSN"><?php _e('Donate','wphe'); ?></a></td></tr>
|
| 115 |
-
</table>
|
| 116 |
-
</div>
|
| 117 |
-
<div class="wphe-infobox">
|
| 118 |
-
<h4><?php _e('Other plugins','wphe'); ?></h4>
|
| 119 |
-
<table>
|
| 120 |
-
<tr><td><em><a href="http://wordpress.org/plugins/wedos-news/" target="_blank">WEDOS News</a></em></td></tr>
|
| 121 |
-
<tr><td><em><a href="http://wp-blog.cz/wpb-file-manager-spravce-souboru-pro-wordpress/" target="_blank">WPB File Manager</a></em></td></tr>
|
| 122 |
-
<tr><td><em><a href="http://wp-blog.cz/system-files-editor/" target="_blank">System Files Editor</a></em></td></tr>
|
| 123 |
-
<tr><td><em><a href="http://wordpress.org/extend/plugins/ceska-podpora-wordpressu/" target="_blank"><?php _e('Czech support for WordPress','wphe'); ?></a></em></td></tr>
|
| 124 |
-
</table>
|
| 125 |
-
</div>
|
| 126 |
-
<div class="wphe-infobox">
|
| 127 |
-
<h4><?php _e('Donate','wphe'); ?></h4>
|
| 128 |
-
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
|
| 129 |
-
<input type="hidden" name="cmd" value="_s-xclick">
|
| 130 |
-
<input type="hidden" name="hosted_button_id" value="KM4GZAE9FVPSN">
|
| 131 |
-
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
|
| 132 |
-
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
|
| 133 |
-
</form>
|
| 134 |
-
</div>
|
| 135 |
-
</div>
|
| 136 |
-
<p style="clear:both;"> </p>
|
| 137 |
-
<p style="clear:both;"> </p>
|
| 138 |
-
<p style="clear:both;"> </p>
|
| 139 |
-
</div>
|
| 140 |
-
<?php
|
| 141 |
-
}else{
|
| 142 |
-
wp_die( __('You do not have permission to view this page','wphe'));
|
| 143 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pages/wphe-dashboard.php
DELETED
|
@@ -1,179 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
if (!defined('ABSPATH')) die('You do not have sufficient permissions to access this file.');
|
| 3 |
-
|
| 4 |
-
if(current_user_can('activate_plugins')){
|
| 5 |
-
$WPHE_backup_path = WP_CONTENT_URL.'/htaccess.backup';
|
| 6 |
-
$WPHE_orig_path = ABSPATH.'.htaccess';
|
| 7 |
-
?>
|
| 8 |
-
<div class="wrap">
|
| 9 |
-
<h2 class="wphe-title">WP Htaccess Editor</h2>
|
| 10 |
-
<?php
|
| 11 |
-
//============================ Uložení Htaccess souboru =======================================
|
| 12 |
-
if(!empty($_POST['submit']) AND !empty($_POST['save_htaccess']) AND check_admin_referer('wphe_save', 'wphe_save')){
|
| 13 |
-
$WPHE_new_content = $_POST['ht_content'];
|
| 14 |
-
WPHE_DeleteBackup();
|
| 15 |
-
if(WPHE_CreateBackup()){
|
| 16 |
-
if(WPHE_WriteNewHtaccess($WPHE_new_content)){
|
| 17 |
-
echo'<div id="message" class="updated fade"><p><strong>'.__('File has been successfully changed', 'wphe').'</strong></p></div>';
|
| 18 |
-
?>
|
| 19 |
-
<p><?php _e('You have made changes to the htaccess file. The original file was automatically backed up (in <code>wp-content</code> folder)', 'wphe'); ?><br />
|
| 20 |
-
<a href="<?php echo get_option('home'); ?>/" target="_blank"><?php _e('Check the functionality of your site (the links to the articles or categories).', 'wphe');?></a>. <?php _e('If something is not working properly restore the original file from backup', 'wphe');?></p>
|
| 21 |
-
<div class="postbox" style="float: left; width: 95%; padding: 15px;">
|
| 22 |
-
<form method="post" action="admin.php?page=<?php echo $WPHE_dirname; ?>">
|
| 23 |
-
<?php wp_nonce_field('wphe_delete','wphe_delete'); ?>
|
| 24 |
-
<input type="hidden" name="delete_backup" value="delete" />
|
| 25 |
-
<p class="submit"><?php _e('If everything works properly, you can delete the backup file:', 'wphe');?> <input type="submit" class="button button-primary" name="submit" value="<?php _e('Remove backup »', 'wphe');?>" /> <?php echo __('or','wphe'); ?> <a href="admin.php?page=<?php echo $WPHE_dirname; ?>_backup"><?php _e('restore the original file from backup','wphe');?></a></p>
|
| 26 |
-
</form>
|
| 27 |
-
</div>
|
| 28 |
-
<?php
|
| 29 |
-
}else{
|
| 30 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('The file could not be saved!', 'wphe').'</strong></p></div>';
|
| 31 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('Due to server configuration can not change permissions on files or create new files','wphe').'</strong></p></div>';
|
| 32 |
-
}
|
| 33 |
-
}else{
|
| 34 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('The file could not be saved!', 'wphe').'</strong></p></div>';
|
| 35 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('Unable to create backup of the original file! <code>wp-content</code> folder is not writeable! Change the permissions this folder!', 'wphe').'</strong></p></div>';
|
| 36 |
-
}
|
| 37 |
-
unset($WPHE_new_content);
|
| 38 |
-
//============================ Vytvoření nového Htaccess souboru ================================
|
| 39 |
-
}elseif(!empty($_POST['submit']) AND !empty($_POST['create_htaccess']) AND check_admin_referer('wphe_create', 'wphe_create')){
|
| 40 |
-
if(WPHE_WriteNewHtaccess('# Created by WP Htaccess Editor') === false)
|
| 41 |
-
{
|
| 42 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('Htaccess file is not created.', 'wphe').'</p></div>';
|
| 43 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('Due to server configuration can not change permissions on files or create new files','wphe').'</strong></p></div>';
|
| 44 |
-
}else{
|
| 45 |
-
echo'<div id="message" class="updated fade"><p><strong>'.__('Htaccess file was successfully created.', 'wphe').'</strong></p></div>';
|
| 46 |
-
echo'<div id="message" class="updated fade"><p><strong><a href="admin.php?page='.$WPHE_dirname.'">'.__('View new Htaccess file', 'wphe').'</a></strong></p></div>';
|
| 47 |
-
}
|
| 48 |
-
//============================ Smazání zálohy =======================================
|
| 49 |
-
}elseif(!empty($_POST['submit']) AND !empty($_POST['delete_backup']) AND check_admin_referer('wphe_delete', 'wphe_delete'))
|
| 50 |
-
{
|
| 51 |
-
if(WPHE_DeleteBackup() === false)
|
| 52 |
-
{
|
| 53 |
-
echo'<div id="message" class="error fade"><p><strong>'.__('Backup file could not be removed! <code>wp-content</code> folder is not writeable! Change the permissions this folder!', 'wphe').'</p></div>';
|
| 54 |
-
}else{
|
| 55 |
-
echo'<div id="message" class="updated fade"><p><strong>'.__('Backup file has been successfully removed.', 'wphe').'</strong></p></div>';
|
| 56 |
-
}
|
| 57 |
-
//============================ Home ================================================
|
| 58 |
-
}else{
|
| 59 |
-
?>
|
| 60 |
-
<p><?php _e('Using this editor you can easily modify your htaccess file without having to use an FTP client.', 'wphe');?></p>
|
| 61 |
-
<p class="wphe-red"><?php _e('<strong>WARNING:</strong> Any error in this file may cause malfunction of your site!', 'wphe');?><br />
|
| 62 |
-
<?php _e('Edit htaccess file should therefore be performed only by experienced users!', 'wphe');?><br />
|
| 63 |
-
</p>
|
| 64 |
-
<div class="postbox wphe-box">
|
| 65 |
-
<h3 class="wphe-title"><?php _e('Information for editing htaccess file', 'wphe');?></h3>
|
| 66 |
-
<p><?php _e('For more information on possible adjustments to this file, please visit', 'wphe');?> <a href="http://httpd.apache.org/docs/current/howto/htaccess.html" target="_blank">Apache Tutorial: .htaccess files</a> <?php _e('or','wphe'); ?> <a href="http://net.tutsplus.com/tutorials/other/the-ultimate-guide-to-htaccess-files/" target="_blank">The Ultimate Guide to .htaccess Files</a>. </p>
|
| 67 |
-
<p><?php _e('Interesting tips and guides can also be found on ', 'wphe');?> <?php WPHE_AuthorLink(); ?>.</p>
|
| 68 |
-
<p><a href="http://www.google.com/#sclient=psy&q=htaccess+how+to" target="_blank"><?php _e('Or use the Google search.','wphe');?></a></p>
|
| 69 |
-
</div>
|
| 70 |
-
<?php
|
| 71 |
-
if(!file_exists($WPHE_orig_path))
|
| 72 |
-
{
|
| 73 |
-
echo'<div class="postbox wphe-box">';
|
| 74 |
-
echo'<pre class="wphe-red">'.__('Htaccess file does not exists!', 'wphe').'</pre>';
|
| 75 |
-
echo'</div>';
|
| 76 |
-
$success = false;
|
| 77 |
-
}else{
|
| 78 |
-
$success = true;
|
| 79 |
-
if(!is_readable($WPHE_orig_path))
|
| 80 |
-
{
|
| 81 |
-
echo'<div class="postbox wphe-box">';
|
| 82 |
-
echo'<pre class="wphe-red">'.__('Htaccess file cannot read!', 'wphe').'</pre>';
|
| 83 |
-
echo'</div>';
|
| 84 |
-
$success = false;
|
| 85 |
-
}
|
| 86 |
-
if($success == true){
|
| 87 |
-
@chmod($WPHE_orig_path, 0644);
|
| 88 |
-
$WPHE_htaccess_content = @file_get_contents($WPHE_orig_path, false, NULL);
|
| 89 |
-
if($WPHE_htaccess_content === false){
|
| 90 |
-
echo'<div class="postbox wphe-box">';
|
| 91 |
-
echo'<pre class="wphe-red">'.__('Htaccess file cannot read!', 'wphe').'</pre>';
|
| 92 |
-
echo'</div>';
|
| 93 |
-
$success = false;
|
| 94 |
-
}else{
|
| 95 |
-
$success = true;
|
| 96 |
-
}
|
| 97 |
-
}
|
| 98 |
-
}
|
| 99 |
-
|
| 100 |
-
if($success == true){
|
| 101 |
-
?>
|
| 102 |
-
<div class="postbox wphe-box">
|
| 103 |
-
<form method="post" action="admin.php?page=<?php echo $WPHE_dirname; ?>">
|
| 104 |
-
<input type="hidden" name="save_htaccess" value="save" />
|
| 105 |
-
<?php wp_nonce_field('wphe_save','wphe_save'); ?>
|
| 106 |
-
<h3 class="wphe-title"><?php _e('Content of the Htaccess file', 'wphe');?></h3>
|
| 107 |
-
<textarea name="ht_content" class="wphe-textarea" wrap="off"><?php echo $WPHE_htaccess_content;?></textarea>
|
| 108 |
-
<p class="submit"><input type="submit" class="button button-primary" name="submit" value="<?php _e('Save file »', 'wphe');?>" /></p>
|
| 109 |
-
</form>
|
| 110 |
-
</div>
|
| 111 |
-
<?php
|
| 112 |
-
unset($WPHE_htaccess_content);
|
| 113 |
-
}else{
|
| 114 |
-
?>
|
| 115 |
-
<div class="postbox wphe-box" style="background: #E0FCE1;">
|
| 116 |
-
<form method="post" action="admin.php?page=<?php echo $WPHE_dirname; ?>">
|
| 117 |
-
<input type="hidden" name="create_htaccess" value="create" />
|
| 118 |
-
<?php wp_nonce_field('wphe_create','wphe_create'); ?>
|
| 119 |
-
<p class="submit"><?php _e('Create new <code>.htaccess</code> file?', 'wphe');?> <input type="submit" class="button button-primary" name="submit" value="<?php _e('Create »', 'wphe');?>" /></p>
|
| 120 |
-
</form>
|
| 121 |
-
</div>
|
| 122 |
-
<?php
|
| 123 |
-
}
|
| 124 |
-
unset($success);
|
| 125 |
-
}
|
| 126 |
-
?>
|
| 127 |
-
<p style="clear:both;"> </p>
|
| 128 |
-
<div class="postbox wphe-box">
|
| 129 |
-
<h3 class="wphe-title"><?php _e('Information about this plugin', 'wphe');?></h3>
|
| 130 |
-
<div class="wphe-infobox">
|
| 131 |
-
<h4><?php _e('Author','wphe'); ?></h4>
|
| 132 |
-
<p style="padding-left: 5px"><em>Lukenzi</em> <?php WPHE_AuthorLink(); ?></p>
|
| 133 |
-
</div>
|
| 134 |
-
<div class="wphe-infobox">
|
| 135 |
-
<h4><?php _e('Translators','wphe'); ?></h4>
|
| 136 |
-
<table class="wphe-translators">
|
| 137 |
-
<tr><td><em>Lukenzi</em></td><td><img src="<?php echo $WPHE_dirurl.'style/img/flag-cz.jpg'; ?>" border="0" alt="Czech" width="12" height="9" /></td><td><?php WPHE_AuthorLink(); ?></td></tr>
|
| 138 |
-
<tr><td><em>Andi Eko</em></td><td><img src="<?php echo $WPHE_dirurl.'style/img/flag-en.jpg'; ?>" border="0" alt="English" width="12" height="9" /></td><td><a href="http://andieko.info/" target="_blank">andieko.info</a></td></tr>
|
| 139 |
-
<tr><td><em>Andrew Kurtis</em></td><td><img src="<?php echo $WPHE_dirurl.'style/img/flag-es.gif'; ?>" border="0" alt="Spanish" width="12" height="9" /></td><td><a href="http://www.webhostinghub.com" target="_blank">WebHostingHub.com</a></td></tr>
|
| 140 |
-
</table>
|
| 141 |
-
</div>
|
| 142 |
-
<div class="wphe-infobox">
|
| 143 |
-
<h4><?php _e('Plugin','wphe'); ?></h4>
|
| 144 |
-
<table>
|
| 145 |
-
<tr><td><em><?php _e('Version:','wphe'); ?></em></td><td><span class="wphe-green"><?php echo $WPHE_version; ?></span></td></tr>
|
| 146 |
-
<tr><td><em><?php _e('Plugin homepage:','wphe'); ?></em></td><td><a href="http://wordpress.org/extend/plugins/wp-htaccess-editor/" target="_blank"><?php _e('WordPress repository','wphe'); ?></a></td></tr>
|
| 147 |
-
<tr><td><em><?php _e('Support:','wphe'); ?></em></td><td><a href="http://wordpress.org/support/plugin/wp-htaccess-editor"><?php _e('Forum','wphe'); ?></a></td></tr>
|
| 148 |
-
<tr><td><em><?php _e('Support for the development:','wphe');?></em></td><td><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KM4GZAE9FVPSN"><?php _e('Donate','wphe'); ?></a></td></tr>
|
| 149 |
-
</table>
|
| 150 |
-
</div>
|
| 151 |
-
<div class="wphe-infobox">
|
| 152 |
-
<h4><?php _e('Other plugins','wphe'); ?></h4>
|
| 153 |
-
<table>
|
| 154 |
-
<tr><td><em><a href="http://wordpress.org/plugins/wedos-news/" target="_blank">WEDOS News</a></em></td></tr>
|
| 155 |
-
<tr><td><em><a href="http://wp-blog.cz/wpb-file-manager-spravce-souboru-pro-wordpress/" target="_blank">WPB File Manager</a></em></td></tr>
|
| 156 |
-
<tr><td><em><a href="http://wp-blog.cz/system-files-editor/" target="_blank">System Files Editor</a></em></td></tr>
|
| 157 |
-
<tr><td><em><a href="http://wordpress.org/extend/plugins/ceska-podpora-wordpressu/" target="_blank"><?php _e('Czech support for WordPress','wphe'); ?></a></em></td></tr>
|
| 158 |
-
</table>
|
| 159 |
-
</div>
|
| 160 |
-
<div class="wphe-infobox">
|
| 161 |
-
<h4><?php _e('Donate','wphe'); ?></h4>
|
| 162 |
-
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
|
| 163 |
-
<input type="hidden" name="cmd" value="_s-xclick">
|
| 164 |
-
<input type="hidden" name="hosted_button_id" value="KM4GZAE9FVPSN">
|
| 165 |
-
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
|
| 166 |
-
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
|
| 167 |
-
</form>
|
| 168 |
-
</div>
|
| 169 |
-
</div>
|
| 170 |
-
<p style="clear:both;"> </p>
|
| 171 |
-
<p style="clear:both;"> </p>
|
| 172 |
-
</div>
|
| 173 |
-
<?php
|
| 174 |
-
unset($WPHE_orig_path);
|
| 175 |
-
unset($WPHE_backup_path);
|
| 176 |
-
}else{
|
| 177 |
-
wp_die( __('You do not have permission to view this page','wphe'));
|
| 178 |
-
}
|
| 179 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.txt
CHANGED
|
@@ -1,51 +1,64 @@
|
|
| 1 |
-
===
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
Tested up to: 3.8.1
|
| 9 |
-
Stable tag: 1.3.0
|
| 10 |
License: GPLv2 or later
|
|
|
|
| 11 |
|
| 12 |
-
|
| 13 |
|
| 14 |
== Description ==
|
| 15 |
|
| 16 |
-
|
| 17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
|
| 19 |
== Installation ==
|
| 20 |
|
| 21 |
-
|
| 22 |
-
2. Activate the plugin through the Admin panel of your WordPress
|
| 23 |
-
3. Go to Menu -> Htaccess
|
| 24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
|
| 26 |
-
|
| 27 |
|
| 28 |
-
1.
|
| 29 |
-
2.
|
| 30 |
-
3.
|
|
|
|
| 31 |
|
| 32 |
-
== Frequently Asked Questions ==
|
| 33 |
|
| 34 |
-
|
| 35 |
-
|
|
|
|
|
|
|
| 36 |
|
| 37 |
-
= I edited my htaccess file and now my site does not work =
|
| 38 |
-
You probably have a syntax error in the file or on the server you are not allowed any of the settings in your htaccess file.
|
| 39 |
-
Try to restore the original backup file. If restoration is not possible with this plugin, restore the backup file from the folder "wp-content " manually.
|
| 40 |
|
| 41 |
== Changelog ==
|
| 42 |
|
| 43 |
-
=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
* Added Spanish translation (Thanks to Andrew Kurtis from WebHostingHub.com)
|
| 45 |
* Updated design
|
| 46 |
* Updated info links
|
| 47 |
|
| 48 |
-
=
|
| 49 |
* Improved code
|
| 50 |
* Improved design
|
| 51 |
* Improved security
|
|
@@ -55,10 +68,10 @@ Try to restore the original backup file. If restoration is not possible with thi
|
|
| 55 |
* Updated screenshots
|
| 56 |
* Adding plugin logo
|
| 57 |
|
| 58 |
-
=
|
| 59 |
* Fixed CHMOD
|
| 60 |
|
| 61 |
-
=
|
| 62 |
* Adding Czech and English language
|
| 63 |
* Adding debug panel
|
| 64 |
* Added information about the author and translators
|
|
@@ -67,11 +80,33 @@ Try to restore the original backup file. If restoration is not possible with thi
|
|
| 67 |
* Optimized for minimum memory requirements
|
| 68 |
* Small code modifications
|
| 69 |
|
| 70 |
-
=
|
| 71 |
* Adding button for create .htaccess file if not exists
|
| 72 |
* Fixed bug in the permissions to view the plugin
|
| 73 |
* Optimized for smaller memory requirements
|
| 74 |
|
| 75 |
-
=
|
|
|
|
| 76 |
* First stable version
|
| 77 |
* Adding to WordPress repository
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
=== Htaccess Editor - Safely Edit Htaccess File ===
|
| 2 |
+
Tags: htaccess, htaccess editor, htaccess file, htaccess backup, fix htaccess, modify htaccess, file editor
|
| 3 |
+
Contributors: WebFactory, UnderConstructionPage, googlemapswidget, securityninja, wpreset
|
| 4 |
+
Requires at least: 4.0
|
| 5 |
+
Requires PHP: 5.2
|
| 6 |
+
Tested up to: 5.0
|
| 7 |
+
Stable tag: 1.5
|
|
|
|
|
|
|
| 8 |
License: GPLv2 or later
|
| 9 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 10 |
|
| 11 |
+
A safe & simple htaccess file editor with automatic backup.
|
| 12 |
|
| 13 |
== Description ==
|
| 14 |
|
| 15 |
+
WP Htaccess Editor provides a simple, safe and fast way to edit the site's .htaccess file from WP admin. It automatically makes backups every time you make a change to the htaccess file. Backups can be restored directly from the plugin, or via FTP if the errors in .htaccess file prevent WP from running normally. For all questions, including support please use the official <a href="https://wordpress.org/support/plugin/wp-htaccess-editor">forum</a>.
|
| 16 |
+
|
| 17 |
+
Access WP Htaccess Editor via the "Tools" menu in WP admin.
|
| 18 |
+
|
| 19 |
+
#### Automatic Backups
|
| 20 |
+
|
| 21 |
+
Htaccess Editor makes automatic backups of htaccess file every time you make a change to it. Backups are located in /wp-content/htaccess-editor-backups/ and timestamped so you can easily find the latest htaccess backup and restore it.
|
| 22 |
+
|
| 23 |
+
The plugin was originally developed by <a href="https://profiles.wordpress.org/lukenzi">Lukenzi</a> in March of 2011.
|
| 24 |
|
| 25 |
== Installation ==
|
| 26 |
|
| 27 |
+
Follow the usual routine;
|
|
|
|
|
|
|
| 28 |
|
| 29 |
+
1. Open WordPress admin, go to Plugins, click Add New
|
| 30 |
+
2. Enter "htaccess editor" in search and hit Enter
|
| 31 |
+
3. Plugin will show up as the first on the list, click "Install Now"
|
| 32 |
+
4. Activate & open plugin's settings page located under the Tools menu
|
| 33 |
|
| 34 |
+
Or if needed, upload manually;
|
| 35 |
|
| 36 |
+
1. Download the latest stable version from from <a href="https://downloads.wordpress.org/plugin/wp-htaccess-editor.latest-stable.zip">downloads.wordpress.org/plugin/wp-htaccess-editor.latest-stable.zip</a>
|
| 37 |
+
2. Unzip it and upload to _/wp-content/plugins/_
|
| 38 |
+
3. Open WordPress admin - Plugins and click "Activate" next to "WP Htaccess Editor"
|
| 39 |
+
4. Open plugin's admin page located under the Tools menu
|
| 40 |
|
|
|
|
| 41 |
|
| 42 |
+
== Screenshots ==
|
| 43 |
+
|
| 44 |
+
1. WP Htaccess Editor admin page
|
| 45 |
+
2. Actions have to be double-confirmed to prevent accidents
|
| 46 |
|
|
|
|
|
|
|
|
|
|
| 47 |
|
| 48 |
== Changelog ==
|
| 49 |
|
| 50 |
+
= v1.5 =
|
| 51 |
+
* 2018/12/21
|
| 52 |
+
* WebFactory took over development
|
| 53 |
+
* complete plugin rewrite
|
| 54 |
+
* 30,000 installations; 162,200 downloads
|
| 55 |
+
|
| 56 |
+
= v1.3.0 =
|
| 57 |
* Added Spanish translation (Thanks to Andrew Kurtis from WebHostingHub.com)
|
| 58 |
* Updated design
|
| 59 |
* Updated info links
|
| 60 |
|
| 61 |
+
= v1.2.0 =
|
| 62 |
* Improved code
|
| 63 |
* Improved design
|
| 64 |
* Improved security
|
| 68 |
* Updated screenshots
|
| 69 |
* Adding plugin logo
|
| 70 |
|
| 71 |
+
= v1.1.1 =
|
| 72 |
* Fixed CHMOD
|
| 73 |
|
| 74 |
+
= v1.1.0 =
|
| 75 |
* Adding Czech and English language
|
| 76 |
* Adding debug panel
|
| 77 |
* Added information about the author and translators
|
| 80 |
* Optimized for minimum memory requirements
|
| 81 |
* Small code modifications
|
| 82 |
|
| 83 |
+
= v1.0.1 =
|
| 84 |
* Adding button for create .htaccess file if not exists
|
| 85 |
* Fixed bug in the permissions to view the plugin
|
| 86 |
* Optimized for smaller memory requirements
|
| 87 |
|
| 88 |
+
= v1.0.0 =
|
| 89 |
+
* 2011/03/24
|
| 90 |
* First stable version
|
| 91 |
* Adding to WordPress repository
|
| 92 |
+
|
| 93 |
+
== Frequently Asked Questions ==
|
| 94 |
+
|
| 95 |
+
= I've killed my site! Help!? =
|
| 96 |
+
|
| 97 |
+
Nothing is lost or deleted. You can easily get your site back.
|
| 98 |
+
You're probably getting an error 500 or a white screen (of death). First connect to your site via FTP and locate the .htaccess file. Delete it, or rename it. Try the site again - it should open. If it did locate the backup of the old, working .htaccess file in /wp-content/htaccess-editor-backups/ copy the file to your site's root folder and you're back in business.
|
| 99 |
+
|
| 100 |
+
= I get an error saying the .htaccess file can't be edited or created =
|
| 101 |
+
|
| 102 |
+
Sorry, we can't change the file access privileges set by your server. You'll have to edit the file via FTP.
|
| 103 |
+
|
| 104 |
+
Head over to our <a href="https://wordpress.org/support/plugin/wp-htaccess-editor">support forums</a>. We'll gladly assist you.
|
| 105 |
+
|
| 106 |
+
= How do I get support? =
|
| 107 |
+
|
| 108 |
+
Head over to our <a href="https://wordpress.org/support/plugin/wp-htaccess-editor">support forums</a>. We'll gladly help you.
|
| 109 |
+
|
| 110 |
+
= Do you support WP-CLI? =
|
| 111 |
+
|
| 112 |
+
Not yet, but we plan to.
|
screenshot-1.png
DELETED
|
Binary file
|
screenshot-2.png
DELETED
|
Binary file
|
screenshot-3.png
DELETED
|
Binary file
|
style/img/flag-cz.jpg
DELETED
|
Binary file
|
style/img/flag-en.jpg
DELETED
|
Binary file
|
style/img/flag-es.gif
DELETED
|
Binary file
|
style/img/wphe-mini.png
DELETED
|
Binary file
|
style/img/wphe.png
DELETED
|
Binary file
|
style/index.php
DELETED
|
@@ -1,4 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
header('Location: ../../');
|
| 3 |
-
exit();
|
| 4 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
style/wphe-style.css
DELETED
|
@@ -1,5 +0,0 @@
|
|
| 1 |
-
h2.wphe-title{background: url('img/wphe.png') no-repeat left center;padding-left: 40px;}
|
| 2 |
-
div.wrap div.wphe-box{float: left;width: 95%;padding: 10px;background: #DADADA;border: 1px solid #7F7F7F;box-shadow: 1px 1px 3px gray;}
|
| 3 |
-
div.wrap div.wphe-box h3.wphe-title{background: transparent;border: none;cursor: default;text-shadow:0px 1px 0px white;}
|
| 4 |
-
div.wrap div.wphe-box textarea.wphe-textarea{width: 100%;height: 400px;padding: 10px;color: #106AC2;border: 1px solid #9A9A9A;line-height: 1.25em;font-family: Monospace,Mono;background: #EDEDED;}
|
| 5 |
-
.wphe-red{color: Red!important;}.wphe-green{color: Green!important;}div.wrap table.wphe-translators tr td{padding: 0 5px 0 5px;}div.wrap div.wphe-infobox{float: left;margin: 0 15px 15px 15px;}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wp-htaccess-editor.php
CHANGED
|
@@ -1,105 +1,829 @@
|
|
| 1 |
<?php
|
| 2 |
/*
|
| 3 |
-
Plugin Name: WP Htaccess Editor
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
Domain
|
| 9 |
-
Author: Lukenzi
|
| 10 |
-
Author URI: http://wp-blog.cz/
|
| 11 |
-
License: GPLv2 or later
|
| 12 |
-
*/
|
| 13 |
|
| 14 |
-
|
|
|
|
| 15 |
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
(at your option) any later version.
|
| 20 |
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
*/
|
| 30 |
|
| 31 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
|
| 33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
|
| 35 |
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
define('WP_SITEURL', get_option('url').'/');
|
| 45 |
-
}
|
| 46 |
-
define('WP_CONTENT_URL', WP_SITEURL.'wp-content');
|
| 47 |
-
}
|
| 48 |
-
if(!defined('WP_PLUGIN_URL')){
|
| 49 |
-
define('WP_PLUGIN_URL', WP_CONTENT_URL.'/plugins');
|
| 50 |
-
}
|
| 51 |
|
| 52 |
-
$WPHE_root = str_replace('\\', '/', dirname(__FILE__)).'/';
|
| 53 |
-
$WPHE_lib = $WPHE_root.'lib/';
|
| 54 |
-
$WPHE_dirname = str_replace('\\', '/', dirname(plugin_basename(__FILE__)));
|
| 55 |
-
$WPHE_dirurl = WP_PLUGIN_URL.'/'.$WPHE_dirname.'/';
|
| 56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
|
|
|
|
|
|
|
| 58 |
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
$WPHE_moFile = dirname(__FILE__) . '/lang/'.$WPHE_Locale.'.mo';
|
| 64 |
-
if(@file_exists($WPHE_moFile) && is_readable($WPHE_moFile))
|
| 65 |
-
{
|
| 66 |
-
load_textdomain('wphe', $WPHE_moFile);
|
| 67 |
-
}
|
| 68 |
-
unset($WPHE_moFile);
|
| 69 |
-
}
|
| 70 |
-
unset($WPHE_Locale);
|
| 71 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
|
| 73 |
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
|
|
|
|
|
|
|
|
|
| 78 |
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
}else{ wp_die(__('Fatal error: Plugin <strong>WP Htaccess Editor</strong> is corrupted', 'wphe')); }
|
| 82 |
|
| 83 |
-
if(file_exists($WPHE_lib.'lib.ad.php')){
|
| 84 |
-
require $WPHE_lib.'lib.ad.php';
|
| 85 |
-
}else{ wp_die(__('Fatal error: Plugin <strong>WP Htaccess Editor</strong> is corrupted', 'wphe')); }
|
| 86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
|
| 88 |
-
|
| 89 |
-
require $WPHE_lib.'lib.pages.php';
|
| 90 |
-
}else{ wp_die(__('Fatal error: Plugin <strong>WP Htaccess Editor</strong> is corrupted', 'wphe')); }
|
| 91 |
|
|
|
|
| 92 |
|
|
|
|
|
|
|
| 93 |
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
<?php
|
| 2 |
/*
|
| 3 |
+
Plugin Name: WP Htaccess Editor
|
| 4 |
+
Description: Safe and easy way to edit the .htaccess file directly from WP admin without using FTP.
|
| 5 |
+
Version: 1.5
|
| 6 |
+
Author: WebFactory Ltd
|
| 7 |
+
Author URI: https://www.webfactoryltd.com/
|
| 8 |
+
Text Domain: wp-htaccess-editor
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
|
| 10 |
+
Copyright 2011 - 2018 Lukenzi (email: lukenzi@gmail.com)
|
| 11 |
+
Copyright 2018 - 2019 WebFactory Ltd (email: support@webfactoryltd.com)
|
| 12 |
|
| 13 |
+
This program is free software; you can redistribute it and/or modify
|
| 14 |
+
it under the terms of the GNU General Public License, version 2, as
|
| 15 |
+
published by the Free Software Foundation.
|
|
|
|
| 16 |
|
| 17 |
+
This program is distributed in the hope that it will be useful,
|
| 18 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| 20 |
+
GNU General Public License for more details.
|
| 21 |
|
| 22 |
+
You should have received a copy of the GNU General Public License
|
| 23 |
+
along with this program; if not, write to the Free Software
|
| 24 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
| 25 |
*/
|
| 26 |
|
| 27 |
+
|
| 28 |
+
// include only file
|
| 29 |
+
if (!defined('ABSPATH')) {
|
| 30 |
+
wp_die(__('Do not open this file directly.', 'wp-htaccess-editor'));
|
| 31 |
+
}
|
| 32 |
|
| 33 |
|
| 34 |
+
class WP_Htaccess_Editor {
|
| 35 |
+
protected static $instance = null;
|
| 36 |
+
public $version = 0;
|
| 37 |
+
public $plugin_url = '';
|
| 38 |
+
public $plugin_basename = '';
|
| 39 |
+
protected $options = array();
|
| 40 |
+
protected $wp_filesystem = null;
|
| 41 |
+
public $backup_folder = 'htaccess-editor-backups';
|
| 42 |
|
| 43 |
|
| 44 |
+
/**
|
| 45 |
+
* Creates a new WP_Htaccess_Editor object and implements singleton
|
| 46 |
+
*
|
| 47 |
+
* @return WP_Htaccess_Editor
|
| 48 |
+
*/
|
| 49 |
+
static function get_instance() {
|
| 50 |
+
if (false == is_a(self::$instance, 'WP_Htaccess_Editor')) {
|
| 51 |
+
self::$instance = new WP_Htaccess_Editor();
|
| 52 |
+
}
|
| 53 |
|
| 54 |
+
return self::$instance;
|
| 55 |
+
} // get_instance
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
|
| 58 |
+
/**
|
| 59 |
+
* Initialize properties, hook to filters and actions
|
| 60 |
+
*
|
| 61 |
+
* @return null
|
| 62 |
+
*/
|
| 63 |
+
private function __construct() {
|
| 64 |
+
$this->version = $this->get_plugin_version();
|
| 65 |
+
$this->plugin_url = plugin_dir_url(__FILE__);
|
| 66 |
+
$this->plugin_basename = plugin_basename(__FILE__);
|
| 67 |
|
| 68 |
+
$this->load_options();
|
| 69 |
+
$this->setup_wp_filesystem();
|
| 70 |
|
| 71 |
+
add_action('admin_menu', array($this, 'admin_menu'));
|
| 72 |
+
add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
|
| 73 |
+
add_action('wp_ajax_wp_htaccess_editor_dismiss_notice', array($this, 'ajax_dismiss_notice'));
|
| 74 |
+
add_action('wp_ajax_wp_htaccess_editor_do_action', array($this, 'ajax_do_action'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
|
| 76 |
+
add_filter('plugin_action_links_' . $this->plugin_basename, array($this, 'plugin_action_links'));
|
| 77 |
+
add_filter('plugin_row_meta', array($this, 'plugin_meta_links'), 10, 2);
|
| 78 |
+
add_filter('admin_footer_text', array($this, 'admin_footer_text'));
|
| 79 |
+
} // __construct
|
| 80 |
|
| 81 |
|
| 82 |
+
/**
|
| 83 |
+
* Get plugin version from file header.
|
| 84 |
+
*
|
| 85 |
+
* @return string
|
| 86 |
+
*/
|
| 87 |
+
function get_plugin_version() {
|
| 88 |
+
$plugin_data = get_file_data(__FILE__, array('version' => 'Version'), 'plugin');
|
| 89 |
|
| 90 |
+
return $plugin_data['version'];
|
| 91 |
+
} // get_plugin_version
|
|
|
|
| 92 |
|
|
|
|
|
|
|
|
|
|
| 93 |
|
| 94 |
+
/**
|
| 95 |
+
* Add "Edit .htaccess file" action link to plugins table, left side
|
| 96 |
+
*
|
| 97 |
+
* @param array $links Initial list of links.
|
| 98 |
+
*
|
| 99 |
+
* @return array
|
| 100 |
+
*/
|
| 101 |
+
function plugin_action_links($links) {
|
| 102 |
+
// whole plugin is for admins only
|
| 103 |
+
if (false === current_user_can('administrator')) {
|
| 104 |
+
return $links;
|
| 105 |
+
}
|
| 106 |
|
| 107 |
+
$settings_link = '<a href="' . admin_url('tools.php?page=wp-htaccess-editor') . '" title="' . __('Edit .htaccess file', 'wp-htaccess-editor') . '">' . __('Edit .htaccess file', 'wp-htaccess-editor') . '</a>';
|
|
|
|
|
|
|
| 108 |
|
| 109 |
+
array_unshift($links, $settings_link);
|
| 110 |
|
| 111 |
+
return $links;
|
| 112 |
+
} // plugin_action_links
|
| 113 |
|
| 114 |
+
|
| 115 |
+
/**
|
| 116 |
+
* Add links to plugin's description in plugins table
|
| 117 |
+
*
|
| 118 |
+
* @param array $links Initial list of links.
|
| 119 |
+
* @param string $file Basename of current plugin.
|
| 120 |
+
*
|
| 121 |
+
* @return array
|
| 122 |
+
*/
|
| 123 |
+
function plugin_meta_links($links, $file) {
|
| 124 |
+
if ($file !== $this->plugin_basename) {
|
| 125 |
+
return $links;
|
| 126 |
+
}
|
| 127 |
+
|
| 128 |
+
$support_link = '<a target="_blank" href="https://wordpress.org/support/plugin/wp-htaccess-editor" title="' . __('Get help', 'wp-htaccess-editor') . '">' . __('Support', 'wp-htaccess-editor') . '</a>';
|
| 129 |
+
$rate_link = '<a target="_blank" href="https://wordpress.org/support/plugin/wp-htaccess-editor/reviews/#new-post" title="' . __('Rate the plugin', 'wp-htaccess-editor') . '">' . __('Rate the plugin ★★★★★', 'wp-htaccess-editor') . '</a>';
|
| 130 |
+
|
| 131 |
+
$links[] = $support_link;
|
| 132 |
+
$links[] = $rate_link;
|
| 133 |
+
|
| 134 |
+
return $links;
|
| 135 |
+
} // plugin_meta_links
|
| 136 |
+
|
| 137 |
+
|
| 138 |
+
/**
|
| 139 |
+
* Test if we're on plugin's admin page
|
| 140 |
+
*
|
| 141 |
+
* @return bool
|
| 142 |
+
*/
|
| 143 |
+
function is_plugin_page() {
|
| 144 |
+
$current_screen = get_current_screen();
|
| 145 |
+
|
| 146 |
+
if ($current_screen->id === 'tools_page_wp-htaccess-editor') {
|
| 147 |
+
return true;
|
| 148 |
+
} else {
|
| 149 |
+
return false;
|
| 150 |
+
}
|
| 151 |
+
} // is_plugin_page
|
| 152 |
+
|
| 153 |
+
|
| 154 |
+
/**
|
| 155 |
+
* Add powered by text in admin footer
|
| 156 |
+
*
|
| 157 |
+
* @param string $text_org Default footer text.
|
| 158 |
+
*
|
| 159 |
+
* @return string
|
| 160 |
+
*/
|
| 161 |
+
function admin_footer_text($text_org) {
|
| 162 |
+
if (false === $this->is_plugin_page()) {
|
| 163 |
+
return $text_org;
|
| 164 |
+
}
|
| 165 |
+
|
| 166 |
+
$text = '<i>WP Htaccess Editor v' . $this->version . ' by <a href="https://www.webfactoryltd.com/" title="' . __('Visit our site to get more great plugins', 'wp-htaccess-editor'). '" target="_blank">WebFactory Ltd</a>.';
|
| 167 |
+
$text .= ' Please <a target="_blank" href="https://wordpress.org/support/plugin/wp-htaccess-editor/reviews/#new-post" title="' . __('Rate the plugin', 'wp-htaccess-editor') . '">' . __('Rate the plugin ★★★★★', 'wp-htaccess-editor') . '</a>.</i> ';
|
| 168 |
+
|
| 169 |
+
return $text . $text_org;
|
| 170 |
+
} // admin_footer_text
|
| 171 |
+
|
| 172 |
+
|
| 173 |
+
/**
|
| 174 |
+
* Loads plugin's translated strings
|
| 175 |
+
*
|
| 176 |
+
* @return null
|
| 177 |
+
*/
|
| 178 |
+
function load_textdomain() {
|
| 179 |
+
load_plugin_textdomain('wp-htaccess-editor');
|
| 180 |
+
} // load_textdomain
|
| 181 |
+
|
| 182 |
+
|
| 183 |
+
/**
|
| 184 |
+
* Initialize the WP file system.
|
| 185 |
+
*
|
| 186 |
+
* @return object
|
| 187 |
+
*/
|
| 188 |
+
private function setup_wp_filesystem() {
|
| 189 |
+
global $wp_filesystem;
|
| 190 |
+
|
| 191 |
+
if (empty($wp_filesystem)) {
|
| 192 |
+
require_once ABSPATH . '/wp-admin/includes/file.php';
|
| 193 |
+
WP_Filesystem();
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
$this->wp_filesystem = $wp_filesystem;
|
| 197 |
+
return $this->wp_filesystem;
|
| 198 |
+
} // setup_wp_filesystem
|
| 199 |
+
|
| 200 |
+
|
| 201 |
+
/**
|
| 202 |
+
* Get full backup folder path
|
| 203 |
+
*
|
| 204 |
+
* @return string
|
| 205 |
+
*/
|
| 206 |
+
function get_backup_folder() {
|
| 207 |
+
$folder = trailingslashit(WP_CONTENT_DIR) . trailingslashit($this->backup_folder);
|
| 208 |
+
|
| 209 |
+
return $folder;
|
| 210 |
+
} // get_backup_folder
|
| 211 |
+
|
| 212 |
+
|
| 213 |
+
/**
|
| 214 |
+
* Get .htaccess file path.
|
| 215 |
+
*
|
| 216 |
+
* @param bool $folder_only Optional. Return folder name only without filename.
|
| 217 |
+
*
|
| 218 |
+
* @return string
|
| 219 |
+
*/
|
| 220 |
+
function get_htaccess_path($folder_only = false) {
|
| 221 |
+
$slashed_home = trailingslashit(get_option('home'));
|
| 222 |
+
$base = parse_url($slashed_home, PHP_URL_PATH);
|
| 223 |
+
$document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
|
| 224 |
+
$abspath_fix = str_replace('\\', '/', ABSPATH);
|
| 225 |
+
$home_path = 0 === strpos($abspath_fix, $document_root_fix) ? $document_root_fix . $base : get_home_path();
|
| 226 |
+
|
| 227 |
+
$filepath = $home_path . '.htaccess';
|
| 228 |
+
|
| 229 |
+
if ($folder_only) {
|
| 230 |
+
return $home_path;
|
| 231 |
+
} else {
|
| 232 |
+
return $filepath;
|
| 233 |
+
}
|
| 234 |
+
} // get_htaccess_path
|
| 235 |
+
|
| 236 |
+
|
| 237 |
+
/**
|
| 238 |
+
* Get .htaccess file content.
|
| 239 |
+
*
|
| 240 |
+
* @return string
|
| 241 |
+
*/
|
| 242 |
+
function get_htaccess_content() {
|
| 243 |
+
$content = $this->wp_filesystem->get_contents($this->get_htaccess_path());
|
| 244 |
+
|
| 245 |
+
return $content;
|
| 246 |
+
} // get_htaccess_path
|
| 247 |
+
|
| 248 |
+
|
| 249 |
+
/**
|
| 250 |
+
* Check if .htaccess is writable.
|
| 251 |
+
*
|
| 252 |
+
* @return bool
|
| 253 |
+
*/
|
| 254 |
+
function is_htaccess_writable() {
|
| 255 |
+
$htaccess_path = $this->get_htaccess_path();
|
| 256 |
+
|
| 257 |
+
return $this->wp_filesystem->is_writable($htaccess_path);
|
| 258 |
+
} // is_htaccess_writable
|
| 259 |
+
|
| 260 |
+
|
| 261 |
+
/**
|
| 262 |
+
* Check if .htaccess exists and is redable.
|
| 263 |
+
*
|
| 264 |
+
* @return bool
|
| 265 |
+
*/
|
| 266 |
+
function is_htaccess_readable() {
|
| 267 |
+
$htaccess_path = $this->get_htaccess_path();
|
| 268 |
+
|
| 269 |
+
return $this->wp_filesystem->is_readable($htaccess_path);
|
| 270 |
+
} // is_htaccess_writable
|
| 271 |
+
|
| 272 |
+
|
| 273 |
+
/**
|
| 274 |
+
* Load and prepare the options array. If needed create a new DB options entry.
|
| 275 |
+
*
|
| 276 |
+
* @return array
|
| 277 |
+
*/
|
| 278 |
+
private function load_options() {
|
| 279 |
+
$options = get_option('wp-htaccess-editor', array());
|
| 280 |
+
$change = false;
|
| 281 |
+
|
| 282 |
+
if (empty($options['meta'])) {
|
| 283 |
+
$options['meta'] = array('first_version' => $this->version, 'first_install' => current_time('timestamp', true), 'edits_count' => 0);
|
| 284 |
+
$change = true;
|
| 285 |
+
}
|
| 286 |
+
if (empty($options['dismissed_notices'])) {
|
| 287 |
+
$options['dismissed_notices'] = array();
|
| 288 |
+
$change = true;
|
| 289 |
+
}
|
| 290 |
+
if (empty($options['options'])) {
|
| 291 |
+
$options['options'] = array('last_backup' => '');
|
| 292 |
+
$change = true;
|
| 293 |
+
}
|
| 294 |
+
if ($change) {
|
| 295 |
+
update_option('wp-htaccess-editor', $options, true);
|
| 296 |
+
}
|
| 297 |
+
|
| 298 |
+
$this->options = $options;
|
| 299 |
+
return $options;
|
| 300 |
+
} // load_options
|
| 301 |
+
|
| 302 |
+
|
| 303 |
+
/**
|
| 304 |
+
* Get meta part of plugin options.
|
| 305 |
+
*
|
| 306 |
+
* @return array
|
| 307 |
+
*/
|
| 308 |
+
function get_meta() {
|
| 309 |
+
return $this->options['meta'];
|
| 310 |
+
} // get_meta
|
| 311 |
+
|
| 312 |
+
|
| 313 |
+
/**
|
| 314 |
+
* Get all dismissed notices, or check for one specific notice.
|
| 315 |
+
*
|
| 316 |
+
* @param string $notice_name Optional. Check if specified notice is dismissed.
|
| 317 |
+
*
|
| 318 |
+
* @return bool|array
|
| 319 |
+
*/
|
| 320 |
+
function get_dismissed_notices($notice_name = '') {
|
| 321 |
+
$notices = $this->options['dismissed_notices'];
|
| 322 |
+
|
| 323 |
+
if (empty($notice_name)) {
|
| 324 |
+
return $notices;
|
| 325 |
+
} else {
|
| 326 |
+
if (empty($notices[$notice_name])) {
|
| 327 |
+
return false;
|
| 328 |
+
} else {
|
| 329 |
+
return true;
|
| 330 |
+
}
|
| 331 |
+
}
|
| 332 |
+
} // get_dismissed_notices
|
| 333 |
+
|
| 334 |
+
|
| 335 |
+
/**
|
| 336 |
+
* Get all options or a single option key.
|
| 337 |
+
*
|
| 338 |
+
* @param string $option_key Optional.
|
| 339 |
+
*
|
| 340 |
+
* @return array
|
| 341 |
+
*/
|
| 342 |
+
function get_options($option_key = '') {
|
| 343 |
+
if (empty($option_key)) {
|
| 344 |
+
return $this->options['options'];
|
| 345 |
+
} else {
|
| 346 |
+
if (isset($this->options['options'][$option_key])) {
|
| 347 |
+
return $this->options['options'][$option_key];
|
| 348 |
+
} else {
|
| 349 |
+
return null;
|
| 350 |
+
}
|
| 351 |
+
}
|
| 352 |
+
} // get_options
|
| 353 |
+
|
| 354 |
+
|
| 355 |
+
/**
|
| 356 |
+
* Update plugin options array
|
| 357 |
+
*
|
| 358 |
+
* @param string $key Option key.
|
| 359 |
+
* @param string $data Data to save.
|
| 360 |
+
*
|
| 361 |
+
* @return bool
|
| 362 |
+
*/
|
| 363 |
+
private function update_options($key, $data) {
|
| 364 |
+
if (false === in_array($key, array('options', 'meta', 'dismissed_notices'))) {
|
| 365 |
+
trigger_error('Unknown option key used in update_options($key, $data) function.', E_USER_ERROR);
|
| 366 |
+
return false;
|
| 367 |
+
}
|
| 368 |
+
|
| 369 |
+
$this->options[$key] = $data;
|
| 370 |
+
$tmp = update_option('wp-htaccess-editor', $this->options);
|
| 371 |
+
|
| 372 |
+
return $tmp;
|
| 373 |
+
} // set_options
|
| 374 |
+
|
| 375 |
+
|
| 376 |
+
/**
|
| 377 |
+
* Add plugin menu entry under Tools menu
|
| 378 |
+
*
|
| 379 |
+
* @return null
|
| 380 |
+
*/
|
| 381 |
+
function admin_menu() {
|
| 382 |
+
add_management_page(__('WP Htaccess Editor', 'wp-htaccess-editor'), __('WP Htaccess Editor', 'wp-htaccess-editor'), 'administrator', 'wp-htaccess-editor', array($this, 'plugin_page'));
|
| 383 |
+
} // admin_menu
|
| 384 |
+
|
| 385 |
+
|
| 386 |
+
/**
|
| 387 |
+
* Dismiss notice via AJAX call
|
| 388 |
+
*
|
| 389 |
+
* @return null
|
| 390 |
+
*/
|
| 391 |
+
function ajax_dismiss_notice() {
|
| 392 |
+
check_ajax_referer('wp-htaccess-editor_dismiss_notice');
|
| 393 |
+
|
| 394 |
+
// complete plugin is for admins only
|
| 395 |
+
if (false === current_user_can('administrator')) {
|
| 396 |
+
wp_send_json_error(__('You are not allowed to perform this action.', 'wp-htaccess-editor'));
|
| 397 |
+
}
|
| 398 |
+
|
| 399 |
+
if (empty($_GET['notice_name'])) {
|
| 400 |
+
wp_send_json_error(__('Notice name is undefined.', 'wp-htaccess-editor'));
|
| 401 |
+
} else {
|
| 402 |
+
$notice_name = substr(sanitize_key($_GET['notice_name']), 0, 64);
|
| 403 |
+
}
|
| 404 |
+
|
| 405 |
+
if (!$this->dismiss_notice($notice_name)) {
|
| 406 |
+
wp_send_json_error(__('Notice is already dismissed.', 'wp-htaccess-editor'));
|
| 407 |
+
} else {
|
| 408 |
+
wp_send_json_success();
|
| 409 |
+
}
|
| 410 |
+
} // ajax_dismiss_notice
|
| 411 |
+
|
| 412 |
+
|
| 413 |
+
/**
|
| 414 |
+
* Dismiss notice by adding it to dismissed_notices options array
|
| 415 |
+
*
|
| 416 |
+
* @param string $notice_name Notice to dismiss.
|
| 417 |
+
*
|
| 418 |
+
* @return bool
|
| 419 |
+
*/
|
| 420 |
+
function dismiss_notice($notice_name) {
|
| 421 |
+
if ($this->get_dismissed_notices($notice_name)) {
|
| 422 |
+
return false;
|
| 423 |
+
} else {
|
| 424 |
+
$notices = $this->get_dismissed_notices();
|
| 425 |
+
$notices[$notice_name] = true;
|
| 426 |
+
$this->update_options('dismissed_notices', $notices);
|
| 427 |
+
return true;
|
| 428 |
+
}
|
| 429 |
+
} // dismiss_notice
|
| 430 |
+
|
| 431 |
+
|
| 432 |
+
/**
|
| 433 |
+
* Returns all WP pointers
|
| 434 |
+
*
|
| 435 |
+
* @return array
|
| 436 |
+
*/
|
| 437 |
+
function get_pointers() {
|
| 438 |
+
$pointers = array();
|
| 439 |
+
|
| 440 |
+
// TODO: reformat & prepare for translation
|
| 441 |
+
$pointers['welcome'] = array('target' => '#menu-tools', 'edge' => 'left', 'align' => 'right', 'content' => 'Thank you for using the <b style="font-weight: 700;">WP Htaccess Editor</b> plugin.<br>Open <a href="' . admin_url('tools.php?page=wp-htaccess-editor'). '">Tools - WP Htaccess Editor</a> to access the editor and start editing the <i>.htaccess</i> file.');
|
| 442 |
+
|
| 443 |
+
return $pointers;
|
| 444 |
+
} // get_pointers
|
| 445 |
+
|
| 446 |
+
|
| 447 |
+
/**
|
| 448 |
+
* Enqueue CSS and JS files
|
| 449 |
+
*
|
| 450 |
+
* @param string $hook Page hook name.
|
| 451 |
+
*
|
| 452 |
+
* @return null
|
| 453 |
+
*/
|
| 454 |
+
function admin_enqueue_scripts($hook) {
|
| 455 |
+
// welcome pointer is shown on all pages except WPHE, only to admins, until dismissed
|
| 456 |
+
$pointers = $this->get_pointers();
|
| 457 |
+
$dismissed_notices = $this->get_dismissed_notices();
|
| 458 |
+
|
| 459 |
+
foreach ($dismissed_notices as $notice_name => $tmp) {
|
| 460 |
+
if ($tmp) {
|
| 461 |
+
unset($pointers[$notice_name]);
|
| 462 |
+
}
|
| 463 |
+
} // foreach
|
| 464 |
+
|
| 465 |
+
if (current_user_can('administrator') && !empty($pointers) && 'tools_page_wp-htaccess-editor' != $hook) {
|
| 466 |
+
$pointers['_nonce_dismiss_pointer'] = wp_create_nonce('wp-htaccess-editor_dismiss_notice');
|
| 467 |
+
|
| 468 |
+
wp_enqueue_style('wp-pointer');
|
| 469 |
+
|
| 470 |
+
wp_enqueue_script('wp-htaccess-editor-pointers', $this->plugin_url . 'js/wp-htaccess-editor-pointers.js', array('jquery'), $this->version, true);
|
| 471 |
+
wp_enqueue_script('wp-pointer');
|
| 472 |
+
wp_localize_script('wp-pointer', 'wp_htaccess_editor_pointers', $pointers);
|
| 473 |
+
}
|
| 474 |
+
|
| 475 |
+
// exit early if not on WPHE page
|
| 476 |
+
if ('tools_page_wp-htaccess-editor' != $hook) {
|
| 477 |
+
return;
|
| 478 |
+
}
|
| 479 |
+
|
| 480 |
+
$options = $this->get_options();
|
| 481 |
+
$editor_settings['codeEditor'] = wp_enqueue_code_editor(array($this->get_htaccess_path()));
|
| 482 |
+
$editor_settings['codeEditor']['codemirror']['mode'] = 'nginx';
|
| 483 |
+
|
| 484 |
+
$js_localize = array('undocumented_error' => __('An undocumented error has occurred. Please refresh the page and try again.', 'wp-htaccess-editor'),
|
| 485 |
+
'documented_error' => __('An error has occurred.', 'wp-htaccess-editor'),
|
| 486 |
+
'plugin_name' => __('WP Htaccess Editor', 'wp-htaccess-editor'),
|
| 487 |
+
'home_url' => get_home_url(),
|
| 488 |
+
'settings_url' => admin_url('tools.php?page=wp-htaccess-editor'),
|
| 489 |
+
'loading_icon_url' => $this->plugin_url . 'img/loading-icon.png',
|
| 490 |
+
'cancel_button' => __('Cancel', 'wp-htaccess-editor'),
|
| 491 |
+
'ok_button' => __('OK', 'wp-htaccess-editor'),
|
| 492 |
+
'saving' => __('Saving in progress. Please wait.', 'wp-htaccess-editor'),
|
| 493 |
+
'restoring' => __('Restoring in progress. Please wait.', 'wp-htaccess-editor'),
|
| 494 |
+
'save_success' => __('Changes have been saved.', 'wp-htaccess-editor'),
|
| 495 |
+
'restore_message' => __('This will restore the last saved backup of .htaccess. There is NO UNDO.', 'wp-htaccess-editor'),
|
| 496 |
+
'restore_title' => __('Restore last backup?', 'wp-htaccess-editor'),
|
| 497 |
+
'restore_button' => __('Restore Last Saved Backup of .htaccess', 'wp-htaccess-editor'),
|
| 498 |
+
'restore_success' => __('Backup has been successfully restored. Click OK to reload the page.', 'wp-htaccess-editor'),
|
| 499 |
+
'site_error' => __('There is an error in the .htaccess file and your site is probably no longer accessible.<br><br>DO NOT panic or reload this page. Close this message. First, try the "Restore Last Backup" button. If it doesn\'t work read instruction on this very page on how to restore the site.', 'wp-htaccess-editor'),
|
| 500 |
+
'nonce_dismiss_notice' => wp_create_nonce('wp-htaccess-editor_dismiss_notice'),
|
| 501 |
+
'nonce_do_action' => wp_create_nonce('wp-htaccess-editor_do_action'),
|
| 502 |
+
'cm_settings' => $editor_settings);
|
| 503 |
+
|
| 504 |
+
wp_enqueue_style('wp-codemirror');
|
| 505 |
+
wp_enqueue_style('wp-htaccess-editor', $this->plugin_url . 'css/wp-htaccess-editor.css', array(), $this->version);
|
| 506 |
+
wp_enqueue_style('wp-htaccess-editor-sweetalert2', $this->plugin_url . 'css/sweetalert2.min.css', array(), $this->version);
|
| 507 |
+
|
| 508 |
+
wp_enqueue_script('jquery-ui-tabs');
|
| 509 |
+
wp_enqueue_script('wp-htaccess-editor-sweetalert2', $this->plugin_url . 'js/sweetalert2.min.js', array('jquery'), $this->version, true);
|
| 510 |
+
wp_enqueue_script('wp-theme-plugin-editor');
|
| 511 |
+
wp_enqueue_script('wp-htaccess-editor', $this->plugin_url . 'js/wp-htaccess-editor.js', array('jquery'), $this->version, true);
|
| 512 |
+
wp_localize_script('wp-htaccess-editor', 'wp_htaccess_editor', $js_localize);
|
| 513 |
+
|
| 514 |
+
// fix for aggressive plugins that include their CSS files on all pages
|
| 515 |
+
wp_dequeue_style('uiStyleSheet');
|
| 516 |
+
wp_dequeue_style('wpcufpnAdmin' );
|
| 517 |
+
wp_dequeue_style('unifStyleSheet' );
|
| 518 |
+
wp_dequeue_style('wpcufpn_codemirror');
|
| 519 |
+
wp_dequeue_style('wpcufpn_codemirrorTheme');
|
| 520 |
+
wp_dequeue_style('collapse-admin-css');
|
| 521 |
+
wp_dequeue_style('jquery-ui-css');
|
| 522 |
+
wp_dequeue_style('tribe-common-admin');
|
| 523 |
+
wp_dequeue_style('file-manager__jquery-ui-css');
|
| 524 |
+
wp_dequeue_style('file-manager__jquery-ui-css-theme');
|
| 525 |
+
wp_dequeue_style('wpmegmaps-jqueryui');
|
| 526 |
+
wp_dequeue_style('wp-botwatch-css');
|
| 527 |
+
} // admin_enqueue_scripts
|
| 528 |
+
|
| 529 |
+
|
| 530 |
+
/**
|
| 531 |
+
* Run an action via AJAX call.
|
| 532 |
+
*
|
| 533 |
+
* @return null
|
| 534 |
+
*/
|
| 535 |
+
function ajax_do_action() {
|
| 536 |
+
check_ajax_referer('wp-htaccess-editor_do_action');
|
| 537 |
+
|
| 538 |
+
if (false === current_user_can('administrator')) {
|
| 539 |
+
wp_send_json_error(__('You are not allowed to perform this action.', 'wp-htaccess-editor'));
|
| 540 |
+
}
|
| 541 |
+
|
| 542 |
+
if (empty($_POST['subaction'])) {
|
| 543 |
+
wp_send_json_error(__('Subaction name is undefined.', 'wp-htaccess-editor'));
|
| 544 |
+
} else {
|
| 545 |
+
$subaction = substr(sanitize_key($_POST['subaction']), 0, 64);
|
| 546 |
+
}
|
| 547 |
+
|
| 548 |
+
if ($subaction == 'save_htaccess') {
|
| 549 |
+
if (false == $this->create_htaccess_backup(true, true)) {
|
| 550 |
+
wp_send_json_error(__('Unable to create .htaccess backup in /wp-content/. Please check file permissions.', 'wp-htaccess-editor'));
|
| 551 |
+
}
|
| 552 |
+
|
| 553 |
+
// since we're working with code it's hard/impossible to sanitize input
|
| 554 |
+
// WP core doesn't sanitize either for plugin/theme editor so it should be OK
|
| 555 |
+
// nonce is in place and user permissions are double checked
|
| 556 |
+
$new_content = wp_unslash(trim($_POST['new_content']));
|
| 557 |
+
if (false == $this->is_htaccess_writable() || false == $this->write_htaccess($new_content)) {
|
| 558 |
+
wp_send_json_error(__('Could not write .htaccess file. Please check file permissions.', 'wp-htaccess-editor'));
|
| 559 |
+
}
|
| 560 |
+
|
| 561 |
+
wp_send_json_success();
|
| 562 |
+
} elseif ($subaction == 'restore_htaccess_from_db') {
|
| 563 |
+
if ($this->restore_db_backup()) {
|
| 564 |
+
wp_send_json_success();
|
| 565 |
+
} else {
|
| 566 |
+
wp_send_json_error();
|
| 567 |
+
}
|
| 568 |
+
} else {
|
| 569 |
+
wp_send_json_error(__('Unknown subaction.', 'wp-htaccess-editor'));
|
| 570 |
+
}
|
| 571 |
+
} // ajax_do_action
|
| 572 |
+
|
| 573 |
+
|
| 574 |
+
/**
|
| 575 |
+
* Write new content to .htaccess
|
| 576 |
+
*
|
| 577 |
+
* @param string $new_content New content for .htaccess file.
|
| 578 |
+
*
|
| 579 |
+
* @return bool
|
| 580 |
+
*/
|
| 581 |
+
function write_htaccess($new_content) {
|
| 582 |
+
$htaccess_path = $this->get_htaccess_path();
|
| 583 |
+
$result = $this->wp_filesystem->put_contents($htaccess_path, $new_content);
|
| 584 |
+
@clearstatcache();
|
| 585 |
+
|
| 586 |
+
if (true === $result) {
|
| 587 |
+
$meta = $this->get_meta();
|
| 588 |
+
$meta['edits_count']++;
|
| 589 |
+
$this->update_options('meta', $meta);
|
| 590 |
+
return true;
|
| 591 |
+
} else{
|
| 592 |
+
return false;
|
| 593 |
+
}
|
| 594 |
+
} // write_htaccess
|
| 595 |
+
|
| 596 |
+
|
| 597 |
+
/**
|
| 598 |
+
* Backup .htaccess file.
|
| 599 |
+
*
|
| 600 |
+
* @param bool $db_save Create backup in DB.
|
| 601 |
+
* @param bool $file_save Create backup in FS.
|
| 602 |
+
*
|
| 603 |
+
* @return bool
|
| 604 |
+
*/
|
| 605 |
+
function create_htaccess_backup($db_save = true, $file_save = true) {
|
| 606 |
+
$success = false;
|
| 607 |
+
$orig_path = $this->get_htaccess_path();
|
| 608 |
+
|
| 609 |
+
if ($this->is_htaccess_readable()) {
|
| 610 |
+
$htaccess_content_orig = $this->wp_filesystem->get_contents($orig_path);
|
| 611 |
+
} else {
|
| 612 |
+
// .htaccess doesn't exists, nothing to backup
|
| 613 |
+
return true;
|
| 614 |
+
}
|
| 615 |
+
|
| 616 |
+
if ($db_save) {
|
| 617 |
+
$tmp = $this->get_options();
|
| 618 |
+
$tmp['last_backup'] = $htaccess_content_orig;
|
| 619 |
+
$this->update_options('options', $tmp);
|
| 620 |
+
$success = true;
|
| 621 |
+
}
|
| 622 |
+
|
| 623 |
+
if ($file_save) {
|
| 624 |
+
if (!$this->create_secure_backup_folder()) {
|
| 625 |
+
return false;
|
| 626 |
+
}
|
| 627 |
+
|
| 628 |
+
$backup_path = trailingslashit(WP_CONTENT_DIR) . $this->backup_folder . '/htaccess-' . date('Y-m-d-H-i-s', current_time('timestamp')) . '.backup';
|
| 629 |
+
$success = $this->wp_filesystem->put_contents($backup_path, $htaccess_content_orig);
|
| 630 |
+
}
|
| 631 |
+
|
| 632 |
+
if ($success) {
|
| 633 |
+
return true;
|
| 634 |
+
} else{
|
| 635 |
+
return false;
|
| 636 |
+
}
|
| 637 |
+
} // create_htaccess_backup
|
| 638 |
+
|
| 639 |
+
|
| 640 |
+
/**
|
| 641 |
+
* Create .htaccess backup folder and secure it.
|
| 642 |
+
*
|
| 643 |
+
* @return bool
|
| 644 |
+
*/
|
| 645 |
+
function create_secure_backup_folder() {
|
| 646 |
+
@clearstatcache();
|
| 647 |
+
$secure_path = $this->get_backup_folder() . '.htaccess';
|
| 648 |
+
$secure_text = trim('
|
| 649 |
+
# WP Htaccess Editor - secure backups
|
| 650 |
+
<files *.*>
|
| 651 |
+
order allow,deny
|
| 652 |
+
deny from all
|
| 653 |
+
</files>');
|
| 654 |
+
|
| 655 |
+
if (false == $this->wp_filesystem->is_dir($this->get_backup_folder())) {
|
| 656 |
+
$new_folder = $this->wp_filesystem->mkdir($this->get_backup_folder());
|
| 657 |
+
if (!$new_folder) {
|
| 658 |
+
return false;
|
| 659 |
+
}
|
| 660 |
+
}
|
| 661 |
+
|
| 662 |
+
if ($this->wp_filesystem->exists($secure_path)) {
|
| 663 |
+
return true;
|
| 664 |
+
} else {
|
| 665 |
+
$write = $this->wp_filesystem->put_contents($secure_path, $secure_text);
|
| 666 |
+
if ($write){
|
| 667 |
+
return true;
|
| 668 |
+
} else {
|
| 669 |
+
return false;
|
| 670 |
+
}
|
| 671 |
+
}
|
| 672 |
+
} // create_secure_backup_folder
|
| 673 |
+
|
| 674 |
+
|
| 675 |
+
/**
|
| 676 |
+
* Restore last .htaccess backup from DB.
|
| 677 |
+
*
|
| 678 |
+
* @return bool
|
| 679 |
+
*/
|
| 680 |
+
function restore_db_backup() {
|
| 681 |
+
$htaccess_path = $this->get_htaccess_path();
|
| 682 |
+
|
| 683 |
+
$backup_contents = $this->get_options('last_backup');
|
| 684 |
+
if (!empty($backup_contents)) {
|
| 685 |
+
@clearstatcache();
|
| 686 |
+
$write = $this->wp_filesystem->put_contents($htaccess_path, $backup_contents);
|
| 687 |
+
@clearstatcache();
|
| 688 |
+
if ($write) {
|
| 689 |
+
return true;
|
| 690 |
+
} else {
|
| 691 |
+
return false;
|
| 692 |
+
}
|
| 693 |
+
} else {
|
| 694 |
+
return false;
|
| 695 |
+
}
|
| 696 |
+
} // restore_db_backup
|
| 697 |
+
|
| 698 |
+
|
| 699 |
+
/**
|
| 700 |
+
* Outputs complete plugin's admin page
|
| 701 |
+
*
|
| 702 |
+
* @return null
|
| 703 |
+
*/
|
| 704 |
+
function plugin_page() {
|
| 705 |
+
$notice_shown = false;
|
| 706 |
+
$meta = $this->get_meta();
|
| 707 |
+
$notices = $this->get_dismissed_notices();
|
| 708 |
+
|
| 709 |
+
$htaccess_content = $this->get_htaccess_content();
|
| 710 |
+
|
| 711 |
+
// double check for admin priv
|
| 712 |
+
if (!current_user_can('administrator')) {
|
| 713 |
+
wp_die(__('Sorry, you are not allowed to access this page.', 'wp-htaccess-editor'));
|
| 714 |
+
}
|
| 715 |
+
|
| 716 |
+
settings_errors();
|
| 717 |
+
echo '<div class="wrap">';
|
| 718 |
+
echo '<h1>' . __('WP Htaccess Editor', 'wp-htaccess-editor') . '</h1>';
|
| 719 |
+
echo '<form id="wp-htaccess-editor-form" action="' . admin_url('tools.php?page=wp-htaccess-editor') . '" method="post" autocomplete="off">';
|
| 720 |
+
|
| 721 |
+
// TODO: properly mark for translation
|
| 722 |
+
if (false === $this->is_htaccess_readable()) {
|
| 723 |
+
echo '<div class="card notice-wrapper notice-error">';
|
| 724 |
+
echo '<h2>' . __('.htaccess file does not exist!', 'wp-htaccess-editor') . '</h2>';
|
| 725 |
+
echo '<p>We couldn\'t locate your .htaccess file on the default location <code>' . $this->get_htaccess_path() . '</code>. We\'ll attempt to create the file when you make the first save with the editor.<br>We recommend opening <a href="' . admin_url('options-permalink.php') . '">Settings - Permalinks</a> and setting a URL structure other than default which will create the default WP .htaccess file.</p>';
|
| 726 |
+
echo '</div>';
|
| 727 |
+
$notice_shown = true;
|
| 728 |
+
}
|
| 729 |
+
|
| 730 |
+
// TODO: properly mark for translation
|
| 731 |
+
if (false === $this->is_htaccess_writable() && false === $notice_shown) {
|
| 732 |
+
echo '<div class="card notice-wrapper notice-error">';
|
| 733 |
+
echo '<h2>' . __('.htaccess file is not writable!', 'wp-htaccess-editor') . '</h2>';
|
| 734 |
+
echo '<p>Your .htaccess file located in <code>' . $this->get_htaccess_path() . '</code> can\'t be edited by WordPress or this plugin. You can only edit it via FTP.<br>If you want to edit it via WordPress check the file permissions and set them to 644.</p>';
|
| 735 |
+
echo '</div>';
|
| 736 |
+
$notice_shown = true;
|
| 737 |
+
}
|
| 738 |
+
|
| 739 |
+
if (false === $notice_shown && is_multisite()) {
|
| 740 |
+
echo '<div class="card notice-wrapper notice-error">';
|
| 741 |
+
echo '<h2>' . __('WP Htaccess Editor may not be compatible with multisite!', 'wp-htaccess-editor') . '</h2>';
|
| 742 |
+
echo '<p>' . __('Please be careful when using WP Htaccess Editor with multisite enabled. We\'re working on testing it and making fully compatible with WP-MU. <b>Till then please be careful.</b> Thank you for understanding.', 'wp-htaccess-editor') . '</p>';
|
| 743 |
+
echo '</div>';
|
| 744 |
+
$notice_shown = true;
|
| 745 |
+
}
|
| 746 |
+
|
| 747 |
+
// ask for rating after a few saves
|
| 748 |
+
if ($meta['edits_count'] > 2 && false === $notice_shown && false == $this->get_dismissed_notices('rate')) {
|
| 749 |
+
echo '<div class="card notice-wrapper">';
|
| 750 |
+
echo '<h2>' . __('Please help us keep the plugin free & up-to-date', 'wp-htaccess-editor') . '</h2>';
|
| 751 |
+
echo '<p>' . __('If you use & enjoy WP Htaccess Editor, <b>please rate it on WordPress.org</b>. It only takes a second and helps us keep the plugin free and maintained. Thank you!', 'wp-htaccess-editor') . '</p>';
|
| 752 |
+
echo '<p><a class="button-primary button" title="' . __('Rate WP Htaccess Editor', 'wp-htaccess-editor') . '" target="_blank" href="https://wordpress.org/support/plugin/wp-htaccess-editor/reviews/#new-post">' . __('Help keep the plugin free - rate it!', 'wp-htaccess-editor') . '</a> <a href="#" class="wphe-dismiss-notice dismiss-notice-rate" data-notice="rate">' . __('I\'ve already rated it', 'wp-htaccess-editor') . '</a></p>';
|
| 753 |
+
echo '</div>';
|
| 754 |
+
$notice_shown = true;
|
| 755 |
+
}
|
| 756 |
+
|
| 757 |
+
// TODO: properly mark for translation
|
| 758 |
+
echo '<div class="card" id="card-description">';
|
| 759 |
+
echo '<a class="toggle-card" href="#" title="' . __('Collapse / expand box', 'wp-htaccess-editor') . '"><span class="dashicons dashicons-arrow-up-alt2"></span></a>';
|
| 760 |
+
echo '<h2>' . __('Please read carefully before proceeding', 'wp-htaccess-editor') . '</h2>';
|
| 761 |
+
echo '<p>There is nothing wrong with editing the .htaccess file. However, <b>in case you make a mistake while editing it, there is a possibility you\'ll need FTP access to restore your site to a working state</b>. That\'s why this plugin makes automatic backups, and we have described in detail how to recover from such incidents in the paragraphs below.<br>';
|
| 762 |
+
|
| 763 |
+
echo 'For more details about .htaccess syntax and examples, please visit the <a href="http://httpd.apache.org/docs/current/howto/htaccess.html" target="_blank">official Apache Tutorial</a>.</p>';
|
| 764 |
+
|
| 765 |
+
echo '<b>How to restore the site in case of error 500 or white screen caused by .htaccess</b>';
|
| 766 |
+
echo '<p>Do not panic. No data is lost, and your site will be up again in minutes. FTP to your site or open the server\'s control panel such as cPanel to locate the .htaccess file in <code>' . $this->get_htaccess_path() . '</code>. Once you find the file there are several options to restore the site.<br>The first option is to edit the file to fix the errors you made.<br>The second one is to delete the file. Obviously, any custom rules in it will be gone, and in order for permalinks to work again you have to visit WP Admin - Options - Permalinks and click "Save Changes". This will rebuild the default .htaccess file.<br>Third (and preferred) way of fixing is to restore the file from the backup which you\'ll find in the <code>' . $this->get_backup_folder() . '</code> folder. The folder will probably contain multiple backup files. Locate the latest one by looking at the timestamp in the filename. Once located copy the file to <code>' . $this->get_htaccess_path(true) . '</code> and rename it to .htaccess.</p>';
|
| 767 |
+
|
| 768 |
+
echo '<b>How to restore .htaccess in case of a non-white-screen error</b>';
|
| 769 |
+
echo '<p>Click the "Restore Last Saved Backup" button below the editor and .htaccess will be restored to the version before the last save. Please note that this method only works if the error in the file is logical, not syntactical. For instance, if you banned the wrong IP you can undo. But if you misspelled "RewriteCond" you have to use the method above as the only way to recover is via FTP or cPanel.</p>';
|
| 770 |
+
|
| 771 |
+
echo '<b>Support</b>';
|
| 772 |
+
echo '<p>For additional support and questions, please visit the <a href="https://wordpress.org/support/plugin/wp-htaccess-editor" target="_blank">official support forum</a> or <a href="mailto:support@webfactoryltd.com?subject=WP Htaccess Editor problems">email us</a> if the issue can\'t be discussed publically.</p>';
|
| 773 |
+
echo '</div>';
|
| 774 |
+
|
| 775 |
+
echo '<div id="htaccess-editor-wrap">';
|
| 776 |
+
if (false == $this->get_dismissed_notices('editor-warning')) {
|
| 777 |
+
echo '<div id="enable-editor-notice" class="notice-wrapper"><h3><strong>Please be careful when editing the .htaccess file!</strong><br>This plugin makes automatic backups every time you make a change. Detailed instructions on how to restore backups are available in the box above.</h3><br><a href="#" data-notice="editor-warning" class="wphe-dismiss-notice button button-secondary">I understand. Enable the editor.</a></div>';
|
| 778 |
+
}
|
| 779 |
+
echo '<textarea cols="70" rows="20" name="newcontent" id="newcontent" aria-describedby="editor-keyboard-trap-help-1 editor-keyboard-trap-help-2 editor-keyboard-trap-help-3 editor-keyboard-trap-help-4">' . esc_textarea($htaccess_content) . '</textarea>';
|
| 780 |
+
echo '</div>';
|
| 781 |
+
|
| 782 |
+
echo '<p id="wphe-buttons" style="' . ($this->get_dismissed_notices('editor-warning')? '': 'display: none;') .'"><a id="wphe_save_htaccess" href="#" class="button button-primary">Save Changes</a> <a id="wphe_restore_htaccess" href="#" class="button button-secondary">Restore Last Backup</a></p>';
|
| 783 |
+
|
| 784 |
+
echo '</form>';
|
| 785 |
+
echo '</div>'; // wrap
|
| 786 |
+
} // plugin_page
|
| 787 |
+
|
| 788 |
+
|
| 789 |
+
/**
|
| 790 |
+
* Clean up on uninstall; no action on deactive at the moment.
|
| 791 |
+
*
|
| 792 |
+
* @return null
|
| 793 |
+
*/
|
| 794 |
+
static function uninstall() {
|
| 795 |
+
delete_option('wp-htaccess-editor');
|
| 796 |
+
} // uninstall
|
| 797 |
+
|
| 798 |
+
|
| 799 |
+
/**
|
| 800 |
+
* Disabled; we use singleton pattern so magic functions need to be disabled.
|
| 801 |
+
*
|
| 802 |
+
* @return null
|
| 803 |
+
*/
|
| 804 |
+
private function __clone() {}
|
| 805 |
+
|
| 806 |
+
|
| 807 |
+
/**
|
| 808 |
+
* Disabled; we use singleton pattern so magic functions need to be disabled.
|
| 809 |
+
*
|
| 810 |
+
* @return null
|
| 811 |
+
*/
|
| 812 |
+
private function __sleep() {}
|
| 813 |
+
|
| 814 |
+
|
| 815 |
+
/**
|
| 816 |
+
* Disabled; we use singleton pattern so magic functions need to be disabled.
|
| 817 |
+
*
|
| 818 |
+
* @return null
|
| 819 |
+
*/
|
| 820 |
+
private function __wakeup() {}
|
| 821 |
+
} // WP_Htaccess_Editor class
|
| 822 |
+
|
| 823 |
+
|
| 824 |
+
// Create plugin instance and hook things up
|
| 825 |
+
// TODO: load everything only in admin!
|
| 826 |
+
global $wp_htaccess_editor;
|
| 827 |
+
$wp_htaccess_editor = WP_Htaccess_Editor::get_instance();
|
| 828 |
+
add_action('plugins_loaded', array($wp_htaccess_editor, 'load_textdomain'));
|
| 829 |
+
register_uninstall_hook(__FILE__, array('WP_Htaccess_Editor', 'uninstall'));
|
