Version Description
- Upgrade to PRO directly from the plugin ( Upgrade to PRO screen )
- Streamlined save process / redirects in the POST process
Download this release
Release Info
Developer | basszje |
Plugin | WordPress Button Plugin MaxButtons |
Version | 9.0 |
Comparing to | |
See all releases |
Code changes from version 8.8.4 to 9.0
- assets/css/style.css +42 -0
- assets/css/style.css.map +1 -1
- assets/scss/_ads.scss +43 -24
- assets/scss/_gopro.scss +23 -0
- classes/controller.php +30 -1
- classes/controllers/editorController.php +21 -9
- classes/controllers/listController.php +6 -3
- classes/controllers/settingsController.php +0 -3
- classes/controllers/upgradeController.php +97 -1
- classes/maxbuttons-admin-helper.php +22 -0
- classes/maxbuttons-class.php +72 -35
- classes/upgrader/installer.php +140 -0
- classes/upgrader/license.php +243 -0
- images/gopro/linkmanager.png +0 -0
- includes/maxbuttons-button.php +1 -1
- includes/maxbuttons-pro.php +32 -1
- maxbuttons.php +4 -4
- readme.txt +19 -6
assets/css/style.css
CHANGED
@@ -2038,6 +2038,29 @@
|
|
2038 |
text-align: center;
|
2039 |
padding-bottom: 14px;
|
2040 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2041 |
#maxbuttons .ad-wrap .ads ul {
|
2042 |
list-style: none;
|
2043 |
}
|
@@ -2105,6 +2128,25 @@
|
|
2105 |
color: #62c0e6;
|
2106 |
text-decoration: underline;
|
2107 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2108 |
#maxbuttons.maxbuttons-pro-gopro .default-section {
|
2109 |
text-align: center;
|
2110 |
padding: 0px 10px;
|
2038 |
text-align: center;
|
2039 |
padding-bottom: 14px;
|
2040 |
}
|
2041 |
+
#maxbuttons .ad-wrap .ads.text-block {
|
2042 |
+
border: 1px solid #ccc;
|
2043 |
+
}
|
2044 |
+
#maxbuttons .ad-wrap .ads.text-block ol {
|
2045 |
+
margin-left: 35px;
|
2046 |
+
}
|
2047 |
+
#maxbuttons .ad-wrap .ads.text-block ol li {
|
2048 |
+
text-align: left;
|
2049 |
+
}
|
2050 |
+
#maxbuttons .ad-wrap .ads.text-block ol li a {
|
2051 |
+
color: #000;
|
2052 |
+
font-weight: 700;
|
2053 |
+
}
|
2054 |
+
#maxbuttons .ad-wrap .ads.text-block h2 {
|
2055 |
+
padding-top: 20px;
|
2056 |
+
border-top: 1px solid #ccc;
|
2057 |
+
}
|
2058 |
+
#maxbuttons .ad-wrap .ads.text-block img {
|
2059 |
+
overflow: hidden;
|
2060 |
+
}
|
2061 |
+
#maxbuttons .ad-wrap .ads p {
|
2062 |
+
padding: 8px;
|
2063 |
+
}
|
2064 |
#maxbuttons .ad-wrap .ads ul {
|
2065 |
list-style: none;
|
2066 |
}
|
2128 |
color: #62c0e6;
|
2129 |
text-decoration: underline;
|
2130 |
}
|
2131 |
+
#maxbuttons.maxbuttons-pro-gopro .license-section {
|
2132 |
+
background-color: #fff;
|
2133 |
+
padding: 16px;
|
2134 |
+
margin: 25px 0;
|
2135 |
+
}
|
2136 |
+
#maxbuttons.maxbuttons-pro-gopro .license-section h3 {
|
2137 |
+
font-size: 20px;
|
2138 |
+
}
|
2139 |
+
#maxbuttons.maxbuttons-pro-gopro .license-section .license-error {
|
2140 |
+
border: 1px solid #ff0000;
|
2141 |
+
padding: 8px;
|
2142 |
+
}
|
2143 |
+
#maxbuttons.maxbuttons-pro-gopro .license-section .license-error p.error {
|
2144 |
+
font-size: 14px;
|
2145 |
+
color: #ff0000;
|
2146 |
+
}
|
2147 |
+
#maxbuttons.maxbuttons-pro-gopro .license-section .license-error p.small {
|
2148 |
+
font-size: 12px;
|
2149 |
+
}
|
2150 |
#maxbuttons.maxbuttons-pro-gopro .default-section {
|
2151 |
text-align: center;
|
2152 |
padding: 0px 10px;
|
assets/css/style.css.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sourceRoot":"","sources":["../scss/_global.scss","../scss/style.scss","../scss/_general.scss","../scss/_overview.scss","../scss/_editor.scss","../scss/_elements.scss","../scss/_collection.scss","../scss/_mixins.scss","../scss/_input_range.scss","../scss/_support.scss","../scss/_settings.scss","../scss/_subtabs.scss","../scss/_feedback.scss","../scss/_ads.scss","../scss/_gopro.scss","../scss/_gosocial.scss"],"names":[],"mappings":";AAEA;AAGC;EACC;;;AAOD;EACC;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACC;EACI;EACA;EACA;;;AAIN;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC3CD;EAGC;EACA;ACZD;;AAAA;ACqJA;AAeA;AC2OA;AAyIA;AA+IA;ACvqBA;AA4SA;AA2GA;AChZA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AJJA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;EACC;EACA;EACA;EACA;EACA;;AAMA;EAEC;;AAED;EACC;EACA;;AAGD;EAAY;;AACZ;EAAU;;AASX;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;EACC;EACA;;AK+BC;ELjCF;IAKE;;;AAKD;EAEA;EAEA;EAGA;EACA;;AKeC;ELvBD;IAYC;IACA;;;AAGD;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EAAO;;AAST;EAAiB;;AAGjB;EACC;IAAQ;;;AC5GR;EAAgB;;AAMhB;EAAQ;;AAIT;EACC;EACA;EACA;;AAEA;EAEC;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;;AAGF;EAEC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAED;EAEC;EACA;EACA;EACA;EAEA;EACA;EACA;;AAED;EAEC;;AAKF;EACC;;AAED;EACC;;AAED;EAEC;EAEA;;AIUE;EJdH;IAOE;IACA;;;AAED;EACC;EACA;;AAKF;EACC;;AIJE;EJGH;IAIE;;;AAGF;EACC;EACA;;AACA;EAEC;EACA;EACA;EAEA;EACA;;AASF;EACC;;AAED;EACC;;AAKF;EACC;EACA;;AACA;EACC;;AAEA;EACA;;AAED;EACC;;AAEA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAMA;EAAgB;EAAsB;EAAuB;;AAC9D;EAAa;;AAMb;EACC;EACA;;AACA;EACC;EACA;EACA;;AAOH;EAEC;EACA;EACA;;AAEA;EACC;EACA;;AACA;EACC;EACC;EACD;EACA;EACA;EACA;EACA;EACA;EACA;;AAOH;EAEE;EACA;EACA;EACA;;AAEA;EACC;;AAED;EACC;;AAED;EACC;EAAiB;;AAElB;EAAK;;AACL;EACE;EACD;;AAGD;EAEC;EACA;EACA;;ACvNH;EAEC;EACA;;AAGA;EACA;EACA;EGmCA;EACA;EHlCA;EACA;EACA;;AAEA;EAEC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIA;EACC;;AAKA;EAEC;;AACA;EAAU;;AACV;EACC;EACA;;AAIH;EAEC;EAGA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAKD;EACC;EAEC;;AAIH;EACE;;AAIH;EACC;EACA;EACA;EACA;EAEA;EACA;EACA;EACC;EACD;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAGA;EAEC;;AAID;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAMF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;AAMH;EACC;;AAMH;EACA;EACA;EACA;;AACA;EAEG;EACA;;AAKF;EACA;EACA;EACA;;AACC;EACC;;AAGD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;;AG1HA;EH+GD;IAeC;;;AAKD;EAAoB;;AAKrB;EACC;;AACA;EAAY;;AAGb;EACC;EACA;;AAED;EACC;;AAED;EGpLA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;AH6KA;EGrLA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;AHkLD;EACA;AAiBA;AAAA;AAAA;AAAA;;AAdA;EACC;EACA;EACA;EACA;EACA;EACA;;AAKD;EACC;;AASD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;EAEA;;AAKC;EACC;;AAED;EAAS;;AAET;EACC;;AACD;EAAI;EAAiB;;AAGnB;EAAS;EACP;;AAKL;EAEE;EACA;EACA;EACA;EAEA;;AGlOD;EH2ND;IAUG;IACA;IACA;IACA;;;AAKH;EAEE;EACA;EACD;EACA;;AAEA;EACC;EACA;EACA;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;EACE;EAED;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;EACF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AAED;EAAK;;AACL;EAAI;;AAMN;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AGxUG;EH+TJ;IG/WC;IACA;IACA;IHyXC;IACA;IACA;IACA;IACA;IACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AACA;EAEC;;AAGF;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EG1aF;EACA;EACA;;AH4aA;EACC;EACA;;AAED;EACC;;AAEA;EACC;EACA;;AAED;EACC;;AAED;EAEC;EACA;EACA;;AACA;EAGC;EACA;EACA;EACA;EACA;;AAGA;EAGC;EACA;EACE;EACA;EACA;EACF;EACA;;AASF;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;;AAGF;EAEC;;AAUJ;EAAsB;;AAGrB;EACA;;AAID;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAMA;AAGF;AAAA;AAAA;AAAA;;AAIC;EACC;;AAKF;EAEC;;AAID;EAEE;;AAEA;EAEC;;AAEA;EAEC;EACA;EACA;EACA;EACA;EAEA;EAGA;EAEA;EACA;EACA;EACA;EACA;EACA;AAYH;AAAA;AAAA;AAAA;;AAVG;EAEC;;AAED;EAEC;EACA;EACA;;AAMD;EAEC;EAGA;;AACA;EAEC;;AAIF;EAEC;EACA;EACA;EACA;EACA;;AAEA;EAEC;EACA;EACA;EACA;;AAKH;EAEE;EACA;;AAGH;EAEC;;AACA;EAEC;;AAED;EAAY;;AAOd;EAEC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAEA;EAAK;;AAGN;EAEE;;AACD;EAEC;EACA;EACA;;AAEA;EACC;;AAED;EAEC;;ACtsBJ;EACC;;AACA;EAAU;;AAGX;EACC;EACA;EAEA;EACA;;AAEA;EAAM;;AACN;EAAY;;AAEV;EAAQ;;AACR;EACC;EACA;;AAKJ;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AASD;EACC;;AEuCG;EFxCJ;IAIE;;;AAED;EACC;EACA;;AAED;EACC;;AAED;EACC;;AAED;EACA;;AAID;EAEC;;AAEA;EACC;;AEcE;EFfH;IAIE;;;AAGF;EAAU;;AEQP;EFRH;IAGE;;;AAOH;EACC;EACA;;AASC;EACC;;AAGF;EAAQ;;AACR;EAAgB;;AAChB;EAAuB;;AACvB;EAA0B;;AAGzB;EACC;;AAIF;EACC;;AAGD;EAA0B;;AACzB;EAAyC;;AAEzC;EACC;;AACC;EACC;;AAKH;EAAiB;EAAoB;;AACrC;EAAQ;;AAER;EAAe;;AE9Cb;EFmDD;IACC;;EACA;IACC;;EAGD;IAAM;;;AAIR;EACC;;AE9DC;EF6DF;IAKG;IACD;IACA;;;AAGF;EACC;;AExEC;EFuEF;IAIE;IACA;;;AAIH;EACC;;AACA;EAAiB;;AElFf;EFgFH;IAKE;;;AAKF;EAAoC;;AACpC;EAAsB;;AAEtB;EACC;EACA;EACA;;AAGC;EAAqB;EAAc;;AACnC;EACC;;AACA;EAAS;EAAiB;;AAC1B;EAA0B;;AAE3B;EAAO;;AACP;EACC;EACA;EACA;EACA;EACA;;AAED;EAAa;EAAiB;EAAc;EAAc;;AAC1D;EAAkB;;AAClB;EAAqB;;AACrB;EACC;EACA;EACA;EACA;EACA;;AAIF;EAAwC;;AACxC;EACE;;AAIH;EAEE;;AAIF;EACE;EACA;;AAQH;EAEC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAMF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAIF;EAEC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AE9LE;EFuLH;IAUE;;;AAGF;EACC;;AAID;EAEC;EACA;EACA;;AACA;EACC;;AAIF;EACK;EACD;EACA;;AAML;EACC;EACA;;AACA;EAAS;;AACT;EAAU;;AAGX;EAEC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAKF;EAGC;EACA;EACA;AACA;AAAA;AAAA;AAAA;AAAA;;AASD;EAEC;;AAEA;EACC;;AAEA;EACC;;AAGF;EAAQ;;AACP;EAA0B;;AAC1B;EACE;EACA;;AAGF;EAEC;;AAED;EACE;EACA;;AAEF;EAAiC;;AAElC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACC;EACA;;AACA;EACG;EACD;EACA;;AAIH;EAAiB;;AACjB;EACC;;AASH;EACC;EACA;;AAEA;EAAmB;;AACnB;EAAqB;EAAa;;AAClC;EACC;;AAED;EEhYA;EACA;EACA;EFgYC;EACA;EACA;EACA;EACA;;AAOA;EACC;EACA;EACA;;AAED;EACC;EEnZF;EACA;EACA;;AFsZC;EAEA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACA;;AACA;EAEC;EACA;;AAIF;EAEC;EACA;;AAIC;EACA;;AAID;EACC;EACA;EACD;EACC;;AACA;EACC;;AAED;EACC;;AAGD;EACE;EACD;EACA;EACA;EACA;EACC;EACF;;AAGA;EACC;EACA;EACA;;AACD;EACE;;AAIF;EACC;EACA;EAEA;EACA;;AACD;EACE;;AAKF;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;;AG3dJ;EACE;EAEA,OApCY;EAqCZ;;AAEA;EACE;;AAEA;EACE;;AAGF;EACE,YA3DQ;;AA8DV;EACE;;AAIJ;EAvCA;EACA,QAhBa;EAiBb;EACA,OAnBY;EA0DV,YAtEU;EAuEV;EACA,eApDW;;AAuDb;EAvCA,YAnCY;EAoCZ;EACA,eAnCa;EAoCb;EACA,QApCa;EAqCb,OApCY;EAwEV;EACA;;AAGF;EArDA;EACA,QAhBa;EAiBb;EACA,OAnBY;EAwEV,YApFU;EAqFV;EACA,eAlEW;;AAqEb;EArDA,YAnCY;EAoCZ;EACA,eAnCa;EAoCb;EACA,QApCa;EAqCb,OApCY;;AAwFZ;EAjEA;EACA,QAhBa;EAiBb;EACA,OAnBY;EAmFV;EACA;EACA;EACA;;AAGF;EAEE;EACA;EACA;;AAGF;EAEE,YA9GU;EA+GV;EACA;;AAGF;EA/EA,YAnCY;EAoCZ;EACA,eAnCa;EAoCb;EACA,QApCa;EAqCb,OApCY;EAgHV;;ACxHJ;EACE;;AAEA;EAEC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;;AAMJ;EACC;EACA;EACA;EACA;;AACA;EACC;;AAEA;EACC;EACA;EACA;;AC7BF;EAEC;;AAEA;EAEC;EACA;EACA;EACA;EACA;;ACXH;EACC;EACA;;AAGD;EACC;EAEA;EACA;;AAEA;EACC;EACA;EACA;;AAKA;EAAa;EAAoB;;AAElC;EAEC;EACA;EACC;EACD;;AACA;EAEC;;AAED;EAEC;;AAOH;EACC;EACA;EJCA;EACA;;AIIC;EAAS;;AACT;EAAS;;AAEV;EACC;;ALpDF;EACC;EACA;;AA8BD;EAEC;;AC8CG;EDhDJ;IAOE;;;AAKD;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AACA;EAAS;;AAEV;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EAGE;EACA;;AAIH;EACC;EACA;EAEA;EACA;;AACA;EACC;;AAWF;EACC;EACA;EACA;EACA;;AAQF;EAEE;EAED;EAGA;;AACA;EACC;EACA;EACA;EAEA;EAEA;;AAGA;EACC;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EAAU;;AACV;EACC;EACA;EACA;EACA;;AAUH;EACC;EACA;EACA;EACA;;AAED;EAAe;;AAKhB;EACC;EACA;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;AAqBA;AAAA;AAAA;;AC/IG;ED8GJ;IAeE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;AAED;EACC;EACC;EAEA;;AAUF;EACC;EACA;;AACA;EAAY;;AAYd;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EAGA;EAEA;EACA;EAAW;EACX;EAAY;EAEZ;;AAEA;EACC;EACA;EAEA;EAEA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EAEA;EAEA;EACA;EACA;EACA;AACD;AAAA;AAAA;AAAA;AAAA;AAAA;;AAMC;EAAK;;AAEJ;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;;AAMJ;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACC;;AAIA;EAAkB;EACjB;;AAIF;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAAe;;AACf;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;;AACA;EAAO;;AAMV;EACC;EACC;EACD;EACA;EACA;EACA;EACA;;AAIA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AACA;EACC;EACA;;AAIH;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;ACnVC;ED2UF;IAWE;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EAA6B;;AAC7B;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAMH;EACC;EACA;EACA;EACA;;AAWF;EAEC;EACA;;AAEA;EAAuB;;AACtB;EACA;EACA;EAEA;EACA;;AMreD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGC;EAEA;EACC;EAEA;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAA+B;EAA6B;;AAC5D;EACC;;AC9BL;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEC;EACA;EACA;;AAEA;EAEC;EACA;;AACA;EACC;;AAIF;EACC;;AAED;EACC;EACC;EACA;EACA;EACD;;AAEA;EACA;EACA;;AAGD;EACC;;AAGA;EAEC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAMH;EACC;EACA;;AAED;EACC;EACA;;AAEC;EACC;EACA;EACA;EACA;EACA;EACA;;AAML;EACC;IACC;;;AC7EA;EACC;EACA;;AAGF;EACE;EACA;EACD;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAIH;EACC;EACA;EACA;;AAEA;EACE;EACA;;AAKH;EACE;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACK;;AAEL;EACC;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACG;EACC;EACA;EACA;;AAKL;EACG;;AAEH;EACC;EACA;;AAMH;EAAM;;AACN;EACC;EACA;EACA;EACA;;AAGD;EAAM;;AACN;EAAO;;AAGR;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACC;EACA;EACC;EACA;;AAIF;EACE;;AAGF;EAEE;EACA;EACA;EACC;EACD;;APnEC;EO6DH;IAUG;IAEA;;;AAKH;EACE;;AAGF;EACE;EACA;;AAGF;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEF;EACE;;AAGD;EACE;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;ACzMN;EACI;;AACA;EACE;;AAIH;EAAK;EAAuB;EAAiB;;AAC5C;EACE;EACA;EACA;;AAEF;EAAK;;AACL;EAAU;;AAGd;EACE;;AAGF;EACI;EACA;;AACA;EAAK;;AACL;EACI;EACA;EACA;;AAIR;EACI;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA","file":"style.css"}
|
1 |
+
{"version":3,"sourceRoot":"","sources":["../scss/_global.scss","../scss/style.scss","../scss/_general.scss","../scss/_overview.scss","../scss/_editor.scss","../scss/_elements.scss","../scss/_collection.scss","../scss/_mixins.scss","../scss/_input_range.scss","../scss/_support.scss","../scss/_settings.scss","../scss/_subtabs.scss","../scss/_feedback.scss","../scss/_ads.scss","../scss/_gopro.scss","../scss/_gosocial.scss"],"names":[],"mappings":";AAEA;AAGC;EACC;;;AAOD;EACC;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACC;EACI;EACA;EACA;;;AAIN;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC3CD;EAGC;EACA;ACZD;;AAAA;ACqJA;AAeA;AC2OA;AAyIA;AA+IA;ACvqBA;AA4SA;AA2GA;AChZA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AJJA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;EACC;EACA;EACA;EACA;EACA;;AAMA;EAEC;;AAED;EACC;EACA;;AAGD;EAAY;;AACZ;EAAU;;AASX;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;EACC;EACA;;AK+BC;ELjCF;IAKE;;;AAKD;EAEA;EAEA;EAGA;EACA;;AKeC;ELvBD;IAYC;IACA;;;AAGD;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EAAO;;AAST;EAAiB;;AAGjB;EACC;IAAQ;;;AC5GR;EAAgB;;AAMhB;EAAQ;;AAIT;EACC;EACA;EACA;;AAEA;EAEC;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;;AAGF;EAEC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAED;EAEC;EACA;EACA;EACA;EAEA;EACA;EACA;;AAED;EAEC;;AAKF;EACC;;AAED;EACC;;AAED;EAEC;EAEA;;AIUE;EJdH;IAOE;IACA;;;AAED;EACC;EACA;;AAKF;EACC;;AIJE;EJGH;IAIE;;;AAGF;EACC;EACA;;AACA;EAEC;EACA;EACA;EAEA;EACA;;AASF;EACC;;AAED;EACC;;AAKF;EACC;EACA;;AACA;EACC;;AAEA;EACA;;AAED;EACC;;AAEA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAMA;EAAgB;EAAsB;EAAuB;;AAC9D;EAAa;;AAMb;EACC;EACA;;AACA;EACC;EACA;EACA;;AAOH;EAEC;EACA;EACA;;AAEA;EACC;EACA;;AACA;EACC;EACC;EACD;EACA;EACA;EACA;EACA;EACA;EACA;;AAOH;EAEE;EACA;EACA;EACA;;AAEA;EACC;;AAED;EACC;;AAED;EACC;EAAiB;;AAElB;EAAK;;AACL;EACE;EACD;;AAGD;EAEC;EACA;EACA;;ACvNH;EAEC;EACA;;AAGA;EACA;EACA;EGmCA;EACA;EHlCA;EACA;EACA;;AAEA;EAEC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIA;EACC;;AAKA;EAEC;;AACA;EAAU;;AACV;EACC;EACA;;AAIH;EAEC;EAGA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAKD;EACC;EAEC;;AAIH;EACE;;AAIH;EACC;EACA;EACA;EACA;EAEA;EACA;EACA;EACC;EACD;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAGA;EAEC;;AAID;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAMF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;AAMH;EACC;;AAMH;EACA;EACA;EACA;;AACA;EAEG;EACA;;AAKF;EACA;EACA;EACA;;AACC;EACC;;AAGD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;;AG1HA;EH+GD;IAeC;;;AAKD;EAAoB;;AAKrB;EACC;;AACA;EAAY;;AAGb;EACC;EACA;;AAED;EACC;;AAED;EGpLA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;AH6KA;EGrLA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;AHkLD;EACA;AAiBA;AAAA;AAAA;AAAA;;AAdA;EACC;EACA;EACA;EACA;EACA;EACA;;AAKD;EACC;;AASD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;EAEA;;AAKC;EACC;;AAED;EAAS;;AAET;EACC;;AACD;EAAI;EAAiB;;AAGnB;EAAS;EACP;;AAKL;EAEE;EACA;EACA;EACA;EAEA;;AGlOD;EH2ND;IAUG;IACA;IACA;IACA;;;AAKH;EAEE;EACA;EACD;EACA;;AAEA;EACC;EACA;EACA;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;EACE;EAED;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;EACF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AAED;EAAK;;AACL;EAAI;;AAMN;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AGxUG;EH+TJ;IG/WC;IACA;IACA;IHyXC;IACA;IACA;IACA;IACA;IACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AACA;EAEC;;AAGF;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EG1aF;EACA;EACA;;AH4aA;EACC;EACA;;AAED;EACC;;AAEA;EACC;EACA;;AAED;EACC;;AAED;EAEC;EACA;EACA;;AACA;EAGC;EACA;EACA;EACA;EACA;;AAGA;EAGC;EACA;EACE;EACA;EACA;EACF;EACA;;AASF;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;;AAGF;EAEC;;AAUJ;EAAsB;;AAGrB;EACA;;AAID;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAMA;AAGF;AAAA;AAAA;AAAA;;AAIC;EACC;;AAKF;EAEC;;AAID;EAEE;;AAEA;EAEC;;AAEA;EAEC;EACA;EACA;EACA;EACA;EAEA;EAGA;EAEA;EACA;EACA;EACA;EACA;EACA;AAYH;AAAA;AAAA;AAAA;;AAVG;EAEC;;AAED;EAEC;EACA;EACA;;AAMD;EAEC;EAGA;;AACA;EAEC;;AAIF;EAEC;EACA;EACA;EACA;EACA;;AAEA;EAEC;EACA;EACA;EACA;;AAKH;EAEE;EACA;;AAGH;EAEC;;AACA;EAEC;;AAED;EAAY;;AAOd;EAEC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAEA;EAAK;;AAGN;EAEE;;AACD;EAEC;EACA;EACA;;AAEA;EACC;;AAED;EAEC;;ACtsBJ;EACC;;AACA;EAAU;;AAGX;EACC;EACA;EAEA;EACA;;AAEA;EAAM;;AACN;EAAY;;AAEV;EAAQ;;AACR;EACC;EACA;;AAKJ;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AASD;EACC;;AEuCG;EFxCJ;IAIE;;;AAED;EACC;EACA;;AAED;EACC;;AAED;EACC;;AAED;EACA;;AAID;EAEC;;AAEA;EACC;;AEcE;EFfH;IAIE;;;AAGF;EAAU;;AEQP;EFRH;IAGE;;;AAOH;EACC;EACA;;AASC;EACC;;AAGF;EAAQ;;AACR;EAAgB;;AAChB;EAAuB;;AACvB;EAA0B;;AAGzB;EACC;;AAIF;EACC;;AAGD;EAA0B;;AACzB;EAAyC;;AAEzC;EACC;;AACC;EACC;;AAKH;EAAiB;EAAoB;;AACrC;EAAQ;;AAER;EAAe;;AE9Cb;EFmDD;IACC;;EACA;IACC;;EAGD;IAAM;;;AAIR;EACC;;AE9DC;EF6DF;IAKG;IACD;IACA;;;AAGF;EACC;;AExEC;EFuEF;IAIE;IACA;;;AAIH;EACC;;AACA;EAAiB;;AElFf;EFgFH;IAKE;;;AAKF;EAAoC;;AACpC;EAAsB;;AAEtB;EACC;EACA;EACA;;AAGC;EAAqB;EAAc;;AACnC;EACC;;AACA;EAAS;EAAiB;;AAC1B;EAA0B;;AAE3B;EAAO;;AACP;EACC;EACA;EACA;EACA;EACA;;AAED;EAAa;EAAiB;EAAc;EAAc;;AAC1D;EAAkB;;AAClB;EAAqB;;AACrB;EACC;EACA;EACA;EACA;EACA;;AAIF;EAAwC;;AACxC;EACE;;AAIH;EAEE;;AAIF;EACE;EACA;;AAQH;EAEC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAMF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAIF;EAEC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AE9LE;EFuLH;IAUE;;;AAGF;EACC;;AAID;EAEC;EACA;EACA;;AACA;EACC;;AAIF;EACK;EACD;EACA;;AAML;EACC;EACA;;AACA;EAAS;;AACT;EAAU;;AAGX;EAEC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAKF;EAGC;EACA;EACA;AACA;AAAA;AAAA;AAAA;AAAA;;AASD;EAEC;;AAEA;EACC;;AAEA;EACC;;AAGF;EAAQ;;AACP;EAA0B;;AAC1B;EACE;EACA;;AAGF;EAEC;;AAED;EACE;EACA;;AAEF;EAAiC;;AAElC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACC;EACA;;AACA;EACG;EACD;EACA;;AAIH;EAAiB;;AACjB;EACC;;AASH;EACC;EACA;;AAEA;EAAmB;;AACnB;EAAqB;EAAa;;AAClC;EACC;;AAED;EEhYA;EACA;EACA;EFgYC;EACA;EACA;EACA;EACA;;AAOA;EACC;EACA;EACA;;AAED;EACC;EEnZF;EACA;EACA;;AFsZC;EAEA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACA;;AACA;EAEC;EACA;;AAIF;EAEC;EACA;;AAIC;EACA;;AAID;EACC;EACA;EACD;EACC;;AACA;EACC;;AAED;EACC;;AAGD;EACE;EACD;EACA;EACA;EACA;EACC;EACF;;AAGA;EACC;EACA;EACA;;AACD;EACE;;AAIF;EACC;EACA;EAEA;EACA;;AACD;EACE;;AAKF;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;;AG3dJ;EACE;EAEA,OApCY;EAqCZ;;AAEA;EACE;;AAEA;EACE;;AAGF;EACE,YA3DQ;;AA8DV;EACE;;AAIJ;EAvCA;EACA,QAhBa;EAiBb;EACA,OAnBY;EA0DV,YAtEU;EAuEV;EACA,eApDW;;AAuDb;EAvCA,YAnCY;EAoCZ;EACA,eAnCa;EAoCb;EACA,QApCa;EAqCb,OApCY;EAwEV;EACA;;AAGF;EArDA;EACA,QAhBa;EAiBb;EACA,OAnBY;EAwEV,YApFU;EAqFV;EACA,eAlEW;;AAqEb;EArDA,YAnCY;EAoCZ;EACA,eAnCa;EAoCb;EACA,QApCa;EAqCb,OApCY;;AAwFZ;EAjEA;EACA,QAhBa;EAiBb;EACA,OAnBY;EAmFV;EACA;EACA;EACA;;AAGF;EAEE;EACA;EACA;;AAGF;EAEE,YA9GU;EA+GV;EACA;;AAGF;EA/EA,YAnCY;EAoCZ;EACA,eAnCa;EAoCb;EACA,QApCa;EAqCb,OApCY;EAgHV;;ACxHJ;EACE;;AAEA;EAEC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;;AAMJ;EACC;EACA;EACA;EACA;;AACA;EACC;;AAEA;EACC;EACA;EACA;;AC7BF;EAEC;;AAEA;EAEC;EACA;EACA;EACA;EACA;;ACXH;EACC;EACA;;AAGD;EACC;EAEA;EACA;;AAEA;EACC;EACA;EACA;;AAKA;EAAa;EAAoB;;AAElC;EAEC;EACA;EACC;EACD;;AACA;EAEC;;AAED;EAEC;;AAOH;EACC;EACA;EJCA;EACA;;AIIC;EAAS;;AACT;EAAS;;AAEV;EACC;;ALpDF;EACC;EACA;;AA8BD;EAEC;;AC8CG;EDhDJ;IAOE;;;AAKD;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AACA;EAAS;;AAEV;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EAGE;EACA;;AAIH;EACC;EACA;EAEA;EACA;;AACA;EACC;;AAWF;EACC;EACA;EACA;EACA;;AAQF;EAEE;EAED;EAGA;;AACA;EACC;EACA;EACA;EAEA;EAEA;;AAGA;EACC;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EAAU;;AACV;EACC;EACA;EACA;EACA;;AAUH;EACC;EACA;EACA;EACA;;AAED;EAAe;;AAKhB;EACC;EACA;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;AAqBA;AAAA;AAAA;;AC/IG;ED8GJ;IAeE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;AAED;EACC;EACC;EAEA;;AAUF;EACC;EACA;;AACA;EAAY;;AAYd;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EAGA;EAEA;EACA;EAAW;EACX;EAAY;EAEZ;;AAEA;EACC;EACA;EAEA;EAEA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EAEA;EAEA;EACA;EACA;EACA;AACD;AAAA;AAAA;AAAA;AAAA;AAAA;;AAMC;EAAK;;AAEJ;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;;AAMJ;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACC;;AAIA;EAAkB;EACjB;;AAIF;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAAe;;AACf;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;;AACA;EAAO;;AAMV;EACC;EACC;EACD;EACA;EACA;EACA;EACA;;AAIA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AACA;EACC;EACA;;AAIH;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;ACnVC;ED2UF;IAWE;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EAA6B;;AAC7B;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAMH;EACC;EACA;EACA;EACA;;AAWF;EAEC;EACA;;AAEA;EAAuB;;AACtB;EACA;EACA;EAEA;EACA;;AMreD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGC;EAEA;EACC;EAEA;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAA+B;EAA6B;;AAC5D;EACC;;AC9BL;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEC;EACA;EACA;;AAEA;EAEC;EACA;;AACA;EACC;;AAIF;EACC;;AAED;EACC;EACC;EACA;EACA;EACD;;AAEA;EACA;EACA;;AAGD;EAEC;;AAEE;EAEA;;AAEA;EAAK;;AACH;EAAI;EAAa;;AAIpB;EAAK;EAAmB;;AAExB;EAAM;;AAGR;EAAI;;AAEJ;EACC;;AAGA;EAEC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAMH;EACC;EACA;;AAED;EACC;EACA;;AAEC;EACC;EACA;EACA;EACA;EACA;EACA;;AAML;EACC;IACC;;;ACjGA;EACC;EACA;;AAGF;EACE;EACA;EACD;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAIH;EACC;EACA;EACA;;AAEA;EACE;EACA;;AAMH;EACE;EACA;EACA;;AACA;EACC;;AAED;EAEE;EACA;;AAEA;EACC;EACC;;AAEF;EACE;;AAKN;EACE;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACK;;AAEL;EACC;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACG;EACC;EACA;EACA;;AAKL;EACG;;AAEH;EACC;EACA;;AAMH;EAAM;;AACN;EACC;EACA;EACA;EACA;;AAGD;EAAM;;AACN;EAAO;;AAGR;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACC;EACA;EACC;EACA;;AAIF;EACE;;AAGF;EAEE;EACA;EACA;EACC;EACD;;AP1FC;EOoFH;IAUG;IAEA;;;AAKH;EACE;;AAGF;EACE;EACA;;AAGF;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEF;EACE;;AAGD;EACE;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AChON;EACI;;AACA;EACE;;AAIH;EAAK;EAAuB;EAAiB;;AAC5C;EACE;EACA;EACA;;AAEF;EAAK;;AACL;EAAU;;AAGd;EACE;;AAGF;EACI;EACA;;AACA;EAAK;;AACL;EACI;EACA;EACA;;AAIR;EACI;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA","file":"style.css"}
|
assets/scss/_ads.scss
CHANGED
@@ -7,27 +7,27 @@
|
|
7 |
margin-top: 41px;
|
8 |
|
9 |
.ads {
|
10 |
-
|
11 |
background: #fff;
|
12 |
margin-bottom: 20px;
|
13 |
text-align: center;
|
14 |
//border: 1px solid #ccc;
|
15 |
&.image-ad
|
16 |
{
|
17 |
-
background: none;
|
18 |
-
margin-top: 20px;
|
19 |
-
img {
|
20 |
-
max-width: 100%;
|
21 |
}
|
22 |
}
|
23 |
-
|
24 |
-
> a {
|
25 |
text-decoration: none;
|
26 |
}
|
27 |
.header {
|
28 |
background-color: #88c5c2;
|
29 |
color: #fff;
|
30 |
-
font-size: 18px;
|
31 |
text-transform: uppercase;
|
32 |
padding: 12px;
|
33 |
}
|
@@ -36,24 +36,44 @@
|
|
36 |
padding-bottom: 14px;
|
37 |
}
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
ul {
|
40 |
list-style: none;
|
41 |
//text-align: center;
|
42 |
//margin-left: 30px;
|
43 |
-
li
|
44 |
-
{
|
45 |
font-weight: bold;
|
46 |
-
text-decoration: none;
|
47 |
color: #000000;
|
48 |
-
|
49 |
-
&.plus {
|
50 |
font-size:38px;
|
51 |
-
font-weight: 700;
|
52 |
color: #88c5c2;
|
53 |
-
|
54 |
-
}
|
55 |
-
|
56 |
-
}
|
57 |
}
|
58 |
span.img {
|
59 |
text-align: center;
|
@@ -62,18 +82,18 @@
|
|
62 |
.ads_button_wrap {
|
63 |
margin: 20px 0 30px;
|
64 |
display: inline-block;
|
65 |
-
|
66 |
.button {
|
67 |
-
color: #fff;
|
68 |
background-color: #88c5c2;
|
69 |
-
font-size: 16px;
|
70 |
font-weight: bold;
|
71 |
border: 0;
|
72 |
padding: 0 40px;
|
73 |
}
|
74 |
}
|
75 |
-
}
|
76 |
-
}
|
77 |
|
78 |
@media screen and (max-width: 960px) {
|
79 |
.ad-wrap {
|
@@ -81,4 +101,3 @@
|
|
81 |
}
|
82 |
|
83 |
}
|
84 |
-
|
7 |
margin-top: 41px;
|
8 |
|
9 |
.ads {
|
10 |
+
|
11 |
background: #fff;
|
12 |
margin-bottom: 20px;
|
13 |
text-align: center;
|
14 |
//border: 1px solid #ccc;
|
15 |
&.image-ad
|
16 |
{
|
17 |
+
background: none;
|
18 |
+
margin-top: 20px;
|
19 |
+
img {
|
20 |
+
max-width: 100%;
|
21 |
}
|
22 |
}
|
23 |
+
|
24 |
+
> a {
|
25 |
text-decoration: none;
|
26 |
}
|
27 |
.header {
|
28 |
background-color: #88c5c2;
|
29 |
color: #fff;
|
30 |
+
font-size: 18px;
|
31 |
text-transform: uppercase;
|
32 |
padding: 12px;
|
33 |
}
|
36 |
padding-bottom: 14px;
|
37 |
}
|
38 |
|
39 |
+
&.text-block
|
40 |
+
{
|
41 |
+
border: 1px solid #ccc;
|
42 |
+
|
43 |
+
ol
|
44 |
+
{
|
45 |
+
margin-left: 35px;
|
46 |
+
|
47 |
+
li { text-align: left;
|
48 |
+
a { color: #000; font-weight: 700; }
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
h2 { padding-top: 20px; border-top: 1px solid #ccc; }
|
53 |
+
|
54 |
+
img { overflow: hidden; }
|
55 |
+
}
|
56 |
+
|
57 |
+
p { padding: 8px }
|
58 |
+
|
59 |
ul {
|
60 |
list-style: none;
|
61 |
//text-align: center;
|
62 |
//margin-left: 30px;
|
63 |
+
li
|
64 |
+
{
|
65 |
font-weight: bold;
|
66 |
+
text-decoration: none;
|
67 |
color: #000000;
|
68 |
+
|
69 |
+
&.plus {
|
70 |
font-size:38px;
|
71 |
+
font-weight: 700;
|
72 |
color: #88c5c2;
|
73 |
+
|
74 |
+
}
|
75 |
+
|
76 |
+
}
|
77 |
}
|
78 |
span.img {
|
79 |
text-align: center;
|
82 |
.ads_button_wrap {
|
83 |
margin: 20px 0 30px;
|
84 |
display: inline-block;
|
85 |
+
|
86 |
.button {
|
87 |
+
color: #fff;
|
88 |
background-color: #88c5c2;
|
89 |
+
font-size: 16px;
|
90 |
font-weight: bold;
|
91 |
border: 0;
|
92 |
padding: 0 40px;
|
93 |
}
|
94 |
}
|
95 |
+
} // .ads
|
96 |
+
} // ad-wrap
|
97 |
|
98 |
@media screen and (max-width: 960px) {
|
99 |
.ad-wrap {
|
101 |
}
|
102 |
|
103 |
}
|
|
assets/scss/_gopro.scss
CHANGED
@@ -39,6 +39,29 @@
|
|
39 |
|
40 |
}
|
41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
.default-section {
|
43 |
text-align: center;
|
44 |
padding: 0px 10px;
|
39 |
|
40 |
}
|
41 |
|
42 |
+
// Section where the license is added
|
43 |
+
.license-section {
|
44 |
+
background-color: #fff;
|
45 |
+
padding: 16px;
|
46 |
+
margin: 25px 0;
|
47 |
+
h3 {
|
48 |
+
font-size: 20px;
|
49 |
+
}
|
50 |
+
.license-error
|
51 |
+
{
|
52 |
+
border: 1px solid #ff0000;
|
53 |
+
padding: 8px;
|
54 |
+
|
55 |
+
p.error {
|
56 |
+
font-size: 14px;
|
57 |
+
color: #ff0000;
|
58 |
+
}
|
59 |
+
p.small {
|
60 |
+
font-size: 12px;
|
61 |
+
}
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
.default-section {
|
66 |
text-align: center;
|
67 |
padding: 0px 10px;
|
classes/controller.php
CHANGED
@@ -5,8 +5,12 @@ namespace MaxButtons;
|
|
5 |
abstract class MaxController
|
6 |
{
|
7 |
|
|
|
|
|
8 |
protected $view; // view data
|
9 |
protected $page;
|
|
|
|
|
10 |
protected $messages = array(); // messages to display to user.
|
11 |
protected $view_template;
|
12 |
|
@@ -19,6 +23,26 @@ abstract class MaxController
|
|
19 |
$this->view = new \stdClass;
|
20 |
}
|
21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
public function view()
|
23 |
{
|
24 |
$view = $this->view;
|
@@ -35,7 +59,7 @@ abstract class MaxController
|
|
35 |
}
|
36 |
}
|
37 |
|
38 |
-
|
39 |
|
40 |
public function getButtonLink($button_id = 0, $args = array())
|
41 |
{
|
@@ -62,6 +86,11 @@ abstract class MaxController
|
|
62 |
$this->page = $page;
|
63 |
}
|
64 |
|
|
|
|
|
|
|
|
|
|
|
65 |
protected function loadFormActions()
|
66 |
{
|
67 |
$actions = array();
|
5 |
abstract class MaxController
|
6 |
{
|
7 |
|
8 |
+
protected static $instance;
|
9 |
+
|
10 |
protected $view; // view data
|
11 |
protected $page;
|
12 |
+
|
13 |
+
protected $url;
|
14 |
protected $messages = array(); // messages to display to user.
|
15 |
protected $view_template;
|
16 |
|
23 |
$this->view = new \stdClass;
|
24 |
}
|
25 |
|
26 |
+
// Get the instance of this controller
|
27 |
+
public static function getInstance()
|
28 |
+
{
|
29 |
+
if (!isset(self::$instance)) {
|
30 |
+
$c = get_called_class();
|
31 |
+
self::$instance = new $c;
|
32 |
+
}
|
33 |
+
|
34 |
+
return self::$instance;
|
35 |
+
}
|
36 |
+
|
37 |
+
// Handling any post related business
|
38 |
+
abstract protected function handlePost();
|
39 |
+
|
40 |
+
public function load()
|
41 |
+
{
|
42 |
+
if (isset($_POST) && count($_POST) > 0)
|
43 |
+
$this->handlePost();
|
44 |
+
}
|
45 |
+
|
46 |
public function view()
|
47 |
{
|
48 |
$view = $this->view;
|
59 |
}
|
60 |
}
|
61 |
|
62 |
+
|
63 |
|
64 |
public function getButtonLink($button_id = 0, $args = array())
|
65 |
{
|
86 |
$this->page = $page;
|
87 |
}
|
88 |
|
89 |
+
public function setUrl($url)
|
90 |
+
{
|
91 |
+
$this->url = $url;
|
92 |
+
}
|
93 |
+
|
94 |
protected function loadFormActions()
|
95 |
{
|
96 |
$actions = array();
|
classes/controllers/editorController.php
CHANGED
@@ -17,14 +17,18 @@ class editorController extends MaxController
|
|
17 |
|
18 |
}
|
19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
public function view()
|
21 |
{
|
22 |
-
|
23 |
-
$this->loadView();
|
24 |
-
|
25 |
-
if ($_POST) {
|
26 |
$this->handlePost();
|
27 |
-
}
|
|
|
28 |
|
29 |
parent::view();
|
30 |
}
|
@@ -124,9 +128,10 @@ class editorController extends MaxController
|
|
124 |
|
125 |
protected function updateButton()
|
126 |
{
|
|
|
127 |
$button = MB()->getClass('button');
|
128 |
$button_id = intval($_POST["button_id"]);
|
129 |
-
|
130 |
|
131 |
$current_screen = 'default';
|
132 |
if (isset($_POST['current_screen']))
|
@@ -141,7 +146,10 @@ class editorController extends MaxController
|
|
141 |
$return = $button->save($_POST, $this->view->screens);
|
142 |
|
143 |
if (is_int($return) && $button_id <= 0)
|
|
|
144 |
$button_id = $return;
|
|
|
|
|
145 |
|
146 |
if ($button_id === 0)
|
147 |
{
|
@@ -156,8 +164,12 @@ class editorController extends MaxController
|
|
156 |
$url .= '#' . urlencode($current_screen);
|
157 |
}
|
158 |
|
159 |
-
|
160 |
-
|
|
|
|
|
|
|
|
|
161 |
} // handlePost.
|
162 |
|
163 |
protected function addScreen()
|
@@ -174,7 +186,7 @@ class editorController extends MaxController
|
|
174 |
{
|
175 |
if (! isset($query['s']) || $query['s'] == '')
|
176 |
return $query;
|
177 |
-
|
178 |
$query['post_status'] = (array) $query['post_status'];
|
179 |
$query['post_status'][] = 'inherit';
|
180 |
|
17 |
|
18 |
}
|
19 |
|
20 |
+
public function load()
|
21 |
+
{
|
22 |
+
$this->loadView();
|
23 |
+
parent::load();
|
24 |
+
}
|
25 |
+
|
26 |
public function view()
|
27 |
{
|
28 |
+
/* if ($_POST) {
|
|
|
|
|
|
|
29 |
$this->handlePost();
|
30 |
+
} */
|
31 |
+
$this->loadView();
|
32 |
|
33 |
parent::view();
|
34 |
}
|
128 |
|
129 |
protected function updateButton()
|
130 |
{
|
131 |
+
|
132 |
$button = MB()->getClass('button');
|
133 |
$button_id = intval($_POST["button_id"]);
|
134 |
+
$new_button = false;
|
135 |
|
136 |
$current_screen = 'default';
|
137 |
if (isset($_POST['current_screen']))
|
146 |
$return = $button->save($_POST, $this->view->screens);
|
147 |
|
148 |
if (is_int($return) && $button_id <= 0)
|
149 |
+
{
|
150 |
$button_id = $return;
|
151 |
+
$new_button = true;
|
152 |
+
}
|
153 |
|
154 |
if ($button_id === 0)
|
155 |
{
|
164 |
$url .= '#' . urlencode($current_screen);
|
165 |
}
|
166 |
|
167 |
+
if ($new_button)
|
168 |
+
{
|
169 |
+
wp_redirect($url);
|
170 |
+
exit();
|
171 |
+
}
|
172 |
+
|
173 |
} // handlePost.
|
174 |
|
175 |
protected function addScreen()
|
186 |
{
|
187 |
if (! isset($query['s']) || $query['s'] == '')
|
188 |
return $query;
|
189 |
+
|
190 |
$query['post_status'] = (array) $query['post_status'];
|
191 |
$query['post_status'][] = 'inherit';
|
192 |
|
classes/controllers/listController.php
CHANGED
@@ -18,14 +18,17 @@ class listController extends MaxController
|
|
18 |
// view Loader.
|
19 |
public function view()
|
20 |
{
|
|
|
|
|
|
|
21 |
|
|
|
|
|
22 |
if (isset($_POST) && isset($_POST["mb-list-nonce"]) ) {
|
23 |
$this->handlePost();
|
24 |
}
|
25 |
-
$this->loadView();
|
26 |
|
27 |
-
|
28 |
-
}
|
29 |
|
30 |
|
31 |
public function loadView()
|
18 |
// view Loader.
|
19 |
public function view()
|
20 |
{
|
21 |
+
$this->loadView();
|
22 |
+
parent::view();
|
23 |
+
}
|
24 |
|
25 |
+
public function load()
|
26 |
+
{
|
27 |
if (isset($_POST) && isset($_POST["mb-list-nonce"]) ) {
|
28 |
$this->handlePost();
|
29 |
}
|
|
|
30 |
|
31 |
+
}
|
|
|
32 |
|
33 |
|
34 |
public function loadView()
|
classes/controllers/settingsController.php
CHANGED
@@ -15,9 +15,6 @@ class settingsController extends MaxController
|
|
15 |
// view Loader.
|
16 |
public function view()
|
17 |
{
|
18 |
-
if (isset($_POST) ) {
|
19 |
-
$this->handlePost();
|
20 |
-
}
|
21 |
parent::view();
|
22 |
}
|
23 |
|
15 |
// view Loader.
|
16 |
public function view()
|
17 |
{
|
|
|
|
|
|
|
18 |
parent::view();
|
19 |
}
|
20 |
|
classes/controllers/upgradeController.php
CHANGED
@@ -1,7 +1,9 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
namespace MaxButtons;
|
4 |
|
|
|
|
|
|
|
5 |
class upgradeController extends MaxController
|
6 |
{
|
7 |
|
@@ -9,8 +11,15 @@ class upgradeController extends MaxController
|
|
9 |
|
10 |
public function view()
|
11 |
{
|
|
|
|
|
|
|
|
|
|
|
12 |
if ($this->page == 'social-share')
|
|
|
13 |
$this->view_template = 'social-share';
|
|
|
14 |
|
15 |
parent::view();
|
16 |
}
|
@@ -18,6 +27,93 @@ class upgradeController extends MaxController
|
|
18 |
// no posts.
|
19 |
public function handlePost()
|
20 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
return false;
|
22 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
} // controller
|
1 |
<?php
|
|
|
2 |
namespace MaxButtons;
|
3 |
|
4 |
+
use MaxButtons\Upgrader\upgradeLicense as upgradeLicense;
|
5 |
+
use MaxButtons\Upgrader\proInstaller as proInstaller;
|
6 |
+
|
7 |
class upgradeController extends MaxController
|
8 |
{
|
9 |
|
11 |
|
12 |
public function view()
|
13 |
{
|
14 |
+
if (! property_exists($this->view, 'licenseKey'))
|
15 |
+
{
|
16 |
+
$this->view->licenseKey = '';
|
17 |
+
}
|
18 |
+
|
19 |
if ($this->page == 'social-share')
|
20 |
+
{
|
21 |
$this->view_template = 'social-share';
|
22 |
+
}
|
23 |
|
24 |
parent::view();
|
25 |
}
|
27 |
// no posts.
|
28 |
public function handlePost()
|
29 |
{
|
30 |
+
if (check_admin_referer('upgrade', 'upgrade_nonce'))
|
31 |
+
{
|
32 |
+
|
33 |
+
//var_dump(wp_redirect(admin_url('admin.php?page=maxbuttons-license&installedfrom=maxbuttons-free')));
|
34 |
+
//exit();
|
35 |
+
$licenseKey = isset($_POST['license_key']) ? trim(sanitize_text_field($_POST['license_key'])) : false;
|
36 |
+
$this->view->licenseKey = $licenseKey;
|
37 |
+
|
38 |
+
if (strlen($licenseKey) == 0 )
|
39 |
+
$this->view->PostError = __('Enter a valid license key to proceed', 'maxbuttons');
|
40 |
+
else
|
41 |
+
$this->checkLicense($licenseKey);
|
42 |
+
}
|
43 |
+
|
44 |
return false;
|
45 |
}
|
46 |
+
|
47 |
+
private function checkLicense($licenseKey)
|
48 |
+
{
|
49 |
+
require_once(MB()->get_plugin_path() . 'classes/upgrader/license.php');
|
50 |
+
|
51 |
+
$licenseController = upgradeLicense::getInstance();
|
52 |
+
$result = $licenseController->activate_license($licenseKey);
|
53 |
+
|
54 |
+
if ($result->success == false)
|
55 |
+
{
|
56 |
+
$this->view->PostError = $result->additional_info;
|
57 |
+
}
|
58 |
+
elseif ($result->success)
|
59 |
+
{
|
60 |
+
if ($result->license == 'valid')
|
61 |
+
{
|
62 |
+
$url = $licenseController->getPackageUrl($licenseKey);
|
63 |
+
|
64 |
+
if ($url !== false)
|
65 |
+
{
|
66 |
+
$this->installPlugin($url);
|
67 |
+
}
|
68 |
+
else
|
69 |
+
{
|
70 |
+
$this->view->PostError = __('License seems active, but something went wrong acquiring the download', 'maxbuttons');
|
71 |
+
}
|
72 |
+
|
73 |
+
}
|
74 |
+
}
|
75 |
+
|
76 |
+
}
|
77 |
+
|
78 |
+
private function installPlugin($url)
|
79 |
+
{
|
80 |
+
require_once(MB()->get_plugin_path() . 'classes/upgrader/installer.php');
|
81 |
+
|
82 |
+
$installer = proInstaller::getInstance();
|
83 |
+
$result = $installer->installPro($url);
|
84 |
+
|
85 |
+
if ($result['success'])
|
86 |
+
{
|
87 |
+
$result = $installer->switchPlugins();
|
88 |
+
if ($result['success'])
|
89 |
+
{
|
90 |
+
$this->view->PostError = __('Everything seems fine, plugin should have redirected to the PRO version', 'maxbuttons');
|
91 |
+
}
|
92 |
+
else
|
93 |
+
{
|
94 |
+
$this->view->PostError = $result['error_message'];
|
95 |
+
}
|
96 |
+
}
|
97 |
+
else
|
98 |
+
{
|
99 |
+
$this->view->PostError = $result['error_message'];
|
100 |
+
}
|
101 |
+
}
|
102 |
+
|
103 |
+
private function activateRemoteLicense()
|
104 |
+
{
|
105 |
+
|
106 |
+
}
|
107 |
+
|
108 |
+
private function updateLicense()
|
109 |
+
{
|
110 |
+
update_option('maxbuttons_pro_license_expires', $expires );
|
111 |
+
update_option('maxbuttons_pro_license_activated', false, true);
|
112 |
+
}
|
113 |
+
|
114 |
+
private function downloadPlugin()
|
115 |
+
{
|
116 |
+
|
117 |
+
}
|
118 |
+
|
119 |
} // controller
|
classes/maxbuttons-admin-helper.php
CHANGED
@@ -182,6 +182,28 @@ class maxAdmin
|
|
182 |
</a>
|
183 |
</div>
|
184 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
185 |
<div class="ads image-ad">
|
186 |
<a href="http://www.maxbuttons.com/pricing/?utm_source=mbf-dash<?php echo $version ?>&utm_medium=mbf-plugin&utm_content=EBWG-sidebar-22&utm_campaign=inthecart<?php echo $version ?>" target="_blank"><img src="<?php echo $plugin_url ?>/images/ebwg_ad.png" /></a>
|
187 |
|
182 |
</a>
|
183 |
</div>
|
184 |
|
185 |
+
<div class='text-block ads'>
|
186 |
+
<h1>New from MaxButtons :</h1>
|
187 |
+
<h2><?php _e('Upgrade directly from this plugin', 'maxbuttons') ?></h2>
|
188 |
+
<p>Since version 9, it's much easier to upgrade to the PRO
|
189 |
+
<ol><li><a href="<?php echo $url ?>&utm_source=mbf-dash<?php echo $version ?>&utm_medium=mbf-plugin&utm_content=MBF-sidebar&utm_campaign=cart<?php echo $version ?>" target="_blank" >Buy a license on MaxButtons.com</a></li>
|
190 |
+
|
191 |
+
<li><a href="<?php echo admin_url('admin.php?page=maxbuttons-pro') ?>">Enter license code straight in this plugin</a></li>
|
192 |
+
<li>Done!</li>
|
193 |
+
</ol>
|
194 |
+
</p>
|
195 |
+
|
196 |
+
<h2>Link Manager</h2>
|
197 |
+
<p>
|
198 |
+
Keep track of your buttons, links and the pages where they are used. Includes simple view and click statistics.
|
199 |
+
</p>
|
200 |
+
|
201 |
+
<img src="<?php echo $plugin_url ?>/images/gopro/linkmanager.png" width="298">
|
202 |
+
|
203 |
+
</div>
|
204 |
+
|
205 |
+
|
206 |
+
|
207 |
<div class="ads image-ad">
|
208 |
<a href="http://www.maxbuttons.com/pricing/?utm_source=mbf-dash<?php echo $version ?>&utm_medium=mbf-plugin&utm_content=EBWG-sidebar-22&utm_campaign=inthecart<?php echo $version ?>" target="_blank"><img src="<?php echo $plugin_url ?>/images/ebwg_ad.png" /></a>
|
209 |
|
classes/maxbuttons-class.php
CHANGED
@@ -290,7 +290,7 @@ class maxButtonsPlugin
|
|
290 |
}
|
291 |
|
292 |
/** Installs and adds the main menu and the submenu items */
|
293 |
-
function admin_menu() {
|
294 |
$maxbuttons_capabilities = get_option('maxbuttons_user_level');
|
295 |
if(!$maxbuttons_capabilities) {
|
296 |
$maxbuttons_capabilities = 'manage_options';
|
@@ -307,6 +307,8 @@ class maxButtonsPlugin
|
|
307 |
$icon_url = $this->plugin_url . 'images/mb-peach-icon.png';
|
308 |
$submenu_function = array($this, 'load_admin_page');
|
309 |
|
|
|
|
|
310 |
$this->admin_pages[] = add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, 81);
|
311 |
|
312 |
// We add this submenu page with the same slug as the parent to ensure we don't get duplicates
|
@@ -351,52 +353,87 @@ class maxButtonsPlugin
|
|
351 |
$this->admin_pages[] = add_submenu_page($menu_slug, $submenu_page_title, $submenu_title, $capability, $submenu_slug, $submenu_function);
|
352 |
}
|
353 |
|
|
|
354 |
$this->admin_pages = apply_filters('maxbuttons/plugin/admin_pages',$this->admin_pages);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
355 |
}
|
356 |
|
357 |
-
|
|
|
358 |
{
|
359 |
-
|
|
|
|
|
360 |
|
361 |
-
|
362 |
-
|
363 |
-
$
|
364 |
-
|
365 |
-
{
|
366 |
-
$page = 'maxbuttons-list'; // default;
|
367 |
|
368 |
-
if ($action == 'button' || $action == 'edit')
|
369 |
-
{
|
370 |
-
$page = 'maxbuttons-button';
|
371 |
-
}
|
372 |
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
case "maxbuttons-settings":
|
384 |
-
$controller = new settingsController();
|
385 |
-
break;
|
386 |
-
case "maxbuttons-pro":
|
387 |
-
case "social-share":
|
388 |
-
$controller = new upgradeController();
|
389 |
-
break;
|
390 |
-
default:
|
391 |
-
$controller = new listController();
|
392 |
-
break;
|
393 |
-
}
|
394 |
//$pagepath = $this->plugin_path . $pagepath;
|
395 |
-
$controller->setPage($page);
|
|
|
396 |
$controller->view();
|
397 |
// include(apply_filters("mb-load-admin-page-$page", $pagepath));
|
398 |
}
|
399 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
400 |
/** Load a library. This can be a non-standard Javascript / CSS combination or external PHP scripting
|
401 |
*
|
402 |
* @param $libname String Known library name
|
290 |
}
|
291 |
|
292 |
/** Installs and adds the main menu and the submenu items */
|
293 |
+
public function admin_menu() {
|
294 |
$maxbuttons_capabilities = get_option('maxbuttons_user_level');
|
295 |
if(!$maxbuttons_capabilities) {
|
296 |
$maxbuttons_capabilities = 'manage_options';
|
307 |
$icon_url = $this->plugin_url . 'images/mb-peach-icon.png';
|
308 |
$submenu_function = array($this, 'load_admin_page');
|
309 |
|
310 |
+
|
311 |
+
|
312 |
$this->admin_pages[] = add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, 81);
|
313 |
|
314 |
// We add this submenu page with the same slug as the parent to ensure we don't get duplicates
|
353 |
$this->admin_pages[] = add_submenu_page($menu_slug, $submenu_page_title, $submenu_title, $capability, $submenu_slug, $submenu_function);
|
354 |
}
|
355 |
|
356 |
+
|
357 |
$this->admin_pages = apply_filters('maxbuttons/plugin/admin_pages',$this->admin_pages);
|
358 |
+
|
359 |
+
//add_action('load-maxbuttons-')
|
360 |
+
$unique = array_unique($this->admin_pages);
|
361 |
+
foreach($unique as $hook)
|
362 |
+
{
|
363 |
+
add_action('load-' . $hook, array($this, 'post_admin_page'));
|
364 |
+
}
|
365 |
+
|
366 |
}
|
367 |
|
368 |
+
/** Loads before output and page, to check on $_POSTs */
|
369 |
+
public function post_admin_page()
|
370 |
{
|
371 |
+
global $plugin_page;
|
372 |
+
$page = sanitize_text_field($_GET["page"]);
|
373 |
+
$url = menu_page_url($plugin_page, false);
|
374 |
|
375 |
+
$controller = $this->getController($page);
|
376 |
+
$controller->setPage($page);
|
377 |
+
$controller->setUrl($url);
|
378 |
+
$controller->load();
|
|
|
|
|
379 |
|
|
|
|
|
|
|
|
|
380 |
|
381 |
+
}
|
382 |
+
|
383 |
+
// Loads admin controller based on page
|
384 |
+
public function load_admin_page()
|
385 |
+
{
|
386 |
+
global $plugin_page;
|
387 |
+
$page = sanitize_text_field($_GET["page"]);
|
388 |
+
// $url = menu_page_url($plugin_page, false);
|
389 |
+
|
390 |
+
$controller = $this->getController($page);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
391 |
//$pagepath = $this->plugin_path . $pagepath;
|
392 |
+
// $controller->setPage($page);
|
393 |
+
// $controller->setUrl($url);
|
394 |
$controller->view();
|
395 |
// include(apply_filters("mb-load-admin-page-$page", $pagepath));
|
396 |
}
|
397 |
|
398 |
+
private function getController($page)
|
399 |
+
{
|
400 |
+
if ($page == 'maxbuttons-controller')
|
401 |
+
{
|
402 |
+
$action = isset($_GET['action']) ? sanitize_text_field($_GET['action']) : null;
|
403 |
+
if (! is_null($action))
|
404 |
+
{
|
405 |
+
$page = 'maxbuttons-list'; // default;
|
406 |
+
|
407 |
+
if ($action == 'button' || $action == 'edit')
|
408 |
+
{
|
409 |
+
$page = 'maxbuttons-button';
|
410 |
+
}
|
411 |
+
|
412 |
+
}
|
413 |
+
}
|
414 |
+
switch($page)
|
415 |
+
{
|
416 |
+
case "maxbuttons-button":
|
417 |
+
$controller = editorController::getInstance();
|
418 |
+
break;
|
419 |
+
case "maxbuttons-support":
|
420 |
+
$controller = supportController::getInstance();
|
421 |
+
break;
|
422 |
+
case "maxbuttons-settings":
|
423 |
+
$controller = settingsController::getInstance();
|
424 |
+
break;
|
425 |
+
case "maxbuttons-pro":
|
426 |
+
case "social-share":
|
427 |
+
$controller = upgradeController::getInstance();
|
428 |
+
break;
|
429 |
+
default:
|
430 |
+
$controller = listController::getInstance();
|
431 |
+
break;
|
432 |
+
}
|
433 |
+
|
434 |
+
return $controller;
|
435 |
+
}
|
436 |
+
|
437 |
/** Load a library. This can be a non-standard Javascript / CSS combination or external PHP scripting
|
438 |
*
|
439 |
* @param $libname String Known library name
|
classes/upgrader/installer.php
ADDED
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace MaxButtons\Upgrader;
|
3 |
+
|
4 |
+
class ProInstaller
|
5 |
+
{
|
6 |
+
private $plugin = 'maxbuttons-pro';
|
7 |
+
private static $instance;
|
8 |
+
private $free_slug = 'maxbuttons/maxbuttons.php';
|
9 |
+
private $pro_slug = 'maxbuttons-pro/maxbuttons-pro.php';
|
10 |
+
|
11 |
+
|
12 |
+
public static function getInstance()
|
13 |
+
{
|
14 |
+
if (is_null(self::$instance))
|
15 |
+
self::$instance = new ProInstaller();
|
16 |
+
|
17 |
+
return self::$instance;
|
18 |
+
}
|
19 |
+
|
20 |
+
public function installPRO($download_url) {
|
21 |
+
|
22 |
+
// Install the addon.
|
23 |
+
$result = array(
|
24 |
+
'success' => false,
|
25 |
+
'error_message' => __('Unspecified error while installing plugin', 'maxbuttons'),
|
26 |
+
'base' => null,
|
27 |
+
);
|
28 |
+
|
29 |
+
$plugins = get_plugins();
|
30 |
+
if (isset($plugins[$this->pro_slug]))
|
31 |
+
{
|
32 |
+
$result['error_message'] = __('Installation failed. The PRO plugin seems already installed on your website! You can activate it manually via the plugin screen', 'maxbuttons');
|
33 |
+
return $result;
|
34 |
+
}
|
35 |
+
|
36 |
+
if ( ! is_null($download_url ) ) {
|
37 |
+
|
38 |
+
//$download_url = esc_url_raw( wp_unslash( $_POST['plugin'] ) );
|
39 |
+
global $hook_suffix;
|
40 |
+
|
41 |
+
// Set the current screen to avoid undefined notices.
|
42 |
+
set_current_screen();
|
43 |
+
|
44 |
+
require_once (ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
|
45 |
+
require_once (ABSPATH . 'wp-admin/includes/class-automatic-upgrader-skin.php');
|
46 |
+
|
47 |
+
|
48 |
+
$url = admin_url('wp-admin');
|
49 |
+
$method = 'POST';
|
50 |
+
|
51 |
+
// Create the plugin upgrader with our custom skin.
|
52 |
+
$skin = new \Automatic_Upgrader_Skin();
|
53 |
+
$installer = new \Plugin_Upgrader( $skin );
|
54 |
+
$installer_result = $installer->install( $download_url );
|
55 |
+
|
56 |
+
|
57 |
+
if (is_wp_error($installer_result))
|
58 |
+
{
|
59 |
+
$result['error_message'] = $installer_result->get_error_message();
|
60 |
+
return $result;
|
61 |
+
}
|
62 |
+
|
63 |
+
if ( $installer->plugin_info() ) {
|
64 |
+
$plugin_basename = $installer->plugin_info();
|
65 |
+
|
66 |
+
//ob_clean();
|
67 |
+
$result['basename'] = $plugin_basename;
|
68 |
+
$result['success'] = true;
|
69 |
+
return $result;
|
70 |
+
|
71 |
+
}
|
72 |
+
else
|
73 |
+
{
|
74 |
+
// Check filesystem perms to see if user is allowed to install.
|
75 |
+
// If not this annoying FTP permission screen pops up.
|
76 |
+
$bool = ob_start();
|
77 |
+
|
78 |
+
$creds = request_filesystem_credentials( $url, $method, false, false, null );
|
79 |
+
if ( false === $creds ) {
|
80 |
+
|
81 |
+
$result['error_message'] = sprintf(__('Installation failed. WordPress doesn\'t have permission to install plugin(s). Please check and correct %s your permissions %s', 'maxbuttons'), '<a href="https://wordpress.org/support/article/changing-file-permissions/" target="_blank">', '</a>');
|
82 |
+
$result['success'] = false;
|
83 |
+
$bool = ob_end_clean();
|
84 |
+
return $result;
|
85 |
+
}
|
86 |
+
|
87 |
+
}
|
88 |
+
}
|
89 |
+
else
|
90 |
+
{
|
91 |
+
$result['error_message'] = __('Failed to find Download URL', 'maxbuttons');
|
92 |
+
}
|
93 |
+
|
94 |
+
// failed, unreasonably.
|
95 |
+
return $result;
|
96 |
+
|
97 |
+
}
|
98 |
+
|
99 |
+
public function switchPlugins() {
|
100 |
+
|
101 |
+
$result = array(
|
102 |
+
'success' => false,
|
103 |
+
'error_message' => __('Unspecified error while switching plugins', 'maxbuttons'),
|
104 |
+
'base' => null,
|
105 |
+
);
|
106 |
+
|
107 |
+
|
108 |
+
$plugins = get_plugins();
|
109 |
+
|
110 |
+
$redirect = admin_url('admin.php?page=maxbuttons-license&installedfrom=maxbuttons-free');
|
111 |
+
|
112 |
+
if (is_plugin_active($this->free_slug))
|
113 |
+
{
|
114 |
+
if (! is_plugin_active($this->pro_slug) && isset($plugins[$this->pro_slug]))
|
115 |
+
{
|
116 |
+
// Deactivate before activate, because activate requires a reditect. Suboptimal.
|
117 |
+
deactivate_plugins($this->free_slug);
|
118 |
+
$res = activate_plugin($this->pro_slug, $redirect);
|
119 |
+
if (is_wp_error($res))
|
120 |
+
{
|
121 |
+
$result['error_message'] = $res->get_error_message();
|
122 |
+
return $result;
|
123 |
+
}
|
124 |
+
}
|
125 |
+
else
|
126 |
+
{
|
127 |
+
$result['error_message'] = __('MaxButtons PRO seems not to be installed.', 'maxbuttons');
|
128 |
+
}
|
129 |
+
}
|
130 |
+
else
|
131 |
+
{
|
132 |
+
$result['error_message'] = __('This plugin reported as not active(?) - Aborting', 'maxbuttons');
|
133 |
+
}
|
134 |
+
|
135 |
+
|
136 |
+
return $result;
|
137 |
+
|
138 |
+
}
|
139 |
+
|
140 |
+
} // class
|
classes/upgrader/license.php
ADDED
@@ -0,0 +1,243 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace MaxButtons\Upgrader;
|
3 |
+
defined('ABSPATH') or die('No direct access permitted');
|
4 |
+
|
5 |
+
/** Limited Class to Check a License and get PRO going.
|
6 |
+
*/
|
7 |
+
class upgradeLicense
|
8 |
+
{
|
9 |
+
protected static $instance;
|
10 |
+
|
11 |
+
protected $product_id = "maxbuttons-pro";
|
12 |
+
protected $license_key = null;
|
13 |
+
protected $license_activated = null;
|
14 |
+
protected $license_lastcheck = null;
|
15 |
+
protected $license_expires = null;
|
16 |
+
|
17 |
+
protected $api_url = 'https://www.maxbuttons.com';
|
18 |
+
// protected $update_url = 'https://maxbuttons.com/maxupdate';
|
19 |
+
|
20 |
+
protected $is_valid = false;
|
21 |
+
protected $is_expired = true;
|
22 |
+
|
23 |
+
|
24 |
+
public function __construct()
|
25 |
+
{
|
26 |
+
|
27 |
+
}
|
28 |
+
|
29 |
+
public static function getInstance()
|
30 |
+
{
|
31 |
+
if (is_null(self::$instance))
|
32 |
+
self::$instance = new upgradeLicense();
|
33 |
+
|
34 |
+
return self::$instance;
|
35 |
+
}
|
36 |
+
|
37 |
+
|
38 |
+
public function is_activated()
|
39 |
+
{
|
40 |
+
return $this->license_activated;
|
41 |
+
}
|
42 |
+
|
43 |
+
public function is_valid()
|
44 |
+
{
|
45 |
+
return $this->is_valid;
|
46 |
+
}
|
47 |
+
|
48 |
+
public function is_expired()
|
49 |
+
{
|
50 |
+
return $this->is_expired;
|
51 |
+
}
|
52 |
+
|
53 |
+
protected function get_api_args()
|
54 |
+
{
|
55 |
+
$args = array(
|
56 |
+
"item_name" => $this->product_id,
|
57 |
+
"url" => home_url(),
|
58 |
+
);
|
59 |
+
return $args;
|
60 |
+
}
|
61 |
+
|
62 |
+
/** Check the given license against the system */
|
63 |
+
public function activate_license($license_key)
|
64 |
+
{
|
65 |
+
$error = false; // error handling
|
66 |
+
|
67 |
+
$args = $this->get_api_args();
|
68 |
+
$args["license"] = $license_key;
|
69 |
+
$args["edd_action"] = 'activate_license';
|
70 |
+
|
71 |
+
$free_created = get_option("MBFREE_CREATED");
|
72 |
+
$free_url = get_option("MBFREE_HOMEURL");
|
73 |
+
|
74 |
+
if ($free_created != '')
|
75 |
+
$args["free_created"] = $free_created;
|
76 |
+
if ($free_url != '')
|
77 |
+
$args["free_url"] = $free_url;
|
78 |
+
|
79 |
+
//$api_url = add_query_arg($args, $this->api_url);
|
80 |
+
|
81 |
+
//header('Content-Type: application/json');
|
82 |
+
|
83 |
+
if ($error) // errors before the request
|
84 |
+
{
|
85 |
+
return $error_body;
|
86 |
+
//echo json_encode($error_body);
|
87 |
+
// exit();
|
88 |
+
}
|
89 |
+
|
90 |
+
$data = $this->do_api_post($args);
|
91 |
+
|
92 |
+
if (isset($data->license) && $data->license == 'valid')
|
93 |
+
{
|
94 |
+
$expires = strtotime($data->expires);
|
95 |
+
$result = array("status" => 'success'); // clean output
|
96 |
+
update_option('maxbuttons_pro_license_key', $license_key, true);
|
97 |
+
update_option('maxbuttons_pro_license_expires', $expires );
|
98 |
+
update_option('maxbuttons_pro_license_activated', true, true);
|
99 |
+
|
100 |
+
wp_cache_flush(); // some hosts have aggro-caches here, hopefully this will helps against them.
|
101 |
+
// echo json_encode($result);
|
102 |
+
// exit();
|
103 |
+
$data->success = true;
|
104 |
+
return $data;
|
105 |
+
}
|
106 |
+
else
|
107 |
+
{
|
108 |
+
$data->success = false;
|
109 |
+
return $this->handle_error($data);
|
110 |
+
}
|
111 |
+
|
112 |
+
}
|
113 |
+
|
114 |
+
public function getPackageUrl($license_key)
|
115 |
+
{
|
116 |
+
$args = $this->get_api_args();
|
117 |
+
$args["license"] = $license_key;
|
118 |
+
$args["edd_action"] = 'get_version';
|
119 |
+
|
120 |
+
$data = $this->do_api_post($args);
|
121 |
+
|
122 |
+
if ($data->package && strlen($data->package) > 0)
|
123 |
+
return $data->package;
|
124 |
+
else
|
125 |
+
return false;
|
126 |
+
|
127 |
+
}
|
128 |
+
|
129 |
+
|
130 |
+
protected function do_api_post($args)
|
131 |
+
{
|
132 |
+
$result = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $args ) );
|
133 |
+
|
134 |
+
if ( is_wp_error( $result ) || 200 !== wp_remote_retrieve_response_code( $result ) )
|
135 |
+
{
|
136 |
+
$error = $result->get_error_message();
|
137 |
+
|
138 |
+
$message = ( is_wp_error( $result ) && ! empty( $error ) ) ? $error : __( 'An connection error occurred, please try again.', 'maxbuttons-pro');
|
139 |
+
$result = array('status' => 'error',
|
140 |
+
'error' => $message,
|
141 |
+
"additional_info" => $message,
|
142 |
+
);
|
143 |
+
echo json_encode($result);
|
144 |
+
|
145 |
+
}
|
146 |
+
|
147 |
+
$data = json_decode( wp_remote_retrieve_body( $result ) );
|
148 |
+
|
149 |
+
return $data;
|
150 |
+
}
|
151 |
+
|
152 |
+
|
153 |
+
protected function handle_error($data)
|
154 |
+
{
|
155 |
+
//$new_result = new \stdclass; // clean output;
|
156 |
+
//.$new_result["status"] = "error";
|
157 |
+
//$new_result["error"] = (isset($data->error)) ? $data->error : '';
|
158 |
+
$data->status = 'error';
|
159 |
+
|
160 |
+
switch( $data->error ) {
|
161 |
+
case 'expired' :
|
162 |
+
$message = sprintf(
|
163 |
+
__( 'Your license key expired on %s.', 'maxbuttons-pro' ),
|
164 |
+
date_i18n( get_option( 'date_format' ), strtotime( $data->expires, current_time( 'timestamp' ) ) )
|
165 |
+
);
|
166 |
+
break;
|
167 |
+
case 'revoked' :
|
168 |
+
case 'disabled' :
|
169 |
+
$message = __( 'Your license key has been disabled.','maxbuttons-pro');
|
170 |
+
break;
|
171 |
+
case 'missing' :
|
172 |
+
$message = __( 'Invalid license. Please check the license code. ', 'maxbuttons-pro');
|
173 |
+
break;
|
174 |
+
case 'invalid' :
|
175 |
+
case 'site_inactive' :
|
176 |
+
$message = __( 'Your license is not active for this URL.', 'maxbuttons-pro' );
|
177 |
+
break;
|
178 |
+
case 'item_name_mismatch' :
|
179 |
+
$message = sprintf( __( 'This appears to be an invalid license key for %s.', 'maxbuttons-pro' ), 'MaxButtons PRO' );
|
180 |
+
break;
|
181 |
+
case 'no_activations_left':
|
182 |
+
$message = __( 'Your license key has reached its activation limit.','maxbuttons-pro' );
|
183 |
+
break;
|
184 |
+
default :
|
185 |
+
$message = __( 'An error occurred, please try again.', 'maxbuttons-pro' );
|
186 |
+
break;
|
187 |
+
}
|
188 |
+
$data->additional_info = $message ;
|
189 |
+
// $result = $new_result;
|
190 |
+
|
191 |
+
return $data;
|
192 |
+
//echo json_encode($result);
|
193 |
+
// exit();
|
194 |
+
}
|
195 |
+
|
196 |
+
|
197 |
+
public function get_remote_license($license_key)
|
198 |
+
{
|
199 |
+
$args = array(
|
200 |
+
"edd_action" => "check_license",
|
201 |
+
"license" => $license_key,
|
202 |
+
"item_name" => $this->product_id,
|
203 |
+
"url" => home_url(),
|
204 |
+
);
|
205 |
+
|
206 |
+
|
207 |
+
$request = wp_remote_post($this->api_url, array( 'body' => $args, 'timeout' => 15, 'sslverify' => false ) );
|
208 |
+
if(is_wp_error($request))
|
209 |
+
{
|
210 |
+
// failed - defer check three hours - prevent check license flood
|
211 |
+
// $this->update_license_checked_time( (3*HOUR_IN_SECONDS) );
|
212 |
+
error_log("MBPRO - License server failed to respond");
|
213 |
+
return __("HTTP Request failed", 'maxbuttons');
|
214 |
+
}
|
215 |
+
|
216 |
+
$data = json_decode( wp_remote_retrieve_body( $request ) );
|
217 |
+
|
218 |
+
if (isset($data->expires))
|
219 |
+
{
|
220 |
+
if ($data->expires === 'lifetime')
|
221 |
+
$expires = time() + YEAR_IN_SECONDS;
|
222 |
+
else
|
223 |
+
$expires = strtotime($data->expires);
|
224 |
+
|
225 |
+
update_option('maxbuttons_pro_license_expires', $expires );
|
226 |
+
}
|
227 |
+
|
228 |
+
// this is probably not correct! valid || expired?
|
229 |
+
$active_statuses = array('valid', 'expired', 'inactive');
|
230 |
+
if (isset($data->license) && in_array($data->license, $active_statuses) )
|
231 |
+
{
|
232 |
+
return $data;
|
233 |
+
// return true;
|
234 |
+
}
|
235 |
+
else
|
236 |
+
{
|
237 |
+
$data->error = 'license-not-valid';
|
238 |
+
return $this->handle_error($data);
|
239 |
+
}
|
240 |
+
}
|
241 |
+
|
242 |
+
|
243 |
+
} // Class
|
images/gopro/linkmanager.png
ADDED
Binary file
|
includes/maxbuttons-button.php
CHANGED
@@ -10,7 +10,7 @@ $page_title = __("Button editor","maxbuttons");
|
|
10 |
$action = $this->getButton('add-new', array('add_class' => 'page-title-action add-new-h2')); //"<a class='page-title-action add-new-h2' href='" . $this->getButtonLink() . "'>" . __('Add New', 'maxbuttons') . "</a>";
|
11 |
$admin->get_header(array("title" => $page_title, "title_action" => $action) );
|
12 |
?>
|
13 |
-
<form id="new-button-form" action="<?php echo $this->getButtonLink($button_id
|
14 |
<input type="hidden" name="button_id" value="<?php echo $button_id ?>">
|
15 |
<input type="hidden" name="button_is_new" value="<?php echo $this->view->button_is_new ?>" />
|
16 |
<?php wp_nonce_field("button-edit","maxbuttons_button") ?>
|
10 |
$action = $this->getButton('add-new', array('add_class' => 'page-title-action add-new-h2')); //"<a class='page-title-action add-new-h2' href='" . $this->getButtonLink() . "'>" . __('Add New', 'maxbuttons') . "</a>";
|
11 |
$admin->get_header(array("title" => $page_title, "title_action" => $action) );
|
12 |
?>
|
13 |
+
<form id="new-button-form" action="<?php echo $this->getButtonLink($button_id); ?>" method="post">
|
14 |
<input type="hidden" name="button_id" value="<?php echo $button_id ?>">
|
15 |
<input type="hidden" name="button_is_new" value="<?php echo $this->view->button_is_new ?>" />
|
16 |
<?php wp_nonce_field("button-edit","maxbuttons_button") ?>
|
includes/maxbuttons-pro.php
CHANGED
@@ -21,12 +21,43 @@ $bottom_buy = $checkout_url . "&utm_source=mbf-dash$version&utm_medium=mbf-plugi
|
|
21 |
|
22 |
$admin->get_header(array("title" => $page_title, "title_action" => $buy_now_top, 'action' => 'gopro' ) );
|
23 |
|
|
|
24 |
?>
|
25 |
|
26 |
<link href='https://fonts.googleapis.com/css?family=Quicksand:400,700' rel='stylesheet' type='text/css'>
|
27 |
<div class="wrapper-inner">
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
|
|
|
30 |
<div class="default-section">
|
31 |
<div class="container">
|
32 |
<h2>Build Even Better WordPress Buttons with MaxButtons Pro!</h2>
|
@@ -42,7 +73,7 @@ $admin->get_header(array("title" => $page_title, "title_action" => $buy_now_top,
|
|
42 |
<p>
|
43 |
<a href="<?php echo $middle_buy ?>" target="_blank" class="big-maxg-btn inline-block">Buy Now</a>
|
44 |
<p>
|
45 |
-
Join over 10,000 Designers, Developers, Bloggers and Customers!
|
46 |
</p>
|
47 |
</div> <!-- container -->
|
48 |
</div>
|
21 |
|
22 |
$admin->get_header(array("title" => $page_title, "title_action" => $buy_now_top, 'action' => 'gopro' ) );
|
23 |
|
24 |
+
|
25 |
?>
|
26 |
|
27 |
<link href='https://fonts.googleapis.com/css?family=Quicksand:400,700' rel='stylesheet' type='text/css'>
|
28 |
<div class="wrapper-inner">
|
29 |
|
30 |
+
<!--- form -->
|
31 |
+
<div class="license-section">
|
32 |
+
|
33 |
+
<form id="license_form" class='license_form' method="POST" action="<?php echo $this->url ?>">
|
34 |
+
<?php wp_nonce_field('upgrade', 'upgrade_nonce'); ?>
|
35 |
+
<h3><?php _e('Already have a License?', 'maxbuttons'); ?></h3>
|
36 |
+
<p><?php _e('Enter your license key and install MaxButtons PRO. If the license key is valid, the plugin will activate the license, download the plugin and install it. This can take a while!', 'maxbuttons'); ?></p>
|
37 |
+
|
38 |
+
<p><input type="text" name="license_key" value="<?php echo $this->view->licenseKey ?>" placeholder="<?php _e('MaxButtons PRO License Key', 'maxbuttons') ?>"></p>
|
39 |
+
|
40 |
+
<p>
|
41 |
+
<button type="submit" class='button button-primary'><?php _e('Upgrade to MaxButtons PRO','maxbuttons-pro'); ?></button>
|
42 |
+
</p>
|
43 |
+
</form>
|
44 |
+
|
45 |
+
<?php
|
46 |
+
// Hello new year, fix this. PostError in this, check, error, write
|
47 |
+
if ( property_exists($this->view, 'PostError')):
|
48 |
+
$support_link = apply_filters("mb-support-link", 'http://wordpress.org/support/plugin/maxbuttons');
|
49 |
+
?>
|
50 |
+
<div class='license-error'>
|
51 |
+
<p class='error'><?php echo $this->view->PostError; ?><p>
|
52 |
+
<p class='small'><?php printf(__("Stuck or unclear error? %s Contact our support %s ."), '<a href=' . $support_link . ' target="_blank">', '</a>'); ?></p>
|
53 |
+
</div>
|
54 |
+
<?php
|
55 |
+
endif;
|
56 |
+
?>
|
57 |
+
|
58 |
+
</div> <!-- license -->
|
59 |
|
60 |
+
<!--- start sell -->
|
61 |
<div class="default-section">
|
62 |
<div class="container">
|
63 |
<h2>Build Even Better WordPress Buttons with MaxButtons Pro!</h2>
|
73 |
<p>
|
74 |
<a href="<?php echo $middle_buy ?>" target="_blank" class="big-maxg-btn inline-block">Buy Now</a>
|
75 |
<p>
|
76 |
+
Join over 10,000 Designers, Developers, Bloggers and Agency Customers!
|
77 |
</p>
|
78 |
</div> <!-- container -->
|
79 |
</div>
|
maxbuttons.php
CHANGED
@@ -3,22 +3,22 @@
|
|
3 |
Plugin Name: MaxButtons
|
4 |
Plugin URI: http://maxbuttons.com
|
5 |
Description: The best WordPress button generator. This is the free version; the Pro version <a href="http://maxbuttons.com/?ref=mbfree">can be found here</a>.
|
6 |
-
Version:
|
7 |
Author: Max Foundry
|
8 |
Author URI: http://maxfoundry.com
|
9 |
Text Domain: maxbuttons
|
10 |
Domain Path: /languages
|
11 |
|
12 |
-
Copyright
|
13 |
*/
|
14 |
namespace MaxButtons;
|
15 |
|
16 |
if (! defined('MAXBUTTONS_ROOT_FILE'))
|
17 |
define("MAXBUTTONS_ROOT_FILE", __FILE__);
|
18 |
if (! defined('MAXBUTTONS_VERSION_NUM'))
|
19 |
-
define('MAXBUTTONS_VERSION_NUM', '
|
20 |
|
21 |
-
define('MAXBUTTONS_RELEASE',"
|
22 |
|
23 |
if (! function_exists('MaxButtons\maxbutton_double_load'))
|
24 |
{
|
3 |
Plugin Name: MaxButtons
|
4 |
Plugin URI: http://maxbuttons.com
|
5 |
Description: The best WordPress button generator. This is the free version; the Pro version <a href="http://maxbuttons.com/?ref=mbfree">can be found here</a>.
|
6 |
+
Version: 9.0
|
7 |
Author: Max Foundry
|
8 |
Author URI: http://maxfoundry.com
|
9 |
Text Domain: maxbuttons
|
10 |
Domain Path: /languages
|
11 |
|
12 |
+
Copyright 2022 Max Foundry, LLC (http://maxfoundry.com)
|
13 |
*/
|
14 |
namespace MaxButtons;
|
15 |
|
16 |
if (! defined('MAXBUTTONS_ROOT_FILE'))
|
17 |
define("MAXBUTTONS_ROOT_FILE", __FILE__);
|
18 |
if (! defined('MAXBUTTONS_VERSION_NUM'))
|
19 |
+
define('MAXBUTTONS_VERSION_NUM', '9.0');
|
20 |
|
21 |
+
define('MAXBUTTONS_RELEASE',"15 January 2022");
|
22 |
|
23 |
if (! function_exists('MaxButtons\maxbutton_double_load'))
|
24 |
{
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: wordpress button plugin, share button, wordpress buttons, css3 button gene
|
|
4 |
Requires at least: 4.8
|
5 |
Tested up to: 5.8
|
6 |
Requires PHP: 7.0
|
7 |
-
Stable tag:
|
8 |
WordPress button plugin so powerful and easy to use anyone can create beautiful buttons, share buttons and social icons.
|
9 |
|
10 |
== Description ==
|
@@ -193,8 +193,7 @@ Simply add the button shortcode to your widget (ex: [maxbutton id="17"] or [maxb
|
|
193 |
|
194 |
= How can I add the shortcode to my post/page template? =
|
195 |
|
196 |
-
|
197 |
-
`<?php echo do_shortcode('[maxbutton id="17"]'); ?>`
|
198 |
|
199 |
= Can't see styling on the frontpage =
|
200 |
|
@@ -202,8 +201,8 @@ Sometimes the button styling doesn't load on the frontpage. There are usually tw
|
|
202 |
|
203 |
* Theme doesn't have proper footer, check if wp_footer() is called in the theme
|
204 |
* Using MaxButtons with sliders, dynamic page loaders (such a parallax and one-page themes ) or caching mechanisms.
|
205 |
-
|
206 |
-
|
207 |
|
208 |
|
209 |
= TablePress and MaxButtons =
|
@@ -212,6 +211,8 @@ TablePress uses a caching mechanism which prevents the MaxButtons style design f
|
|
212 |
|
213 |
A solution which will keep the cache enabled is to use this in your shortcode: [maxbutton id=1 style="inline"] . Flush the TablePress cache after adding this.
|
214 |
|
|
|
|
|
215 |
= Part of my button is cutoff, how do I fix that? =
|
216 |
|
217 |
Try enabling the container and setting its margin options. You could also fix this manually by surrounding your button shortcode with a div element with margins. For example:
|
@@ -229,7 +230,7 @@ Enable the "Wrap with Center Div" option in the Container settings.
|
|
229 |
|
230 |
= How do I align multiple buttons next to each other? =
|
231 |
|
232 |
-
Enable the container option and set the alignment property to either "display: inline-block" or "float: left". You might also want to add some margin values to put some spacing between your buttons. If that doesn't work, try using a simple HTML table
|
233 |
|
234 |
`<table>
|
235 |
<tr>
|
@@ -239,6 +240,9 @@ Enable the container option and set the alignment property to either "display: i
|
|
239 |
</tr>
|
240 |
</table>`
|
241 |
|
|
|
|
|
|
|
242 |
= How do I display a MaxButton in a WordPress menu? =
|
243 |
|
244 |
By default WordPress can't display shortcodes in a menu. You can use this [plugin](https://wordpress.org/plugins/shortcode-in-menus/) to allow shortcodes in a menu. Just copy the MaxButton shortcode in the menu after installing
|
@@ -266,8 +270,17 @@ The plugin works with users of non-lating languages with a few exceptions. First
|
|
266 |
|
267 |
Secondly, please use latin only characters for button name ( Basic settings) and extra classes ( Advanced settings ). Not doing so might prevent the styling output from working correctly.
|
268 |
|
|
|
|
|
|
|
|
|
269 |
== Changelog ==
|
270 |
|
|
|
|
|
|
|
|
|
|
|
271 |
= 8.8.4 =
|
272 |
|
273 |
* Added integer check on gradient to prevent crash on bad data.
|
4 |
Requires at least: 4.8
|
5 |
Tested up to: 5.8
|
6 |
Requires PHP: 7.0
|
7 |
+
Stable tag: 9.0
|
8 |
WordPress button plugin so powerful and easy to use anyone can create beautiful buttons, share buttons and social icons.
|
9 |
|
10 |
== Description ==
|
193 |
|
194 |
= How can I add the shortcode to my post/page template? =
|
195 |
|
196 |
+
You can use the WordPress do_shortcode function for this. Use the button name instead of ID for clearer code and easier replacement.
|
|
|
197 |
|
198 |
= Can't see styling on the frontpage =
|
199 |
|
201 |
|
202 |
* Theme doesn't have proper footer, check if wp_footer() is called in the theme
|
203 |
* Using MaxButtons with sliders, dynamic page loaders (such a parallax and one-page themes ) or caching mechanisms.
|
204 |
+
* Some Caching plugins will remove styles. Either whitelist .maxbutton class or use the file loader in MaxButtons PRO settings
|
205 |
+
* If loading dynamically, you can output the style next to the button using [maxbuttons id=x 'style=inline'] in the shortcode
|
206 |
|
207 |
|
208 |
= TablePress and MaxButtons =
|
211 |
|
212 |
A solution which will keep the cache enabled is to use this in your shortcode: [maxbutton id=1 style="inline"] . Flush the TablePress cache after adding this.
|
213 |
|
214 |
+
Use this only if you encounter issues. Most of the time MaxButtons works without any need for modifications.
|
215 |
+
|
216 |
= Part of my button is cutoff, how do I fix that? =
|
217 |
|
218 |
Try enabling the container and setting its margin options. You could also fix this manually by surrounding your button shortcode with a div element with margins. For example:
|
230 |
|
231 |
= How do I align multiple buttons next to each other? =
|
232 |
|
233 |
+
Enable the container option and set the alignment property to either "display: inline-block" or "float: left". You might also want to add some margin values to put some spacing between your buttons. If that doesn't work, try using a simple HTML table.
|
234 |
|
235 |
`<table>
|
236 |
<tr>
|
240 |
</tr>
|
241 |
</table>`
|
242 |
|
243 |
+
* A lot of modern page builders have solution for positioning content, like grids. You can leverage those for better results.
|
244 |
+
* You can use [TablePress](https://wordpress.org/plugins/tablepress/) to create tables in WordPress.
|
245 |
+
|
246 |
= How do I display a MaxButton in a WordPress menu? =
|
247 |
|
248 |
By default WordPress can't display shortcodes in a menu. You can use this [plugin](https://wordpress.org/plugins/shortcode-in-menus/) to allow shortcodes in a menu. Just copy the MaxButton shortcode in the menu after installing
|
270 |
|
271 |
Secondly, please use latin only characters for button name ( Basic settings) and extra classes ( Advanced settings ). Not doing so might prevent the styling output from working correctly.
|
272 |
|
273 |
+
= How do I upgrade the plugin? =
|
274 |
+
|
275 |
+
Upgrading to the PRO version is quite simple. Obtain a license key via our [site](https://maxbuttons.com). You can enter the license code within the free version on the 'Upgrade to PRO' page. After entering the license key, the PRO version will automatically download and install. You are good to go!
|
276 |
+
|
277 |
== Changelog ==
|
278 |
|
279 |
+
= 9.0 =
|
280 |
+
|
281 |
+
* Upgrade to PRO directly from the plugin ( Upgrade to PRO screen )
|
282 |
+
* Streamlined save process / redirects in the POST process
|
283 |
+
|
284 |
= 8.8.4 =
|
285 |
|
286 |
* Added integer check on gradient to prevent crash on bad data.
|