WordPress Button Plugin MaxButtons - Version 9.0

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 Icon 128x128 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 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
- abstract protected function handlePost();
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
- wp_redirect($url);
160
- exit();
 
 
 
 
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
- parent::view();
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
- function load_admin_page()
 
358
  {
359
- $page = sanitize_text_field($_GET["page"]);
 
 
360
 
361
- if ($page == 'maxbuttons-controller')
362
- {
363
- $action = isset($_GET['action']) ? sanitize_text_field($_GET['action']) : null;
364
- if (! is_null($action))
365
- {
366
- $page = 'maxbuttons-list'; // default;
367
 
368
- if ($action == 'button' || $action == 'edit')
369
- {
370
- $page = 'maxbuttons-button';
371
- }
372
 
373
- }
374
- }
375
- switch($page)
376
- {
377
- case "maxbuttons-button":
378
- $controller = new editorController();
379
- break;
380
- case "maxbuttons-support":
381
- $controller = new supportController();
382
- break;
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, array('noheader' => true)); ?>" 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") ?>
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: 8.8.4
7
  Author: Max Foundry
8
  Author URI: http://maxfoundry.com
9
  Text Domain: maxbuttons
10
  Domain Path: /languages
11
 
12
- Copyright 2021 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', '8.8.4');
20
 
21
- define('MAXBUTTONS_RELEASE',"24 December 2021");
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.8.4
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
- Simply add this code snippet to any of your theme template files:
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
- other
206
- First ensure you have cleared all your caches. Then you can try to add the following to your shortcode: [maxbutton id=1 style="inline"] ( replace the ID with the number of your button ).
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.