AdSense Plugin WP QUADS - Version 1.7.2

Version Description

  • New: Add Home Page condition for vi
  • New: Add margin option for vi video ad
  • Fix: Remove undefined var notice
  • Fix: Remove debugging output
  • Fix: vi login sometimes not automatically redirect
  • Fix: use correct default values for vi settings if they are empty
  • Fix: Use correct tier2 iab category depending on tier1 selection
  • Fix: missing comma in ads.txt google adsense entry
  • Fix: Do not show vi ad on feed, 404, category, archive and search pages
  • Fix: Missing excerpt and content on category and archiv pages
  • Fix: vi font Size default value can be empty
  • Fix: Do not show vi ads when user is logged out of vi
  • Tweak: Remove validate ad settings button
  • Tweak: Remove not necessary admin notices
Download this release

Release Info

Developer ReneHermi
Plugin Icon 128x128 AdSense Plugin WP QUADS
Version 1.7.2
Comparing to
See all releases

Code changes from version 1.7.1 to 1.7.2

assets/css/quads-admin.css CHANGED
@@ -1187,4 +1187,15 @@ margin-top:20px;
1187
  border-bottom:3px solid yellow;
1188
  font-weight: bold;
1189
  color:white;
1190
- }*/
 
 
 
 
 
 
 
 
 
 
 
1187
  border-bottom:3px solid yellow;
1188
  font-weight: bold;
1189
  color:white;
1190
+ }*/
1191
+
1192
+ #quads_vi_automatic_integration select{
1193
+ min-width: 180px;
1194
+ }
1195
+
1196
+ #quads_vi_ads\[ads\]\[1\]\[marginLeft\],
1197
+ #quads_vi_ads\[ads\]\[1\]\[marginTop\],
1198
+ #quads_vi_ads\[ads\]\[1\]\[marginRight\],
1199
+ #quads_vi_ads\[ads\]\[1\]\[marginBottom\]{
1200
+ width: 60px;
1201
+ }
assets/css/quads-admin.min.css CHANGED
@@ -1 +1 @@
1
- .quads-share-button-container{margin:5px 0}.quads-share-button-container p{margin:0 0 10px}.quads-share-button{display:inline-block}.quads-share-button a{text-decoration:none}.quads-share-button .quads-share{font-family:sans-serif;font-weight:700;text-decoration:none;text-align:center;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;color:#FFF;display:inline;font-size:16px;width:40px;padding:4px 8px}.quads-share-button-twitter .quads-share{background-color:#00ABF0}.quads-share-button-facebook .quads-share{background-color:#3b5998}.quads-share-button-googleplus .quads-share{background-color:#F53424}.quads-share-button-facebook .share:active,.quads-share-button-googleplus .share:active,.quads-share-button-twitter .share:active{background-color:#353535}@media (max-width:925px){.quads-share-button .quads-share{font-size:15px;padding:8px 16px}}.quads-richeditor{font-size:11px}#quads-add-ons h2{margin:0 0 15px}#quads-add-ons .quadsshare-addons{float:left;margin:0 15px 15px 0;background:#f0f0f0;border:1px solid #ccc;width:320px;padding:8px;height:315px;position:relative}#quads-add-ons .quadsshare-addons h3{margin:0 0 8px;font-size:13px}#quads-add-ons .quadsshare-addons .button-secondary{position:absolute;bottom:8px;left:8px}#quads-add-ons .quadsshare-addons .third-party{display:none}#system-info-textarea{width:580px;height:400px;font-family:Menlo,Monaco,monospace;background:0 0;white-space:pre;overflow:auto;display:block}.quads-select-chosen{width:300px}input.large-text,textarea.large-text{max-width:600px}input.medium-text,textarea.medium-text{min-width:190px}#quads_tab_container ul{list-style:none;margin:0;padding:0;background:#fff;float:left}#quads_tab_container ul li:first-child.selected-tab{border-top:none}#quads_tab_container ul li a.selected-tab{font-weight:700;text-decoration:none}#quads_tab_container .quads-row{padding-top:12px;padding-bottom:12px}#quads_tab_container .quads-row label strong,#tab_container .quads-row strong{font-weight:700}.quads-tabs a{padding:5px;color:#a1a1a1;text-transform:uppercase}.quads-tabs a strong{font-weight:700}li.quads-tabs{float:left;margin-left:0;background-color:#e5e5e5}#quads_tab_container>ul>li.quads-tabs.active{background-color:#fff}#quads_tab_container>ul>li.quads-tabs.active a{color:#83c11f}#quads_tab_container .quads-panel-container{background:#FFF;padding:20px;overflow:auto;text-align:left;margin-bottom:10px;max-width:640px;float:left;clear:both}.form-table{margin-top:-20px}#quads_tab_container .form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;line-height:1.3;font-weight:700;font-size:14px;color:#484848;width:30%}#quads_tab_container .form-table tr{border-bottom:1px solid #E7E7E7}#quads_tab_container span.description{display:block;font-weight:400;font-style:normal;font-size:13px;margin-top:7px;color:#484848}#quads_tab_container .col-title{font-size:18px;color:#484848}@media only screen and (max-width:680px){#quads_tab_container ul{float:none;background:#fff}#quads_tab_container .form-table tr>th{width:100%}#quads_tab_container span.description{font-size:14px}#quads_tab_container .form-table tr>th,#tab_container .form-table tr>td{padding:10px}#quads_tab_container .quads-tabs a{text-align:left}#quads_tab_container li.quads-tabs{float:none;margin-left:0}}#quads_tab_container ul li.quads-tabs{margin-bottom:0}#quads_tab_container ul li.quads-tabs a{display:block;padding:10px;text-decoration:none;font-weight:700}#quads_tab_container ul li.quads-tabs a:hover{color:#383838}#quads_tab_container ul li.quads-tabs a.active{text-decoration:underline}#quads_tab_container table tbody tr:nth-child(1)>th>div{font-size:20px}#quadstabcontainer>.quadstabs{background-color:#fff}#quadstabcontainer ul .active{background-color:#00adef;color:#fff;border-bottom-color:#0098D2}#quadstabcontainer ul .active:hover{background-color:#00A4E2;color:#fff;border-bottom-color:#0098D2}#quadstabcontainer ul li a{padding:10px 14px;background-color:#f3f3f3}#quadstabcontainer .quadstab-container{border:0 solid #ececec}.quads-quote-docs{font-family:Courier New,Courier,Fixed;color:#050}.quads-desc{display:block;font-style:italic;padding-top:10px}.quads-postbox{padding:10px;position:relative;min-width:255px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;margin-bottom:20px}.nav-tab-active{background-color:#fff;border-bottom:0}#quads-add-ons{padding:20px}.quads-toggle{position:absolute;right:0;top:0}.quads-box-close .quads-close-open-icon{background-position:0 -38px}.quads-close-open-icon{width:38px;height:38px;background:url(../images/arrow-close.png) repeat-y #f4f4f4}.quads-ad-toggle-header{position:relative;background-color:#f4f4f4;margin-bottom:2px;padding:10px 10px 10px 15px;-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none;cursor:pointer!important;min-height:20px}.quads-ad-toggle-container{padding:20px;background-color:#f4f4f4}.quads-toogle-title{font-size:16px;font-weight:700}.adsense-size-title,.quads-advanced-description label{font-weight:600;font-size:12px;text-transform:uppercase;float:left}.quads-advanced-description label{width:215px}.quads-advanced-ad-box{clear:both;margin-top:20px;margin-bottom:20px}.adsense-size-title{margin-right:0;line-height:32px;margin-left:14px;min-width:100px}.quads-select-style-overwrite{border:1px solid #e6e6e6;width:150px;overflow:hidden;background:url(../images/box_arrow.png) 120px 0 repeat-y #fff;margin:0 0 5px}.quads-select-style-overwrite select{width:150px}.quads-size-input{position:relative;top:-1px;width:110%;border:none;box-shadow:none;background:0 0;-webkit-appearance:none;font-family:'Open Sans',arial,sans-serif;color:#555;font-size:12px}.quads-pro-overlay{height:200px}.quads-license-error-notice,.quads-license-expires-soon-notice{background-color:#fff;padding:10px;overflow:auto;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);border:1px solid #ECECEC;border-radius:3px}.quads-license-error-notice a{color:#0097df;text-decoration:underline}.quads-license-error-notice{border-left:4px solid #dd3d36}.quads-license-expiration-date-notice,.quads-license-lifetime-notice,.quads-license-null{padding:0}.quads-license-expiration-date-notice .quads-license-data p,.quads-license-lifetime-notice .quads-license-data p{color:#666;font-size:14px;font-style:italic;margin:4px 0 0}#quads_settingslicenses_header-nav{display:none}#quads_settingslicenses_header{max-width:640px}#quads_settingslicenses_header .quads-row.th{min-width:250px}.quads-notice{background:#fff;border-left:4px solid #46b450;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 15px 2px;padding:1px 12px}.quads_admin h2.nav-tab-wrapper{border:0}.quads_admin .nav-tab{border:0;text-transform:uppercase;color:#a1a1a1;font-weight:700}.quads-h1{margin-bottom:1.35rem;font-size:2.5em;line-height:3.68rem;letter-spacing:normal}.quads-h2{margin-top:0;margin-bottom:1.2rem;font-size:30px;line-height:2.5rem}.quads-heading-pro{color:#83c11f;font-weight:700}.quads-button.green{display:inline-block;background-color:#83c11f;padding:10px;min-width:170px;color:#fff;font-size:16px;text-decoration:none;text-align:center;margin-top:20px}#quads-add-ons .quads-footer{clear:both;margin-top:20px;font-style:italic}#quads-add-ons li{font-size:18px;line-height:29px;position:relative;padding-left:23px;list-style:none!important}#quads-add-ons li:before{width:1em;height:100%;background:url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;background-size:contain;content:"";position:absolute;top:0;left:0;color:#77b227}.adsense_admin_header{font-size:14px;font-weight:500}#quads-adsense-bg-div{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.65);z-index:250000}#quads-adsense-container{text-align:center;width:480px;margin:85px auto 0;background-color:#fff;padding:2%;border-radius:2px}#quads-adsense-container h3{margin-top:0}#quads-adsense-container textarea,.quads-ad-toggle-container textarea{width:100%}.quads-ad-toggle-container input{margin-top:7px;margin-bottom:10px}.quads-adsense-code label,input{margin-right:2px}#quads_settings\5b ad2\5d \5b g_data_ad_client\5d{width:200px}.quads-ad-toggle-container label{display:inline-block;margin-right:2px;margin-top:-3px}.quads_adsense_code .quads-add-adsense{margin:20px 5px 20px 0}.quads-label-left{min-width:71px}#quads-label-Type{min-width:67px}.quads-medium-size{width:110px}#quads-msg{display:none;margin:5px;background-color:#c55c5c;color:#fff}.quads-loader,.quads-success-modal{display:block;position:fixed;top:45%;left:25%;width:200px;height:auto;padding:5px 20px;z-index:1002;overflow:auto}.quads-general-helper,.quads-helper{background-color:#83c11f;display:inline-block}.quads-form-table{width:100%}.quads-left-box{width:45%;min-height:100px;float:left;line-height:35px;min-width:300px}@media screen and (max-width:700px){.adsense-size-title{margin-left:0}.quads-left-box{width:45%;min-height:100px;float:none;line-height:35px;min-width:300px}.quads-style img{max-width:50px}}.adsense_admin_header ul li{margin-top:2px;margin-left:20px;list-style-type:square}.quads-helper{border-radius:50%;border:2px solid #fff;width:15px;height:15px;position:relative;top:4px;margin-top:-4px;cursor:pointer;margin-left:2px}.quads-general-helper:after,.quads-helper:after{height:20px;font-family:sans-serif;content:"?";font-size:11px;font-weight:700;left:4px;position:absolute;color:#fff}.quads-helper:after{margin-top:-10px}.quads-general-helper:after{margin-top:-2px}#quads-add-new-ad:before,.quads-delete-ad:before{font-family:quads;margin-right:5px}.quads-general-helper{border-radius:50%;border:2px solid #fff;width:15px;height:15px;position:relative;top:4px;margin-top:-4px;cursor:pointer;margin-left:2px}.quads-message{padding:10px;border:1px solid #FBFBFB;border-radius:2px;background-color:#F8F8F8;position:absolute;max-width:500px;z-index:9999;display:none;box-shadow:0 0 5px rgba(0,0,0,.2);font-weight:400;line-height:20px;text-transform:none;font-size:14px}#quads-pro-hover{background-color:#83c11f;padding:20px;min-width:150px;color:#fff;display:block;position:relative;margin-top:-100px;margin-left:50%}#quads-pro-hover-background{width:100%;height:100%;background:rgba(0,0,0,.6)}#quads-open-toggle{clear:both;float:left;margin-top:10px}#quads_settingsadsense_header input[type=number].small-text{width:55px}.quads_adsense_code input.quads-bggrey{background-color:#f5f5f5;color:#939393}.quads-amp-code{color:#939393;height:130px}.quads-chosen-select .chosen-choices li.search-field input{min-height:25px}#quads-validate{display:block;margin-left:2px;margin-bottom:20px;font-weight:700;clear:both}#quads-add-new-ad,.quads-delete-ad{font-size:14px;font-weight:600;color:#383838;display:block;text-decoration:none}@font-face{font-family:quads;src:url(data:application/octet-stream;base64,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) format('woff'),url(data:application/octet-stream;base64,AAEAAAAPAIAAAwBwR1NVQiCLJXoAAAD8AAAAVE9TLzI+IEkBAAABUAAAAFZjbWFwiEPsqQAAAagAAAF+Y3Z0IAbV/wQAAAksAAAAIGZwZ22KkZBZAAAJTAAAC3BnYXNwAAAAEAAACSQAAAAIZ2x5Zpc/OaQAAAMoAAACVmhlYWQNxZM1AAAFgAAAADZoaGVhBzoDUAAABbgAAAAkaG10eApS//0AAAXcAAAADGxvY2EAxAErAAAF6AAAAAhtYXhwARIMCgAABfAAAAAgbmFtZcydHR8AAAYQAAACzXBvc3SFVFBUAAAI4AAAAERwcmVw5UErvAAAFLwAAACGAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAEDcQGQAAUAAAJ6ArwAAACMAnoCvAAAAeAAMQECAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAQOgA6AEDUv9qAFoDUgCWAAAAAQAAAAAAAAAAAAUAAAADAAAALAAAAAQAAAFWAAEAAAAAAFAAAwABAAAALAADAAoAAAFWAAQAJAAAAAQABAABAADoAf//AADoAP//AAAAAQAEAAAAAQACAAABBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAoAAAAAAAAAAIAAOgAAADoAAAAAAEAAOgBAADoAQAAAAIAAAAGAAD/sQMSAwsADwAfAC8AOwBDAGcAZEBhV0UCBggpIRkRCQEGAAECRwUDAgEGAAYBAG0EAgIABwYAB2sADgAJCA4JYA8NAggMCgIGAQgGXgAHCwsHVAAHBwtYAAsHC0xlZGFeW1lTUk9MSUdBPxQkFCYmJiYmIxAFHSsBERQGKwEiJjURNDY7ATIWFxEUBisBIiY1ETQ2OwEyFhcRFAYrASImNRE0NjsBMhYTESERFB4BMyEyPgEBMycmJyMGBwUVFAYrAREUBiMhIiYnESMiJj0BNDY7ATc+ATczMhYfATMyFgEeCggkCAoKCCQICo8KCCQICgoIJAgKjgoHJAgKCggkBwpI/gwICAIB0AIICP6J+hsEBbEGBAHrCgg2NCX+MCU0ATUICgoIrCcJLBayFyoJJ60ICgG3/r8ICgoIAUEICgoI/r8ICgoIAUEICgoI/r8ICgoIAUEICgr+ZAIR/e8MFAoKFAJlQQUBAQVTJAgK/e8uREIuAhMKCCQICl0VHAEeFF0KAAL//f+xA18DCwAjADAAQUA+DQEAAR8BBAMCRwIBAAEDAQADbQUBAwQBAwRrAAcAAQAHAWAABAYGBFQABAQGWAAGBAZMFRUjJCUjJBQIBRwrATU0JgcjNTQmJyMiBgcVIyIGFxUUFjczFRQWFzMyNjc1MzI2NxQOASIuAj4BMh4BAqcWDo8WDkcPFAGPDhYBFA+PFg5HDxQBjw4WsnLG6MhuBnq89Lp+ATpIDhYBjw8UARYOjxQPSA4WAY8PFAEWDo8UM3XEdHTE6sR0dMQAAAABAAAAAQAA7KITH18PPPUACwPoAAAAANVgp8oAAAAA1WCnyv/9/7ED6AMLAAAACAACAAAAAAAAAAEAAANS/2oAAAPo//3/+gPoAAEAAAAAAAAAAAAAAAAAAAADA+gAAAMRAAADWf/9AAAAAADEASsAAQAAAAMAaAAGAAAAAAACACAAMABzAAAAdQtwAAAAAAAAABIA3gABAAAAAAAAADUAAAABAAAAAAABAAgANQABAAAAAAACAAcAPQABAAAAAAADAAgARAABAAAAAAAEAAgATAABAAAAAAAFAAsAVAABAAAAAAAGAAgAXwABAAAAAAAKACsAZwABAAAAAAALABMAkgADAAEECQAAAGoApQADAAEECQABABABDwADAAEECQACAA4BHwADAAEECQADABABLQADAAEECQAEABABPQADAAEECQAFABYBTQADAAEECQAGABABYwADAAEECQAKAFYBcwADAAEECQALACYByUNvcHlyaWdodCAoQykgMjAxNyBieSBvcmlnaW5hbCBhdXRob3JzIEAgZm9udGVsbG8uY29tZm9udGVsbG9SZWd1bGFyZm9udGVsbG9mb250ZWxsb1ZlcnNpb24gMS4wZm9udGVsbG9HZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAQwApACAAMgAwADEANwAgAGIAeQAgAG8AcgBpAGcAaQBuAGEAbAAgAGEAdQB0AGgAbwByAHMAIABAACAAZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AZgBvAG4AdABlAGwAbABvAFIAZQBnAHUAbABhAHIAZgBvAG4AdABlAGwAbABvAGYAbwBuAHQAZQBsAGwAbwBWAGUAcgBzAGkAbwBuACAAMQAuADAAZgBvAG4AdABlAGwAbABvAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBAgEDAQQAC3RyYXNoLWVtcHR5DHBsdXMtY2lyY2xlZAAAAAEAAf//AA8AAAAAAAAAAAAAAAAAAAAAABgAGAAYABgDUv9qA1L/arAALCCwAFVYRVkgIEu4AA5RS7AGU1pYsDQbsChZYGYgilVYsAIlYbkIAAgAY2MjYhshIbAAWbAAQyNEsgABAENgQi2wASywIGBmLbACLCBkILDAULAEJlqyKAEKQ0VjRVJbWCEjIRuKWCCwUFBYIbBAWRsgsDhQWCGwOFlZILEBCkNFY0VhZLAoUFghsQEKQ0VjRSCwMFBYIbAwWRsgsMBQWCBmIIqKYSCwClBYYBsgsCBQWCGwCmAbILA2UFghsDZgG2BZWVkbsAErWVkjsABQWGVZWS2wAywgRSCwBCVhZCCwBUNQWLAFI0KwBiNCGyEhWbABYC2wBCwjISMhIGSxBWJCILAGI0KxAQpDRWOxAQpDsAFgRWOwAyohILAGQyCKIIqwASuxMAUlsAQmUVhgUBthUllYI1khILBAU1iwASsbIbBAWSOwAFBYZVktsAUssAdDK7IAAgBDYEItsAYssAcjQiMgsAAjQmGwAmJmsAFjsAFgsAUqLbAHLCAgRSCwC0NjuAQAYiCwAFBYsEBgWWawAWNgRLABYC2wCCyyBwsAQ0VCKiGyAAEAQ2BCLbAJLLAAQyNEsgABAENgQi2wCiwgIEUgsAErI7AAQ7AEJWAgRYojYSBkILAgUFghsAAbsDBQWLAgG7BAWVkjsABQWGVZsAMlI2FERLABYC2wCywgIEUgsAErI7AAQ7AEJWAgRYojYSBksCRQWLAAG7BAWSOwAFBYZVmwAyUjYUREsAFgLbAMLCCwACNCsgsKA0VYIRsjIVkqIS2wDSyxAgJFsGRhRC2wDiywAWAgILAMQ0qwAFBYILAMI0JZsA1DSrAAUlggsA0jQlktsA8sILAQYmawAWMguAQAY4ojYbAOQ2AgimAgsA4jQiMtsBAsS1RYsQRkRFkksA1lI3gtsBEsS1FYS1NYsQRkRFkbIVkksBNlI3gtsBIssQAPQ1VYsQ8PQ7ABYUKwDytZsABDsAIlQrEMAiVCsQ0CJUKwARYjILADJVBYsQEAQ2CwBCVCioogiiNhsA4qISOwAWEgiiNhsA4qIRuxAQBDYLACJUKwAiVhsA4qIVmwDENHsA1DR2CwAmIgsABQWLBAYFlmsAFjILALQ2O4BABiILAAUFiwQGBZZrABY2CxAAATI0SwAUOwAD6yAQEBQ2BCLbATLACxAAJFVFiwDyNCIEWwCyNCsAojsAFgQiBgsAFhtRAQAQAOAEJCimCxEgYrsHIrGyJZLbAULLEAEystsBUssQETKy2wFiyxAhMrLbAXLLEDEystsBgssQQTKy2wGSyxBRMrLbAaLLEGEystsBsssQcTKy2wHCyxCBMrLbAdLLEJEystsB4sALANK7EAAkVUWLAPI0IgRbALI0KwCiOwAWBCIGCwAWG1EBABAA4AQkKKYLESBiuwcisbIlktsB8ssQAeKy2wICyxAR4rLbAhLLECHistsCIssQMeKy2wIyyxBB4rLbAkLLEFHistsCUssQYeKy2wJiyxBx4rLbAnLLEIHistsCgssQkeKy2wKSwgPLABYC2wKiwgYLAQYCBDI7ABYEOwAiVhsAFgsCkqIS2wKyywKiuwKiotsCwsICBHICCwC0NjuAQAYiCwAFBYsEBgWWawAWNgI2E4IyCKVVggRyAgsAtDY7gEAGIgsABQWLBAYFlmsAFjYCNhOBshWS2wLSwAsQACRVRYsAEWsCwqsAEVMBsiWS2wLiwAsA0rsQACRVRYsAEWsCwqsAEVMBsiWS2wLywgNbABYC2wMCwAsAFFY7gEAGIgsABQWLBAYFlmsAFjsAErsAtDY7gEAGIgsABQWLBAYFlmsAFjsAErsAAWtAAAAAAARD4jOLEvARUqLbAxLCA8IEcgsAtDY7gEAGIgsABQWLBAYFlmsAFjYLAAQ2E4LbAyLC4XPC2wMywgPCBHILALQ2O4BABiILAAUFiwQGBZZrABY2CwAENhsAFDYzgtsDQssQIAFiUgLiBHsAAjQrACJUmKikcjRyNhIFhiGyFZsAEjQrIzAQEVFCotsDUssAAWsAQlsAQlRyNHI2GwCUMrZYouIyAgPIo4LbA2LLAAFrAEJbAEJSAuRyNHI2EgsAQjQrAJQysgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjILAIQyCKI0cjRyNhI0ZgsARDsAJiILAAUFiwQGBZZrABY2AgsAErIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbACYiCwAFBYsEBgWWawAWNhIyAgsAQmI0ZhOBsjsAhDRrACJbAIQ0cjRyNhYCCwBEOwAmIgsABQWLBAYFlmsAFjYCMgsAErI7AEQ2CwASuwBSVhsAUlsAJiILAAUFiwQGBZZrABY7AEJmEgsAQlYGQjsAMlYGRQWCEbIyFZIyAgsAQmI0ZhOFktsDcssAAWICAgsAUmIC5HI0cjYSM8OC2wOCywABYgsAgjQiAgIEYjR7ABKyNhOC2wOSywABawAyWwAiVHI0cjYbAAVFguIDwjIRuwAiWwAiVHI0cjYSCwBSWwBCVHI0cjYbAGJbAFJUmwAiVhuQgACABjYyMgWGIbIVljuAQAYiCwAFBYsEBgWWawAWNgIy4jICA8ijgjIVktsDossAAWILAIQyAuRyNHI2EgYLAgYGawAmIgsABQWLBAYFlmsAFjIyAgPIo4LbA7LCMgLkawAiVGUlggPFkusSsBFCstsDwsIyAuRrACJUZQWCA8WS6xKwEUKy2wPSwjIC5GsAIlRlJYIDxZIyAuRrACJUZQWCA8WS6xKwEUKy2wPiywNSsjIC5GsAIlRlJYIDxZLrErARQrLbA/LLA2K4ogIDywBCNCijgjIC5GsAIlRlJYIDxZLrErARQrsARDLrArKy2wQCywABawBCWwBCYgLkcjRyNhsAlDKyMgPCAuIzixKwEUKy2wQSyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAJQysgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsAJiILAAUFiwQGBZZrABY2GwAiVGYTgjIDwjOBshICBGI0ewASsjYTghWbErARQrLbBCLLA1Ky6xKwEUKy2wQyywNishIyAgPLAEI0IjOLErARQrsARDLrArKy2wRCywABUgR7AAI0KyAAEBFRQTLrAxKi2wRSywABUgR7AAI0KyAAEBFRQTLrAxKi2wRiyxAAEUE7AyKi2wRyywNCotsEgssAAWRSMgLiBGiiNhOLErARQrLbBJLLAII0KwSCstsEossgAAQSstsEsssgABQSstsEwssgEAQSstsE0ssgEBQSstsE4ssgAAQistsE8ssgABQistsFAssgEAQistsFEssgEBQistsFIssgAAPistsFMssgABPistsFQssgEAPistsFUssgEBPistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKyAAEAKrEABUKzCgIBCCqxAAVCsw4AAQgqsQAGQroCwAABAAkqsQAHQroAQAABAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbMMAgEMKrgB/4WwBI2xAgBEAAA=) format('truetype')}#quads-add-new-ad:before{content:'\e801';text-decoration:none;color:#383838}#quads-add-new-ad{margin-left:3px;margin-top:5px;margin-bottom:20px}#quads-submit-button{z-index:999999}p.submit{float:left;padding-top:0;padding-bottom:0}.quads-delete-ad{clear:both;//background:url(../images/remove-icon.png);//background-size:20px 20px;//background-repeat:no-repeat;//height:20px;//padding-left:30px;margin-right:5px}.quads-delete-ad:before{content:'\e800';color:#383838}#backup-settings-textarea{width:580px;height:400px;font-family:Menlo,Monaco,monospace;background:0 0;white-space:normal;overflow:auto;display:block}@media (max-width:506px){.quads-banner-columns{display:block!important}.quads-banner-sidebar-second{width:100%!important}}@media (max-width:780px){.quads-banner-wrapper{margin-right:12px!important}}.quads-banner-wrapper{display:flex;flex-direction:column;clear:both;background:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 20px 2px 5px;padding:1px 12px}.quads-banner-content{display:flex;flex:1;color:#000}.quads-banner-columns{display:flex;flex:1;-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;align-items:center}.quads-banner-main{flex:1;order:2}.quads-banner-sidebar-first{min-width:160px;width:13%;order:1}.quads-banner-sidebar-second{width:19%;order:3}.quads-button-primary{display:inline-block;font-size:16px;line-height:32px;height:36px;margin:0;padding:0 13px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-weight:700;background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.quads-notice-dismiss{display:inline-block;position:relative;top:0;right:1px;border:none;margin:0;padding:0;background:0 0;color:#72777c;cursor:pointer}.quads-notice-dismiss:before{display:inline-block;background:0 0;color:#72777c;content:"\f153";font:400 16px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased}.quads-widget-buttons{float:right}.quads-widget-buttons a{min-width:80px;text-align:center;font-weight:600}#quads-vi-widget ul{margin:0 0 0 25px;padding:0;background:#fff;float:none;list-style-type:square}#quads-vi-signup-fullscreen{display:none;z-index:999999;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;height:100%;width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f0f0f0}#quads-vi-signup-container{width:99%;height:99%;max-width:868px;max-height:552px}#quads-vi-close{cursor:pointer;position:relative;display:inline-block;width:20px;height:20px;overflow:hidden;float:right;margin-right:20px;margin-top:20px}#quads-vi-close::after,#quads-vi-close::before{content:'';position:absolute;height:2px;width:100%;top:50%;left:0;margin-top:-1px;background:#7d7d7d}#quads-vi-close::before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}#quads-vi-close::after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}#quads-vi-signup-fullscreen iframe{width:100%;height:100%;z-index:999999;display:block;background:#FFF;border:none}.quads-spinner{background:url(/wp-admin/images/spinner.gif) no-repeat;background-size:16px 16px;display:none;float:left;opacity:.7;filter:alpha(opacity=70);width:160px;height:16px;margin:5px 5px 0;clear:both}#quads-vi-customize-player label,#quads-vi-shortcodes label{width:170px;display:inline-block}#quads-vi-revenue-wrapper{margin-top:10px;min-width:565px;min-height:350px}#quads-vi-revenue-sum{font-weight:700;font-size:36px}#quads-vi-revenue-sum-wrapper{margin-top:20px;line-height:26px}#quads-vi-customize-player label{color:#000;font-weight:500}#quads-vi-save-settings{margin-top:20px}#quads-vi-welcome ul{float:none;list-style:square;margin-left:25px}.quads-tooltip{border-radius:50%;border:2px solid #fff;background-color:#e7db00;width:15px;height:15px;display:inline-block;position:relative;top:4px;margin-top:-4px;cursor:pointer;margin-left:2px}.quads-tooltip:after{height:20px;font-family:sans-serif;content:"?";color:#fff;font-size:11px;font-weight:700;left:4px;top:-2px;position:absolute}.quads-tooltip-message{padding:10px;border:1px solid #FBFBFB;border-radius:2px;background-color:#F8F8F8;position:absolute;max-width:500px;z-index:9999;display:none;box-shadow:0 0 5px rgba(0,0,0,.2);font-weight:400}#quads-vi-layout label{width:100px}#quads_vi_ads-ads-1-align-left-label{content:url(../images/align_left.png)}#quads_vi_ads-ads-1-align-right-label{content:url(../images/align_right.png)}#quads_vi_ads-ads-1-align-middle-label{content:url(../images/align_middle.png)}
1
+ .quads-share-button-container{margin:5px 0}.quads-share-button-container p{margin:0 0 10px}.quads-share-button{display:inline-block}.quads-share-button a{text-decoration:none}.quads-share-button .quads-share{font-family:sans-serif;font-weight:700;text-decoration:none;text-align:center;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;color:#FFF;display:inline;font-size:16px;width:40px;padding:4px 8px}.quads-share-button-twitter .quads-share{background-color:#00ABF0}.quads-share-button-facebook .quads-share{background-color:#3b5998}.quads-share-button-googleplus .quads-share{background-color:#F53424}.quads-share-button-facebook .share:active,.quads-share-button-googleplus .share:active,.quads-share-button-twitter .share:active{background-color:#353535}@media (max-width:925px){.quads-share-button .quads-share{font-size:15px;padding:8px 16px}}.quads-richeditor{font-size:11px}#quads-add-ons h2{margin:0 0 15px}#quads-add-ons .quadsshare-addons{float:left;margin:0 15px 15px 0;background:#f0f0f0;border:1px solid #ccc;width:320px;padding:8px;height:315px;position:relative}#quads-add-ons .quadsshare-addons h3{margin:0 0 8px;font-size:13px}#quads-add-ons .quadsshare-addons .button-secondary{position:absolute;bottom:8px;left:8px}#quads-add-ons .quadsshare-addons .third-party{display:none}#system-info-textarea{width:580px;height:400px;font-family:Menlo,Monaco,monospace;background:0 0;white-space:pre;overflow:auto;display:block}.quads-select-chosen{width:300px}input.large-text,textarea.large-text{max-width:600px}input.medium-text,textarea.medium-text{min-width:190px}#quads_tab_container ul{list-style:none;margin:0;padding:0;background:#fff;float:left}#quads_tab_container ul li:first-child.selected-tab{border-top:none}#quads_tab_container ul li a.selected-tab{font-weight:700;text-decoration:none}#quads_tab_container .quads-row{padding-top:12px;padding-bottom:12px}#quads_tab_container .quads-row label strong,#tab_container .quads-row strong{font-weight:700}.quads-tabs a{padding:5px;color:#a1a1a1;text-transform:uppercase}.quads-tabs a strong{font-weight:700}li.quads-tabs{float:left;margin-left:0;background-color:#e5e5e5}#quads_tab_container>ul>li.quads-tabs.active{background-color:#fff}#quads_tab_container>ul>li.quads-tabs.active a{color:#83c11f}#quads_tab_container .quads-panel-container{background:#FFF;padding:20px;overflow:auto;text-align:left;margin-bottom:10px;max-width:640px;float:left;clear:both}.form-table{margin-top:-20px}#quads_tab_container .form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;line-height:1.3;font-weight:700;font-size:14px;color:#484848;width:30%}#quads_tab_container .form-table tr{border-bottom:1px solid #E7E7E7}#quads_tab_container span.description{display:block;font-weight:400;font-style:normal;font-size:13px;margin-top:7px;color:#484848}#quads_tab_container .col-title{font-size:18px;color:#484848}@media only screen and (max-width:680px){#quads_tab_container ul{float:none;background:#fff}#quads_tab_container .form-table tr>th{width:100%}#quads_tab_container span.description{font-size:14px}#quads_tab_container .form-table tr>th,#tab_container .form-table tr>td{padding:10px}#quads_tab_container .quads-tabs a{text-align:left}#quads_tab_container li.quads-tabs{float:none;margin-left:0}}#quads_tab_container ul li.quads-tabs{margin-bottom:0}#quads_tab_container ul li.quads-tabs a{display:block;padding:10px;text-decoration:none;font-weight:700}#quads_tab_container ul li.quads-tabs a:hover{color:#383838}#quads_tab_container ul li.quads-tabs a.active{text-decoration:underline}#quads_tab_container table tbody tr:nth-child(1)>th>div{font-size:20px}#quadstabcontainer>.quadstabs{background-color:#fff}#quadstabcontainer ul .active{background-color:#00adef;color:#fff;border-bottom-color:#0098D2}#quadstabcontainer ul .active:hover{background-color:#00A4E2;color:#fff;border-bottom-color:#0098D2}#quadstabcontainer ul li a{padding:10px 14px;background-color:#f3f3f3}#quadstabcontainer .quadstab-container{border:0 solid #ececec}.quads-quote-docs{font-family:Courier New,Courier,Fixed;color:#050}.quads-desc{display:block;font-style:italic;padding-top:10px}.quads-postbox{padding:10px;position:relative;min-width:255px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;margin-bottom:20px}.nav-tab-active{background-color:#fff;border-bottom:0}#quads-add-ons{padding:20px}.quads-toggle{position:absolute;right:0;top:0}.quads-box-close .quads-close-open-icon{background-position:0 -38px}.quads-close-open-icon{width:38px;height:38px;background:url(../images/arrow-close.png) repeat-y #f4f4f4}.quads-ad-toggle-header{position:relative;background-color:#f4f4f4;margin-bottom:2px;padding:10px 10px 10px 15px;-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none;cursor:pointer!important;min-height:20px}.quads-ad-toggle-container{padding:20px;background-color:#f4f4f4}.quads-toogle-title{font-size:16px;font-weight:700}.adsense-size-title,.quads-advanced-description label{font-weight:600;font-size:12px;text-transform:uppercase;float:left}.quads-advanced-description label{width:215px}.quads-advanced-ad-box{clear:both;margin-top:20px;margin-bottom:20px}.adsense-size-title{margin-right:0;line-height:32px;margin-left:14px;min-width:100px}.quads-select-style-overwrite{border:1px solid #e6e6e6;width:150px;overflow:hidden;background:url(../images/box_arrow.png) 120px 0 repeat-y #fff;margin:0 0 5px}.quads-select-style-overwrite select{width:150px}.quads-size-input{position:relative;top:-1px;width:110%;border:none;box-shadow:none;background:0 0;-webkit-appearance:none;font-family:'Open Sans',arial,sans-serif;color:#555;font-size:12px}.quads-pro-overlay{height:200px}.quads-license-error-notice,.quads-license-expires-soon-notice{background-color:#fff;padding:10px;overflow:auto;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);border:1px solid #ECECEC;border-radius:3px}.quads-license-error-notice a{color:#0097df;text-decoration:underline}.quads-license-error-notice{border-left:4px solid #dd3d36}.quads-license-expiration-date-notice,.quads-license-lifetime-notice,.quads-license-null{padding:0}.quads-license-expiration-date-notice .quads-license-data p,.quads-license-lifetime-notice .quads-license-data p{color:#666;font-size:14px;font-style:italic;margin:4px 0 0}#quads_settingslicenses_header-nav{display:none}#quads_settingslicenses_header{max-width:640px}#quads_settingslicenses_header .quads-row.th{min-width:250px}.quads-notice{background:#fff;border-left:4px solid #46b450;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 15px 2px;padding:1px 12px}.quads_admin h2.nav-tab-wrapper{border:0}.quads_admin .nav-tab{border:0;text-transform:uppercase;color:#a1a1a1;font-weight:700}.quads-h1{margin-bottom:1.35rem;font-size:2.5em;line-height:3.68rem;letter-spacing:normal}.quads-h2{margin-top:0;margin-bottom:1.2rem;font-size:30px;line-height:2.5rem}.quads-heading-pro{color:#83c11f;font-weight:700}.quads-button.green{display:inline-block;background-color:#83c11f;padding:10px;min-width:170px;color:#fff;font-size:16px;text-decoration:none;text-align:center;margin-top:20px}#quads-add-ons .quads-footer{clear:both;margin-top:20px;font-style:italic}#quads-add-ons li{font-size:18px;line-height:29px;position:relative;padding-left:23px;list-style:none!important}#quads-add-ons li:before{width:1em;height:100%;background:url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;background-size:contain;content:"";position:absolute;top:0;left:0;color:#77b227}.adsense_admin_header{font-size:14px;font-weight:500}#quads-adsense-bg-div{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.65);z-index:250000}#quads-adsense-container{text-align:center;width:480px;margin:85px auto 0;background-color:#fff;padding:2%;border-radius:2px}#quads-adsense-container h3{margin-top:0}#quads-adsense-container textarea,.quads-ad-toggle-container textarea{width:100%}.quads-ad-toggle-container input{margin-top:7px;margin-bottom:10px}.quads-adsense-code label,input{margin-right:2px}#quads_settings\5b ad2\5d \5b g_data_ad_client\5d{width:200px}.quads-ad-toggle-container label{display:inline-block;margin-right:2px;margin-top:-3px}.quads_adsense_code .quads-add-adsense{margin:20px 5px 20px 0}.quads-label-left{min-width:71px}#quads-label-Type{min-width:67px}.quads-medium-size{width:110px}#quads-msg{display:none;margin:5px;background-color:#c55c5c;color:#fff}.quads-loader,.quads-success-modal{display:block;position:fixed;top:45%;left:25%;width:200px;height:auto;padding:5px 20px;z-index:1002;overflow:auto}.quads-general-helper,.quads-helper{background-color:#83c11f;display:inline-block}.quads-form-table{width:100%}.quads-left-box{width:45%;min-height:100px;float:left;line-height:35px;min-width:300px}@media screen and (max-width:700px){.adsense-size-title{margin-left:0}.quads-left-box{width:45%;min-height:100px;float:none;line-height:35px;min-width:300px}.quads-style img{max-width:50px}}.adsense_admin_header ul li{margin-top:2px;margin-left:20px;list-style-type:square}.quads-helper{border-radius:50%;border:2px solid #fff;width:15px;height:15px;position:relative;top:4px;margin-top:-4px;cursor:pointer;margin-left:2px}.quads-general-helper:after,.quads-helper:after{height:20px;font-family:sans-serif;content:"?";font-size:11px;font-weight:700;left:4px;position:absolute;color:#fff}.quads-helper:after{margin-top:-10px}.quads-general-helper:after{margin-top:-2px}#quads-add-new-ad:before,.quads-delete-ad:before{font-family:quads;margin-right:5px}.quads-general-helper{border-radius:50%;border:2px solid #fff;width:15px;height:15px;position:relative;top:4px;margin-top:-4px;cursor:pointer;margin-left:2px}.quads-message{padding:10px;border:1px solid #FBFBFB;border-radius:2px;background-color:#F8F8F8;position:absolute;max-width:500px;z-index:9999;display:none;box-shadow:0 0 5px rgba(0,0,0,.2);font-weight:400;line-height:20px;text-transform:none;font-size:14px}#quads-pro-hover{background-color:#83c11f;padding:20px;min-width:150px;color:#fff;display:block;position:relative;margin-top:-100px;margin-left:50%}#quads-pro-hover-background{width:100%;height:100%;background:rgba(0,0,0,.6)}#quads-open-toggle{clear:both;float:left;margin-top:10px}#quads_settingsadsense_header input[type=number].small-text{width:55px}.quads_adsense_code input.quads-bggrey{background-color:#f5f5f5;color:#939393}.quads-amp-code{color:#939393;height:130px}.quads-chosen-select .chosen-choices li.search-field input{min-height:25px}#quads-validate{display:block;margin-left:2px;margin-bottom:20px;font-weight:700;clear:both}#quads-add-new-ad,.quads-delete-ad{font-size:14px;font-weight:600;color:#383838;display:block;text-decoration:none}@font-face{font-family:quads;src:url(data:application/octet-stream;base64,d09GRgABAAAAAAxYAA8AAAAAFUQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADsAAABUIIslek9TLzIAAAGUAAAAQwAAAFY+IEkBY21hcAAAAdgAAABQAAABfohD7KljdnQgAAACKAAAABMAAAAgBtX/BGZwZ20AAAI8AAAFkAAAC3CKkZBZZ2FzcAAAB8wAAAAIAAAACAAAABBnbHlmAAAH1AAAAdIAAAJWlz85pGhlYWQAAAmoAAAAMwAAADYNxZM1aGhlYQAACdwAAAAfAAAAJAc6A1BobXR4AAAJ/AAAAAwAAAAMClL//WxvY2EAAAoIAAAACAAAAAgAxAErbWF4cAAAChAAAAAgAAAAIAESDApuYW1lAAAKMAAAAXcAAALNzJ0dH3Bvc3QAAAuoAAAAMwAAAESFVFBUcHJlcAAAC9wAAAB6AAAAhuVBK7x4nGNgZGBg4GIwYLBjYHJx8wlh4MtJLMljkGJgYYAAkDwymzEnMz2RgQPGA8qxgGkOIGaDiAIAJjsFSAB4nGNgZC5knMDAysDAVMW0h4GBoQdCMz5gMGRkAooysDIzYAUBaa4pDA4vGF4wMgf9z2KIYg5imAYUZgTJAQDj3AufAHic7ZCxDYAwDATPiaFAjEFBwTBU7F+yRfK2GYOX7qR/uTKwAF1cwsEejMit1XLvbLk7R9547K+NIRNW93STVv7s6fNrLf5U1OcK2gTMuAtdeJxjYEADEhDIHPQ/C4QBEmwD3QB4nK1WaXfTRhQdeUmchCwlCy1qYcTEabBGJmzBgAlBsmMgXZytlaCLFDvpvvGJ3+Bf82Tac+g3flrvGy8kkLTncJqTo3fnzdXM22USWpLYC+uRlJsvxdTWJo3sPAnphk3LUXwoO3shZYrJ3wVREK2W2rcdh0REIlC1rrBEEPseWZpkfOhRRsu2pFdNyi096S5b40G9Vd9+GjrKsTuhpGYzdGg9siVVGFWiSKY9UtKmZaj6K0krvL/CzFfNUMKITiJpvBnG0EjeG2e0ymg1tuMoimyy3ChSJJrhQRR5lNUS5+SKCQzKB82Q8sqnEeXD/Iis2KOcVrBLttP8vi95p3c5P7Ffb1G25EAfyI7s4Ox0JV+EW1th3LST7ShUEXbXd0Js2exU/2aP8ppGA7crMr3QjGCpfIUQKz+hzP4hWS2cT/mSR6NaspETQetlTuxLPoHW44gpcc0YWdDd0QkR1P2SMwz2mD4e/PHeKZYLEwJ4HMt6RyWcCBMpYXM0SdowcmAlZYsqqfWumDjldVrEW8J+7drRl85o41B3YjxbDx1bOVHJ8WhSp5lMndpJzaMpDaKUdCZ4zK8DKD+iSV5tYzWJlUfTOGbGhEQiAi3cS1NBLDuxpCkEzaMZvbkbprl2LVqkyQP13KP39OZWuLnTU9oO9LNGf1anYjrYC9PpaeQv8Wna5SJF6frpGX5M4kHWAjKRLTbDlIMHb/0O0svXlhyF1wbY7u3zK6h91kTwpAH7G9AeT9UpCUyFmFWIVkBirWtZlsnVrBapyNR3Q5pWvqzTBIpyHBfHvoxx/V8zM5aYEr7fidOzIy49c+1LCNMcfJt1PZrXqcVyAXFmeU6nWZbv6zTH8gOd5lme1+kIS1unoyw/1GmB5Uc6HWN5QQuadN/BkIsw5AIOkDCEpQNDWF6CISwVDGG5CENYFmEIyyUYwvJjGMJyGYawvKxl1dRTSePamVgGbEJgYo4eucxF5WoquVRCu2hUakOeEm6VVBTPqn9loF488oY5sBZIl8iaXzHOlY9G5fjWFS1vGjtXwLHqbx+O9jnxUtaLhT8F/9XWVCW9Ys3Dk6vwG4aebCeqNql4dE2Xz1U9uv5fVFRYC/QbSIVYKMqybHBnIoSPOp2GaqCVQ8xszDy063XLmp/D/TcxQhZQ/fg3FBoL3INOWUlZ7eCs1dfbstw7g3I4EyxJMTfz+lb4IiOz0n6RWcqej3wecAWMSmXYagOtFbzZJzEPmd4kzwRxW1E2SNrYzgSJDRzzgHnznQQmYeqqDeRO4YYN+AVhbsF5J1yieqMsh+5F7PMopPxbp+JE9qhojMCz2Rthr+9Cym9xDCQ0+aV+DFQVoakYNRXQNFJuqAZfxtm6bULGDvQjKnbDsqziw8cW95WSbRmEfKSI1aOjn9Zeok6q3H5mFJfvnb4FwSA1MX9733RxkMq7WskyR20DU7calVPXmkPjVYfq5lH1vePsEzlrmm66Jx56X9Oq28HFXCyw9m0O0lImF9T1YYUNosvFpVDqZTRJ77gHGBYY0O9Qio3/q/rYfJ4rVYXRcSTfTtS30edgDPwP2H9H9QPQ92Pocg0uz/eaE59u9OFsma6iF+un6Dcwa625WboG3NB0A+IhR62OuMoNfKcGcXqkuRzpIeBj3RXiAcAmgMXgE921jOZTAKP5jDk+wOfMYdBkDoMt5jDYZs4awA5zGOwyh8Eecxh8wZx1gC+ZwyBkDoOIOQyeMCcAeMocBl8xh8HXzGHwDXPuA3zLHAYxcxgkzGGwr+nWMMwtXtBdoLZBVaADU09Y3MPiUFNlyP6OF4b9vUHM/sEgpv6o6faQ+hMvDPVng5j6i0FM/VXTnSH1N14Y6u8GMfUPg5j6TL8Yy2UGv4x8lwoHlF1sPufvifcP28VAuQABAAH//wAPeJyFkc9r1EAUx9+bTGYmk21i7CSLWHfZZDdBV9aS7A+wuHb9wbawINiCLaW1hS0eSj1IvXjw7sX9M7zoob0IIngp4tE/Q/TQiydhUyf1UC/iY/jw/b73hTfwgAGcHhoXDRtcqMINWIC78ATGizuP7hMmrtYueRYyQDI0DaIFQ9inhABnwPfAAUs41rY7Q0RJEoaCbQG3bb4KnNtrYHN7tDve2dpYX3n4YLQ8HNxWdRUXFV0wrzTRU6yJYdzx2t0FTIPyf/ysV/NUBbNa2kfMkjiJGDf9IqODUS2MEy8K41tYpHt97GVpUEUNrEhRF/IMk3P5WvI/ksulvCQEwa9EiPzVr8vUPGQUf0jRbTfy+UYbO0XubWJdD47K16zknZD4Pv9UNHFQ8B86HxNvelJSUiqyOzARzRW9cXrSunenRWbPPrHpz2FFbUogp1N9h8f6DhHMw2CxP4OAVaQGGRKtDARj30SD6rcHHBA4bgNljK4CpWwNGGUj34/qjaiuhDnXxE475pFGEoWM+xplXwW9TKOcpd1ep4ByMGyRPqYVJG8CZxI4Q1fhxAlQuefm6Nnnb1+eshcff354iTeX9HSiBzqu3L9N9vz44OD4e4HfFf9hawAAeJxjYGRgYADiN4uE5eP5bb4ycDO/AIowXE1YfgpG///7fyPzC2ZuIJeDgQkkCgB97A5TAHicY2BkYGAO+p8FJF/8//v/F/MLBqAICmAGALYGB48AA+gAAAMRAAADWf/9AAAAAADEASsAAQAAAAMAaAAGAAAAAAACACAAMABzAAAAdQtwAAAAAHicdZDdasIwGIbfzJ9tCtvYYKfL0VDG6g8MQRAEh55sJzI8HbXWtlIbSaPgbewedjG7iV3LXts4hrKWNM/35MuXrwFwjW8I5M8TR84CZ4xyPsEpepYL9M+Wi+QXyyVU8Wa5TP9uuYIHBJaruMEHK4jiOaMFPi0LXIlLyye4EHeWC/SPlovknuUSbsWr5TK9Z7mCiUgtV3EvvgZqtdVREBpZG9Rlu9nqyOlWKqoocWPprk2odCr7cq4S48excjy13PPYD9axq/fhfp74Oo1UIltOc69GfuJr1/izXfV0E7SNmcu5Vks5tBlypdXC94wTGrPqNhp/z8MACitsoRHxqkIYSNRo65zbaKKFDmnKDMnMPCtCAhcxjYs1d4TZSsq4zzFnlND6zIjJDjx+l0d+TAq4P2YVfbR6GE9IuzOizEv25bC7w6wRKcky3czOfntPseFpbVrDXbsuddaVxPCghuR97NYWNB69k92Koe2iwfef//sB5m6EUQB4nGNgYoAALgbsgJmRiZGZkYWBu6QosThDNzW3oKSSpyCntFg3ObMoOSc1hYEBAI3CCXgAeJxj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxlYnTYxMDJogRibuZgYOSAsPgYwi81pF9MBoDQnkM3utIvBAcJmZnDZqMLYERixwaEjYiNzistGNRBvF0cDAyOLQ0dySARISSQQbOZhYuTR2sH4v3UDS+9GJgYXAAx2I/QAAA==) format('woff'),url(data:application/octet-stream;base64,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LbA/LLA2K4ogIDywBCNCijgjIC5GsAIlRlJYIDxZLrErARQrsARDLrArKy2wQCywABawBCWwBCYgLkcjRyNhsAlDKyMgPCAuIzixKwEUKy2wQSyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAJQysgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsAJiILAAUFiwQGBZZrABY2GwAiVGYTgjIDwjOBshICBGI0ewASsjYTghWbErARQrLbBCLLA1Ky6xKwEUKy2wQyywNishIyAgPLAEI0IjOLErARQrsARDLrArKy2wRCywABUgR7AAI0KyAAEBFRQTLrAxKi2wRSywABUgR7AAI0KyAAEBFRQTLrAxKi2wRiyxAAEUE7AyKi2wRyywNCotsEgssAAWRSMgLiBGiiNhOLErARQrLbBJLLAII0KwSCstsEossgAAQSstsEsssgABQSstsEwssgEAQSstsE0ssgEBQSstsE4ssgAAQistsE8ssgABQistsFAssgEAQistsFEssgEBQistsFIssgAAPistsFMssgABPistsFQssgEAPistsFUssgEBPistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKyAAEAKrEABUKzCgIBCCqxAAVCsw4AAQgqsQAGQroCwAABAAkqsQAHQroAQAABAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbMMAgEMKrgB/4WwBI2xAgBEAAA=) format('truetype')}#quads-add-new-ad:before{content:'\e801';text-decoration:none;color:#383838}#quads-add-new-ad{margin-left:3px;margin-top:5px;margin-bottom:20px}#quads-submit-button{z-index:999999}p.submit{float:left;padding-top:0;padding-bottom:0}.quads-delete-ad{clear:both;//background:url(../images/remove-icon.png);//background-size:20px 20px;//background-repeat:no-repeat;//height:20px;//padding-left:30px;margin-right:5px}.quads-delete-ad:before{content:'\e800';color:#383838}#backup-settings-textarea{width:580px;height:400px;font-family:Menlo,Monaco,monospace;background:0 0;white-space:normal;overflow:auto;display:block}@media (max-width:506px){.quads-banner-columns{display:block!important}.quads-banner-sidebar-second{width:100%!important}}@media (max-width:780px){.quads-banner-wrapper{margin-right:12px!important}}.quads-banner-wrapper{display:flex;flex-direction:column;clear:both;background:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 20px 2px 5px;padding:1px 12px}.quads-banner-content{display:flex;flex:1;color:#000}.quads-banner-columns{display:flex;flex:1;-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;align-items:center}.quads-banner-main{flex:1;order:2}.quads-banner-sidebar-first{min-width:160px;width:13%;order:1}.quads-banner-sidebar-second{width:19%;order:3}.quads-button-primary{display:inline-block;font-size:16px;line-height:32px;height:36px;margin:0;padding:0 13px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-weight:700;background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.quads-notice-dismiss{display:inline-block;position:relative;top:0;right:1px;border:none;margin:0;padding:0;background:0 0;color:#72777c;cursor:pointer}.quads-notice-dismiss:before{display:inline-block;background:0 0;color:#72777c;content:"\f153";font:400 16px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased}.quads-widget-buttons{float:right}.quads-widget-buttons a{min-width:80px;text-align:center;font-weight:600}#quads-vi-widget ul{margin:0 0 0 25px;padding:0;background:#fff;float:none;list-style-type:square}#quads-vi-signup-fullscreen{display:none;z-index:999999;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;height:100%;width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f0f0f0}#quads-vi-signup-container{width:99%;height:99%;max-width:868px;max-height:552px}#quads-vi-close{cursor:pointer;position:relative;display:inline-block;width:20px;height:20px;overflow:hidden;float:right;margin-right:20px;margin-top:20px}#quads-vi-close::after,#quads-vi-close::before{content:'';position:absolute;height:2px;width:100%;top:50%;left:0;margin-top:-1px;background:#7d7d7d}#quads-vi-close::before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}#quads-vi-close::after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}#quads-vi-signup-fullscreen iframe{width:100%;height:100%;z-index:999999;display:block;background:#FFF;border:none}.quads-spinner{background:url(/wp-admin/images/spinner.gif) no-repeat;background-size:16px 16px;display:none;float:left;opacity:.7;filter:alpha(opacity=70);width:160px;height:16px;margin:5px 5px 0;clear:both}#quads-vi-customize-player label,#quads-vi-shortcodes label{width:170px;display:inline-block}#quads-vi-revenue-wrapper{margin-top:10px;min-width:565px;min-height:350px}#quads-vi-revenue-sum{font-weight:700;font-size:36px}#quads-vi-revenue-sum-wrapper{margin-top:20px;line-height:26px}#quads-vi-customize-player label{color:#000;font-weight:500}#quads-vi-save-settings{margin-top:20px}#quads-vi-welcome ul{float:none;list-style:square;margin-left:25px}.quads-tooltip{border-radius:50%;border:2px solid #fff;background-color:#e7db00;width:15px;height:15px;display:inline-block;position:relative;top:4px;margin-top:-4px;cursor:pointer;margin-left:2px}.quads-tooltip:after{height:20px;font-family:sans-serif;content:"?";color:#fff;font-size:11px;font-weight:700;left:4px;top:-2px;position:absolute}.quads-tooltip-message{padding:10px;border:1px solid #FBFBFB;border-radius:2px;background-color:#F8F8F8;position:absolute;max-width:500px;z-index:9999;display:none;box-shadow:0 0 5px rgba(0,0,0,.2);font-weight:400}#quads-vi-layout label{width:100px}#quads_vi_ads-ads-1-align-left-label{content:url(../images/align_left.png)}#quads_vi_ads-ads-1-align-right-label{content:url(../images/align_right.png)}#quads_vi_ads-ads-1-align-middle-label{content:url(../images/align_middle.png)}#quads_vi_automatic_integration select{min-width:180px}#quads_vi_ads\[ads\]\[1\]\[marginBottom\],#quads_vi_ads\[ads\]\[1\]\[marginLeft\],#quads_vi_ads\[ads\]\[1\]\[marginRight\],#quads_vi_ads\[ads\]\[1\]\[marginTop\]{width:60px}
assets/js/quads-admin.js CHANGED
@@ -118,34 +118,41 @@ e.preventDefault();
118
  $.ajax({
119
  type: "POST",
120
  url: ajaxurl,
 
121
  data: data,
122
- //contentType: 'application/json',
123
  success: function(response){
124
- console.log(response.error);
 
 
125
  $("#quads_add_err").css('display', 'none', 'important').css('visibility', 'hidden');
126
  $("#quads_add_err").hide();
127
- if (response.status == 'success') {
128
  console.log('Success, login succesfull, token stored' + response);
129
  window.location.href = quads.path + '/wp-admin/?page=quads-settings&tab=general#quads_settingsvi_header';
130
- } else {
 
 
131
  console.log("Can not store token");
132
  window.location.href = quads.path + '/wp-admin/?page=quads-settings&tab=general#quads_settingsvi_header';
133
- }
 
134
  },
135
  beforeSend:function()
136
  {
137
- $("#quads_add_err").css('display', 'inline', 'important').css('visibility', 'visible');
138
  $("#quads_add_err").show();
139
  },
140
  complete:function()
141
  {
142
- $("#quads_add_err").css('display', 'none', 'important').css('visibility', 'hidden');
143
  $("#quads_add_err").hide();
144
  }
145
 
146
  });
147
  }
148
-
 
149
 
150
 
151
  // Remove several unused elements from vi page
118
  $.ajax({
119
  type: "POST",
120
  url: ajaxurl,
121
+ dataType: "json",
122
  data: data,
123
+ //contentType: 'application/json;charset=utf-8',
124
  success: function(response){
125
+ //response = JSON.stringify(response);
126
+ console.log(response.status);
127
+
128
  $("#quads_add_err").css('display', 'none', 'important').css('visibility', 'hidden');
129
  $("#quads_add_err").hide();
130
+ if (typeof response.status != 'undefined' && response.status == 'success') {
131
  console.log('Success, login succesfull, token stored' + response);
132
  window.location.href = quads.path + '/wp-admin/?page=quads-settings&tab=general#quads_settingsvi_header';
133
+ return false;
134
+ }
135
+ else {
136
  console.log("Can not store token");
137
  window.location.href = quads.path + '/wp-admin/?page=quads-settings&tab=general#quads_settingsvi_header';
138
+ return false;
139
+ }
140
  },
141
  beforeSend:function()
142
  {
143
+ $("#quads_add_err").css('display', 'inline', 'important').css('visibility', 'visible');
144
  $("#quads_add_err").show();
145
  },
146
  complete:function()
147
  {
148
+ $("#quads_add_err").css('display', 'none', 'important').css('visibility', 'hidden');
149
  $("#quads_add_err").hide();
150
  }
151
 
152
  });
153
  }
154
+
155
+
156
 
157
 
158
  // Remove several unused elements from vi page
assets/js/quads-admin.min.js CHANGED
@@ -118,19 +118,24 @@ e.preventDefault();
118
  $.ajax({
119
  type: "POST",
120
  url: ajaxurl,
 
121
  data: data,
122
- //contentType: 'application/json',
123
  success: function(response){
 
124
  console.log(response.status);
 
125
  $("#quads_add_err").css('display', 'none', 'important').css('visibility', 'hidden');
126
  $("#quads_add_err").hide();
127
- if (response.status == 'success') {
128
  console.log('Success, login succesfull, token stored' + response);
129
  window.location.href = quads.path + '/wp-admin/?page=quads-settings&tab=general#quads_settingsvi_header';
 
130
  }
131
  else {
132
  console.log("Can not store token");
133
  window.location.href = quads.path + '/wp-admin/?page=quads-settings&tab=general#quads_settingsvi_header';
 
134
  }
135
  },
136
  beforeSend:function()
118
  $.ajax({
119
  type: "POST",
120
  url: ajaxurl,
121
+ dataType: "json",
122
  data: data,
123
+ //contentType: 'application/json;charset=utf-8',
124
  success: function(response){
125
+ //response = JSON.stringify(response);
126
  console.log(response.status);
127
+
128
  $("#quads_add_err").css('display', 'none', 'important').css('visibility', 'hidden');
129
  $("#quads_add_err").hide();
130
+ if (typeof response.status != 'undefined' && response.status == 'success') {
131
  console.log('Success, login succesfull, token stored' + response);
132
  window.location.href = quads.path + '/wp-admin/?page=quads-settings&tab=general#quads_settingsvi_header';
133
+ return false;
134
  }
135
  else {
136
  console.log("Can not store token");
137
  window.location.href = quads.path + '/wp-admin/?page=quads-settings&tab=general#quads_settingsvi_header';
138
+ return false;
139
  }
140
  },
141
  beforeSend:function()
includes/admin/admin-actions.php CHANGED
@@ -77,7 +77,7 @@ global $quads_options;
77
 
78
  if (empty($_POST['token'])){
79
  echo json_encode( array("status" => "failed") );
80
- exit;
81
  }
82
 
83
  // Save token before trying to create ads.txt
@@ -100,7 +100,7 @@ global $quads_options;
100
 
101
  //sleep(5);
102
  echo json_encode( array("status" => "success", "token" => $_POST['token']) );
103
- exit;
104
  }
105
  add_action( 'wp_ajax_quads_save_vi_token', 'quads_save_vi_token' );
106
 
77
 
78
  if (empty($_POST['token'])){
79
  echo json_encode( array("status" => "failed") );
80
+ wp_die();
81
  }
82
 
83
  // Save token before trying to create ads.txt
100
 
101
  //sleep(5);
102
  echo json_encode( array("status" => "success", "token" => $_POST['token']) );
103
+ wp_die();
104
  }
105
  add_action( 'wp_ajax_quads_save_vi_token', 'quads_save_vi_token' );
106
 
includes/admin/admin-notices.php CHANGED
@@ -44,13 +44,13 @@ function quads_admin_messages() {
44
  echo '<div class="notice notice-error" id="wpquads-adblock-notice" style="display:none;">' . sprintf( __( '<strong><p>You need to deactivate your ad blocker to use WP QUADS settings.</strong> Your ad blocker browser extension is removing WP QUADS css ressources and is breaking the settings screen! Deactivating the ad blocker will resolve it. WP QUADS is used on 60.000 websites and is into focus of the big adblocking companies. That\'s the downside of our success but nothing you need to worry about.</p>', 'quick-adsense-reloaded' ), admin_url() . 'admin.php?page=quads-settings#quads_settingsgeneral_header' ) . '</div>';
45
  }
46
 
47
- if( !quads_is_any_ad_activated() && quads_is_admin_page() ) {
48
- echo '<div class="notice notice-warning">' . sprintf( __( '<strong>No ads are activated!</strong> You need to assign at least 1 ad to an ad spot. Fix this in <a href="%s">General Settings</a>! Alternatively you need to use a shortcode in your posts or no ads are shown at all.', 'quick-adsense-reloaded' ), admin_url() . 'admin.php?page=quads-settings#quads_settingsgeneral_header' ) . '</div>';
49
- }
50
 
51
- if( quads_get_active_ads() === 0 && quads_is_admin_page() ) {
52
- echo '<div class="notice notice-warning">' . sprintf( __( '<strong>No ads defined!</strong> You need to create at least one ad code. Fix this in <a href="%s">ADSENSE CODE</a>.', 'quick-adsense-reloaded' ), admin_url() . 'admin.php?page=quads-settings#quads_settingsadsense_header' ) . '</div>';
53
- }
54
 
55
  if( !quads_is_post_type_activated() && quads_is_admin_page() ) {
56
  echo '<div class="notice notice-warning">' . sprintf( __( '<strong>No ads are shown - No post type chosen!</strong> You need to select at least 1 post type like <i>blog</i> or <i>page</i>. Fix this in <a href="%s">General Settings</a> or no ads are shown at all.', 'quick-adsense-reloaded' ), admin_url() . 'admin.php?page=quads-settings#quads_settingsgeneral_header' ) . '</div>';
44
  echo '<div class="notice notice-error" id="wpquads-adblock-notice" style="display:none;">' . sprintf( __( '<strong><p>You need to deactivate your ad blocker to use WP QUADS settings.</strong> Your ad blocker browser extension is removing WP QUADS css ressources and is breaking the settings screen! Deactivating the ad blocker will resolve it. WP QUADS is used on 60.000 websites and is into focus of the big adblocking companies. That\'s the downside of our success but nothing you need to worry about.</p>', 'quick-adsense-reloaded' ), admin_url() . 'admin.php?page=quads-settings#quads_settingsgeneral_header' ) . '</div>';
45
  }
46
 
47
+ // if( !quads_is_any_ad_activated() && quads_is_admin_page() ) {
48
+ // echo '<div class="notice notice-warning">' . sprintf( __( '<strong>No ads are activated!</strong> You need to assign at least 1 ad to an ad spot. Fix this in <a href="%s">General Settings</a>! Alternatively you need to use a shortcode in your posts or no ads are shown at all.', 'quick-adsense-reloaded' ), admin_url() . 'admin.php?page=quads-settings#quads_settingsgeneral_header' ) . '</div>';
49
+ // }
50
 
51
+ // if( quads_get_active_ads() === 0 && quads_is_admin_page() ) {
52
+ // echo '<div class="notice notice-warning">' . sprintf( __( '<strong>No ads defined!</strong> You need to create at least one ad code. Fix this in <a href="%s">ADSENSE CODE</a>.', 'quick-adsense-reloaded' ), admin_url() . 'admin.php?page=quads-settings#quads_settingsadsense_header' ) . '</div>';
53
+ // }
54
 
55
  if( !quads_is_post_type_activated() && quads_is_admin_page() ) {
56
  echo '<div class="notice notice-warning">' . sprintf( __( '<strong>No ads are shown - No post type chosen!</strong> You need to select at least 1 post type like <i>blog</i> or <i>page</i>. Fix this in <a href="%s">General Settings</a> or no ads are shown at all.', 'quick-adsense-reloaded' ), admin_url() . 'admin.php?page=quads-settings#quads_settingsgeneral_header' ) . '</div>';
includes/admin/settings/display-settings.php CHANGED
@@ -235,7 +235,7 @@ function quads_options_page() {
235
  submit_button(null, 'primary', 'quads-save-settings' , true, $other_attributes );
236
  if ($active_tab !== 'licenses'){
237
  ?>
238
- <a href="<?php echo admin_url() . '/admin.php?page=quads-settings&quads-action=validate'; ?> " id="quads-validate"><?php _e('Validate Ad Settings','quick-adsense-reloaded')?></a>
239
  <?php
240
  }
241
 
235
  submit_button(null, 'primary', 'quads-save-settings' , true, $other_attributes );
236
  if ($active_tab !== 'licenses'){
237
  ?>
238
+ <!--<a href="<?php //echo admin_url() . '/admin.php?page=quads-settings&quads-action=validate'; ?> " id="quads-validate"><?php //_e('Validate Ad Settings','quick-adsense-reloaded')?></a>//-->
239
  <?php
240
  }
241
 
includes/admin/settings/register-settings.php CHANGED
@@ -2198,8 +2198,6 @@ function quads_adsense_code_callback( $args ) {
2198
  }
2199
  }
2200
 
2201
- $ad = new wpquads\adsense($quads_options);
2202
- echo $ad->getPublisherID();
2203
 
2204
  $data = !empty($quads->vi->getSettings()->data) ? (array) $quads->vi->getSettings()->data : array();
2205
 
2198
  }
2199
  }
2200
 
 
 
2201
 
2202
  $data = !empty($quads->vi->getSettings()->data) ? (array) $quads->vi->getSettings()->data : array();
2203
 
includes/vendor/google/adsense.php CHANGED
@@ -86,7 +86,7 @@ class adsense {
86
  return false;
87
  }
88
 
89
- $content = 'google.com, ' . str_replace('ca-', '', $this->getPublisherID()) . ', DIRECT f08c47fec0942fa0';
90
  $adsTxt = new adsTxt($content, 'f08c47fec0942fa0');
91
  return $adsTxt->writeAdsTxt();
92
  }
86
  return false;
87
  }
88
 
89
+ $content = 'google.com, ' . str_replace('ca-', '', $this->getPublisherID()) . ', DIRECT, f08c47fec0942fa0';
90
  $adsTxt = new adsTxt($content, 'f08c47fec0942fa0');
91
  return $adsTxt->writeAdsTxt();
92
  }
includes/vendor/vi/conditions.php CHANGED
@@ -11,29 +11,28 @@ namespace wpquads\conditions;
11
 
12
  class conditions {
13
 
 
 
 
 
 
14
  protected function isExcluded() {
15
  global $quads_options;
16
 
17
- if (is_feed())
18
- return true;
19
-
20
- if (is_404())
21
- return true;
22
 
 
23
  if (is_user_logged_in() && ( isset($quads_options['visibility']['AppLogg'])))
24
  return true;
25
-
26
- if (is_front_page() && !isset( $quads_options['visibility']['AppHome'] ) )
27
- return true;
28
-
29
- if (is_category() && !(isset($quads_options['visibility']['AppCate']) ))
30
- return true;
31
 
32
- if (is_archive() && !( isset($quads_options['visibility']['AppArch']) ))
33
- return true;
34
-
35
- if (is_tag() && !( isset($quads_options['visibility']['AppTags']) ))
36
  return true;
 
37
 
38
  if (quads_is_amp_endpoint())
39
  return true;
@@ -50,6 +49,33 @@ class conditions {
50
  if ($this->isExcludedByMetaKey())
51
  return true;
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
  // Default
55
  return false;
11
 
12
  class conditions {
13
 
14
+ /**
15
+ * global options
16
+ * @global array $quads_options
17
+ * @return boolean
18
+ */
19
  protected function isExcluded() {
20
  global $quads_options;
21
 
22
+ /**
23
+ * Ad specific options
24
+ */
 
 
25
 
26
+ // User logged in
27
  if (is_user_logged_in() && ( isset($quads_options['visibility']['AppLogg'])))
28
  return true;
 
 
 
 
 
 
29
 
30
+ // Is frontpage
31
+ if (is_front_page() &&
32
+ isset($this->ads['ads'][$this->id]['excludedExtraPages']) &&
33
+ in_array('homePage', $this->ads['ads'][$this->id]['excludedExtraPages']))
34
  return true;
35
+
36
 
37
  if (quads_is_amp_endpoint())
38
  return true;
49
  if ($this->isExcludedByMetaKey())
50
  return true;
51
 
52
+ /**
53
+ * Global options
54
+ */
55
+
56
+ // Is feed
57
+ if (is_feed()) {
58
+ return true;
59
+ }
60
+
61
+ // Is search
62
+ if (is_search()) {
63
+ return true;
64
+ }
65
+
66
+ // Is 404
67
+ if (is_404()) {
68
+ return true;
69
+ }
70
+
71
+ // Is category
72
+ if (is_category()) {
73
+ return true;
74
+ }
75
+ // Is archive page
76
+ if (is_archive()) {
77
+ return true;
78
+ }
79
 
80
  // Default
81
  return false;
includes/vendor/vi/public/js/vi.js CHANGED
@@ -47,10 +47,11 @@ if (document.getElementById('quads_vi_ads[ads][1][iab1]')){
47
  var $this = $(this);
48
  replace_iab2_options($this.val());
49
  })
50
-
51
  function replace_iab2_options(element){
52
  jQuery('#quads_vi_ads\\[ads\\]\\[1\\]\\[iab2\\] option').each(function(i){
53
- var re = new RegExp("\\" + element, "ig");
 
54
  if ($(this).val().match(re) ){
55
  //console.log('match');
56
  $(this).prop('disabled', false).show();
@@ -129,14 +130,16 @@ var save_quads_vi_ad_settings = function (){
129
  jQuery.ajax({
130
  type: "POST",
131
  url: ajaxurl,
 
132
  data: data,
133
  //contentType: 'application/json',
134
  success: function(response){
135
  console.log(response);
136
- response = JSON.parse(response);
137
 
138
- if(response.status && response.status == 'error'){
139
- var resp = 'Error:' + response.error.message + ' ' + (response.error.description ? response.error.description : '');
 
140
  } else {
141
  var resp = 'Success: vi Ad Changes might take some time to take into effect.';
142
  }
@@ -185,7 +188,7 @@ var quads_verify_vi_signup = function (){
185
  },
186
  error: function(response){
187
  console.log(response);
188
- console.log('Error: Can not send sign up data to wp quads');
189
  },
190
  complete:function()
191
  {
47
  var $this = $(this);
48
  replace_iab2_options($this.val());
49
  })
50
+
51
  function replace_iab2_options(element){
52
  jQuery('#quads_vi_ads\\[ads\\]\\[1\\]\\[iab2\\] option').each(function(i){
53
+ var re = new RegExp("\\" + element + '-', "ig");
54
+ //console.log(re);
55
  if ($(this).val().match(re) ){
56
  //console.log('match');
57
  $(this).prop('disabled', false).show();
130
  jQuery.ajax({
131
  type: "POST",
132
  url: ajaxurl,
133
+ dataType: "json",
134
  data: data,
135
  //contentType: 'application/json',
136
  success: function(response){
137
  console.log(response);
138
+ //response = JSON.parse(response);
139
 
140
+ if(typeof response.status != 'undefined' && response.status == 'error'){
141
+
142
+ var resp = '<span style="color:red;">Error: </span>' + response.error.message + ' ' + (response.error.description ? response.error.description : '');
143
  } else {
144
  var resp = 'Success: vi Ad Changes might take some time to take into effect.';
145
  }
188
  },
189
  error: function(response){
190
  console.log(response);
191
+ console.log('<span style="color:red;">Error: Can not send sign up data to wp quads</span>');
192
  },
193
  complete:function()
194
  {
includes/vendor/vi/render.php CHANGED
@@ -3,7 +3,7 @@
3
  namespace wpquads;
4
 
5
  /*
6
- * vi ad render for WP QUADS used on front page
7
  *
8
  * @author René Hermenau
9
  * @email info@mashshare.net
@@ -17,6 +17,15 @@ class render extends conditions\conditions {
17
  * @var array
18
  */
19
  protected $ads;
 
 
 
 
 
 
 
 
 
20
 
21
  /**
22
  * Curent ad id
@@ -28,7 +37,7 @@ class render extends conditions\conditions {
28
  * Filtered Content
29
  * @var string
30
  */
31
- protected $content;
32
 
33
 
34
  public function __construct() {
@@ -36,34 +45,40 @@ class render extends conditions\conditions {
36
  if (is_admin()) {
37
  return false;
38
  }
 
 
 
 
39
 
40
  $this->ads = get_option('quads_vi_ads');
41
 
42
- add_filter('the_content', array($this, 'prepareOutput'));
43
  }
44
 
45
  /**
46
- * Loop through all ads
47
  * @param string $content
48
  * @return string
49
  */
50
  public function prepareOutput($content) {
51
-
52
  if (empty($this->ads['ads'])) {
53
  return $content;
54
  }
55
 
56
- If (empty($this->content)) {
57
- $this->content = $content;
58
- }
59
 
60
  // Loop through all available ads and use the return value as new $content
61
  foreach ($this->ads['ads'] as $key => $value) {
62
  $this->id = $key;
63
- $this->content = $this->filterContent();
 
 
 
 
 
64
  }
65
 
66
- return $this->content;
67
  }
68
 
69
  /**
@@ -72,69 +87,67 @@ class render extends conditions\conditions {
72
  * @param string $content
73
  * @param int $id
74
  */
75
- public function filterContent() {
76
 
77
  // Loop through all available filter methods and run them until one of the filters returns sucessfully
78
  $methods = get_class_methods(get_class());
79
- $loop = true;
80
  foreach ($methods as $method) {
81
 
82
- if ($loop == false) {
83
- break;
84
- }
85
  // Do not use method filterContent()
86
  if (strpos($method, 'filter') !== false && $method != 'filterContent') {
87
  // Set content to filtered content
88
- if (true == $this->$method()) {
89
- $loop = false;
 
 
90
  }
91
  }
92
  }
93
- return do_shortcode($this->content);
94
  }
95
 
96
- private function filterNoPost() {
97
  if (isset($this->ads['ads'][$this->id]['position']) &&
98
- $this->ads['ads'][$this->id]['position'] === 'notShown') {
99
- $this->content = $this->content;
100
- return true;
101
  }
102
  return false;
103
  }
104
 
105
- private function filterAbovePost() {
106
  if (isset($this->ads['ads'][$this->id]['position']) &&
107
  $this->ads['ads'][$this->id]['position'] === 'abovePost') {
108
- $this->content = $this->render($this->id) . $this->content;
109
- return true;
110
  }
111
  return false;
112
  }
113
 
114
- private function filterBelowPost() {
115
  if (isset($this->ads['ads'][$this->id]['position']) &&
116
  $this->ads['ads'][$this->id]['position'] === 'belowPost') {
117
 
118
- $this->content = $this->content . $this->render();
119
- return true;
120
  }
121
  return false;
122
  }
123
 
124
- private function filterMiddlePost() {
125
  if (isset($this->ads['ads'][$this->id]['position']) &&
126
  $this->ads['ads'][$this->id]['position'] === 'middlePost') {
127
 
128
- $paragraphCount = $this->get_paragraph_count();
129
  $middle = round($paragraphCount / 2);
130
  if ($paragraphCount > 1) {
131
- $content = explode("</p>", $this->content);
132
  array_splice($content, $middle, 0, $this->render()); // splice in at middle position
133
- $this->content = implode($content, "</p>");
134
  }
135
 
136
- $this->content = $this->content . $this->render();
137
- return true;
138
  }
139
  return false;
140
  }
@@ -143,8 +156,8 @@ class render extends conditions\conditions {
143
  * Count paragraphs
144
  * @return int
145
  */
146
- private function get_paragraph_count() {
147
- $paragraphs = explode('/p>', $this->content);
148
  $paragraphCount = 0;
149
  if (is_array($paragraphs)) {
150
  foreach ($paragraphs as $paragraph) {
@@ -156,7 +169,19 @@ class render extends conditions\conditions {
156
  return $paragraphCount;
157
  }
158
 
 
 
 
 
159
  private function getInlineStyle() {
 
 
 
 
 
 
 
 
160
  $style = '';
161
  // Layout Alignment
162
  if (isset($this->ads['ads'][$this->id]['align']) &&
@@ -174,7 +199,7 @@ class render extends conditions\conditions {
174
  break;
175
  }
176
  }
177
- return $style;
178
  }
179
 
180
 
@@ -189,6 +214,18 @@ class render extends conditions\conditions {
189
  }
190
  return true;
191
  }
 
 
 
 
 
 
 
 
 
 
 
 
192
 
193
  /**
194
  * Render ads
3
  namespace wpquads;
4
 
5
  /*
6
+ * vi ad render for WP QUADS used on frontend
7
  *
8
  * @author René Hermenau
9
  * @email info@mashshare.net
17
  * @var array
18
  */
19
  protected $ads;
20
+
21
+ /**
22
+ * Array of already populated ads
23
+ * This is to make sure that never
24
+ * one ad is injected multiple times into page
25
+ * @var array
26
+ */
27
+ protected $adsInjected = array();
28
+
29
 
30
  /**
31
  * Curent ad id
37
  * Filtered Content
38
  * @var string
39
  */
40
+ //protected $content;
41
 
42
 
43
  public function __construct() {
45
  if (is_admin()) {
46
  return false;
47
  }
48
+
49
+ if (!$this->getToken()) {
50
+ return false;
51
+ }
52
 
53
  $this->ads = get_option('quads_vi_ads');
54
 
55
+ add_filter('the_content', array($this, 'prepareOutput'), quads_get_load_priority());
56
  }
57
 
58
  /**
59
+ * Loop through all ads and determine the location of the outputed ads
60
  * @param string $content
61
  * @return string
62
  */
63
  public function prepareOutput($content) {
64
+ // vi ads are empty
65
  if (empty($this->ads['ads'])) {
66
  return $content;
67
  }
68
 
 
 
 
69
 
70
  // Loop through all available ads and use the return value as new $content
71
  foreach ($this->ads['ads'] as $key => $value) {
72
  $this->id = $key;
73
+ if(in_array($this->id, $this->adsInjected)){
74
+ //echo 'skip';
75
+ // skip. We already injected this ad into site
76
+ continue;
77
+ }
78
+ $content = $this->filterContent($content);
79
  }
80
 
81
+ return $content;
82
  }
83
 
84
  /**
87
  * @param string $content
88
  * @param int $id
89
  */
90
+ public function filterContent($content) {
91
 
92
  // Loop through all available filter methods and run them until one of the filters returns sucessfully
93
  $methods = get_class_methods(get_class());
94
+ //$loop = true;
95
  foreach ($methods as $method) {
96
 
97
+ // if ($loop == false) {
98
+ // break;
99
+ // }
100
  // Do not use method filterContent()
101
  if (strpos($method, 'filter') !== false && $method != 'filterContent') {
102
  // Set content to filtered content
103
+ if (true == ($newContent = $this->$method($content))) {
104
+ //$loop = false;
105
+ $this->adsInjected[] = $this->id;
106
+ return do_shortcode($newContent);
107
  }
108
  }
109
  }
110
+ return do_shortcode($content);
111
  }
112
 
113
+ private function filterNoPost($content) {
114
  if (isset($this->ads['ads'][$this->id]['position']) &&
115
+ $this->ads['ads'][$this->id]['position'] == 'notShown') {
116
+ return $content;
 
117
  }
118
  return false;
119
  }
120
 
121
+ private function filterAbovePost($content) {
122
  if (isset($this->ads['ads'][$this->id]['position']) &&
123
  $this->ads['ads'][$this->id]['position'] === 'abovePost') {
124
+ return $this->render($this->id) . $content;
 
125
  }
126
  return false;
127
  }
128
 
129
+ private function filterBelowPost($content) {
130
  if (isset($this->ads['ads'][$this->id]['position']) &&
131
  $this->ads['ads'][$this->id]['position'] === 'belowPost') {
132
 
133
+ return $content . $this->render();
 
134
  }
135
  return false;
136
  }
137
 
138
+ private function filterMiddlePost($content) {
139
  if (isset($this->ads['ads'][$this->id]['position']) &&
140
  $this->ads['ads'][$this->id]['position'] === 'middlePost') {
141
 
142
+ $paragraphCount = $this->get_paragraph_count($content);
143
  $middle = round($paragraphCount / 2);
144
  if ($paragraphCount > 1) {
145
+ $content = explode("</p>", $content);
146
  array_splice($content, $middle, 0, $this->render()); // splice in at middle position
147
+ $content = implode($content, "</p>");
148
  }
149
 
150
+ return $content . $this->render();
 
151
  }
152
  return false;
153
  }
156
  * Count paragraphs
157
  * @return int
158
  */
159
+ private function get_paragraph_count($content) {
160
+ $paragraphs = explode('/p>', $content);
161
  $paragraphCount = 0;
162
  if (is_array($paragraphs)) {
163
  foreach ($paragraphs as $paragraph) {
169
  return $paragraphCount;
170
  }
171
 
172
+ /**
173
+ * Get the inline style
174
+ * @return string
175
+ */
176
  private function getInlineStyle() {
177
+
178
+ // Create margin
179
+ $marginTop = !empty($this->ads['ads'][$this->id]['marginTop']) ? $this->ads['ads'][$this->id]['marginTop'] : '0';
180
+ $marginRight = !empty($this->ads['ads'][$this->id]['marginRight']) ? $this->ads['ads'][$this->id]['marginRight'] : '0';
181
+ $marginBottom = !empty($this->ads['ads'][$this->id]['marginBottom']) ? $this->ads['ads'][$this->id]['marginBottom'] : '0';
182
+ $marginLeft = !empty($this->ads['ads'][$this->id]['marginLeft']) ? $this->ads['ads'][$this->id]['marginLeft'] : '0';
183
+ $margin = 'margin-top:' . $marginTop .'px;margin-right:' . $marginRight .'px;margin-bottom:' . $marginBottom. 'px;margin-left:' . $marginLeft .'px;';
184
+
185
  $style = '';
186
  // Layout Alignment
187
  if (isset($this->ads['ads'][$this->id]['align']) &&
199
  break;
200
  }
201
  }
202
+ return $style . $margin;
203
  }
204
 
205
 
214
  }
215
  return true;
216
  }
217
+
218
+ private function getToken() {
219
+ $token = get_option('quads_vi_token', '');
220
+
221
+ if (empty($token)) {
222
+ return false;
223
+ }
224
+
225
+ preg_match("/(\w*).(\w*)/", $token, $output);
226
+
227
+ return json_decode(base64_decode($output[2]));
228
+ }
229
 
230
  /**
231
  * Render ads
includes/vendor/vi/vi.php CHANGED
@@ -27,6 +27,13 @@ class vi {
27
  * @var bool
28
  */
29
  private $debug = false;
 
 
 
 
 
 
 
30
 
31
  /**
32
  * Base64 decoded jwt token
@@ -55,6 +62,11 @@ class vi {
55
  // Production endpoints
56
  $this->urlSettings = 'https://dashboard-api.vidint.net/v1/api/widget/settings';
57
  }
 
 
 
 
 
58
 
59
  $this->getToken();
60
 
@@ -64,16 +76,16 @@ class vi {
64
 
65
  $this->ads = get_option('quads_vi_ads');
66
  }
67
-
68
-
69
 
70
  /**
71
  * Load hooks
72
  */
73
  public function hooks() {
74
- // Register the vi ad settings
75
- add_action('admin_init', array($this, 'registerSettings'));
76
-
 
 
77
 
78
  // Only run the following actions when vi is activated and user confirmed his registration
79
  // We need to ensure publishers privacy and do not want to send more personal information than absolutely necessary
@@ -88,6 +100,16 @@ class vi {
88
  // Shortcodes
89
  add_shortcode('quadsvi', array($this, 'getShortcode'));
90
  }
 
 
 
 
 
 
 
 
 
 
91
 
92
  /**
93
  * Register the vi ad settings
@@ -103,6 +125,10 @@ class vi {
103
  */
104
  public function getShortcode($atts) {
105
  global $quads_options;
 
 
 
 
106
 
107
  if (quads_check_meta_setting('NoAds') === '1') {
108
  return;
@@ -207,7 +233,9 @@ class vi {
207
  * @return array
208
  */
209
  public function getFontFamily() {
210
- return array('Arial' => 'Arial',
 
 
211
  'Times New Roman' => 'Times New Roman',
212
  'Georgia' => 'Georgia',
213
  'Palatino Linotype' => 'Palatino Linotype',
@@ -274,7 +302,7 @@ class vi {
274
  */
275
  public function createAdsTxt() {
276
 
277
- if (!isset($this->token->publisherId)){
278
  return false;
279
  }
280
 
@@ -299,9 +327,6 @@ class vi {
299
  $adsTxt = new \wpquads\adsTxt($vi, '41b5eef6');
300
  return $adsTxt->writeAdsTxt();
301
  }
302
-
303
-
304
-
305
 
306
  /**
307
  * Get ads.txt from vi api
@@ -347,7 +372,6 @@ class vi {
347
  if (empty($token)) {
348
  $this->token = '';
349
  return false;
350
- ;
351
  }
352
 
353
  preg_match("/(\w*).(\w*)/", $token, $output);
@@ -374,7 +398,7 @@ class vi {
374
 
375
  if (!isset($this->settings->data->revenueAPI))
376
  return false;
377
-
378
 
379
  $args = array(
380
  'headers' => array(
@@ -424,27 +448,29 @@ class vi {
424
  if (!$vi_token)
425
  return false;
426
 
427
- $viParam = array(
428
- 'domain' => $this->getDomain(),
429
- //'adUnitType' => 'FLOATING_OUTSTREAM',
430
- 'adUnitType' => 'NATIVE_VIDEO_UNIT',
431
- 'divId' => 'div_id',
432
- 'language' => isset($ads['ads'][1]['language']) ? $ads['ads'][1]['language'] : 'en-en',
433
- 'iabCategory' => isset($ads['ads'][1]['iab2']) && 'select' != $ads['ads'][1]['iab2'] ? $ads['ads'][1]['iab2'] : 'IAB2-16',
434
- 'font' => isset($ads['ads'][1]['txt_font_family']) ? $ads['ads'][1]['txt_font_family'] : 'Courier New',
435
- 'fontSize' => isset($ads['ads'][1]['font_size']) ? $ads['ads'][1]['font_size'] : 12,
436
- 'keywords' => isset($ads['ads'][1]['keywords']) ? $ads['ads'][1]['keywords'] : 'key,words',
437
- 'textColor' => isset($ads['ads'][1]['text_color']) ? '#'.$ads['ads'][1]['text_color'] : '#00ff00',
438
- 'backgroundColor' => isset($ads['ads'][1]['bg_color']) ? '#'.$ads['ads'][1]['bg_color'] : '#00ff00',
439
- 'vioptional1' => isset($ads['ads'][1]['optional1']) ? $ads['ads'][1]['optional1'] : 'optional1',
440
- 'vioptional2' => isset($ads['ads'][1]['optional2']) ? $ads['ads'][1]['optional2'] : 'optional2',
441
- 'vioptional3' => isset($ads['ads'][1]['optional3']) ? $ads['ads'][1]['optional3'] : 'optional3',
442
- 'float' => true,
443
- 'logoUrl' => 'http://url.com/logo.jpg',
444
- 'dfpSupport' => true,
445
- 'sponsoredText' => 'Sponsored text',
446
- 'poweredByText' => 'Powered by VI'
447
- );
 
 
448
 
449
  $args = array(
450
  'method' => 'POST',
@@ -485,6 +511,58 @@ class vi {
485
  return json_encode($response);
486
  }
487
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
488
  public function getAdCode() {
489
  return get_option('quads_vi_ads');
490
  }
@@ -543,19 +621,20 @@ class vi {
543
  delete_option('quads_vi_active');
544
  return true;
545
  }
546
-
547
  // vi is deactivated
548
  if ($response['body'] == 'false') {
549
  update_option('quads_vi_active', 'false');
550
  return false;
551
  }
552
  }
 
553
  /**
554
  * Weekly check to ensure vi ad code has not been changed unintentionally
555
  * @return bool
556
  */
557
  public function verifyViAdCode() {
558
-
559
  //$url = 'https://wpquads.com/wpquads-api/signup/create.php?domain='.$this->getDomain().'&hash=' . $this->getHash();
560
  $url = 'https://wpquads.com/wpquads-api/signup/create.php';
561
  $args = array(
@@ -565,9 +644,9 @@ class vi {
565
  'Content-Type' => 'application/json; charset=utf-8'
566
  ),
567
  'body' => json_encode(array(
568
- 'domain' => $this->getDomain(),
569
- 'hash' => $this->getHash(),
570
- ))
571
  );
572
 
573
  $response = wp_remote_post($url, $args);
@@ -582,37 +661,36 @@ class vi {
582
  if (empty($response)) {
583
  return true;
584
  }
585
-
586
  // vi is deactivated
587
  if ($response['body'] == 'false') {
588
  return false;
589
  }
590
  }
591
-
592
  /**
593
  * Create a hash to ensure that ad code has not been manippulated or changed unintentionally
594
  * Use hashing instead sending sensitive publisher data back and forth
595
  */
596
- private function getHash(){
597
  $string = get_option('quads_vi_ads');
598
-
599
- if (isset($string['ads'][1]['code'])){
600
- return md5($string['ads'][1]['code']);
601
  }
602
  return '';
603
  }
604
-
605
  /**
606
  * Get login URL
607
  * @return string
608
  */
609
- public function getLoginURL(){
610
  if (isset($this->settings->data->loginAPI) &&
611
- !empty($this->settings->data->loginAPI)){
612
  return $this->settings->data->loginAPI;
613
  }
614
  return '';
615
  }
616
 
617
-
618
  }
27
  * @var bool
28
  */
29
  private $debug = false;
30
+
31
+ /**
32
+ * Use this to force reload of the settings
33
+ * Used after switching to debug and vice versa
34
+ * @var type
35
+ */
36
+ private $forceReload = false;
37
 
38
  /**
39
  * Base64 decoded jwt token
62
  // Production endpoints
63
  $this->urlSettings = 'https://dashboard-api.vidint.net/v1/api/widget/settings';
64
  }
65
+
66
+
67
+ if ($this->forceReload){
68
+ $this->setSettings();
69
+ }
70
 
71
  $this->getToken();
72
 
76
 
77
  $this->ads = get_option('quads_vi_ads');
78
  }
 
 
79
 
80
  /**
81
  * Load hooks
82
  */
83
  public function hooks() {
84
+ if (is_admin()) {
85
+ // Register the vi ad settings
86
+ add_action('admin_init', array($this, 'registerSettings'));
87
+ add_action('admin_notices', array($this, 'getDebugNotice'));
88
+ }
89
 
90
  // Only run the following actions when vi is activated and user confirmed his registration
91
  // We need to ensure publishers privacy and do not want to send more personal information than absolutely necessary
100
  // Shortcodes
101
  add_shortcode('quadsvi', array($this, 'getShortcode'));
102
  }
103
+
104
+ /**
105
+ * Write a warning notice when debug mode is on
106
+ */
107
+ public function getDebugNotice(){
108
+ if ($this->debug){
109
+ echo '<div class="notice notice-error" id="wpquads-adblock-notice" style="">ATTENTION: WP QUADS vi debug mode is activated</div>';
110
+ }
111
+ return false;
112
+ }
113
 
114
  /**
115
  * Register the vi ad settings
125
  */
126
  public function getShortcode($atts) {
127
  global $quads_options;
128
+
129
+ if (!$this->token){
130
+ return;
131
+ }
132
 
133
  if (quads_check_meta_setting('NoAds') === '1') {
134
  return;
233
  * @return array
234
  */
235
  public function getFontFamily() {
236
+ return array(
237
+ 'select' => 'Select Font Family',
238
+ 'Arial' => 'Arial',
239
  'Times New Roman' => 'Times New Roman',
240
  'Georgia' => 'Georgia',
241
  'Palatino Linotype' => 'Palatino Linotype',
302
  */
303
  public function createAdsTxt() {
304
 
305
+ if (!isset($this->token->publisherId)) {
306
  return false;
307
  }
308
 
327
  $adsTxt = new \wpquads\adsTxt($vi, '41b5eef6');
328
  return $adsTxt->writeAdsTxt();
329
  }
 
 
 
330
 
331
  /**
332
  * Get ads.txt from vi api
372
  if (empty($token)) {
373
  $this->token = '';
374
  return false;
 
375
  }
376
 
377
  preg_match("/(\w*).(\w*)/", $token, $output);
398
 
399
  if (!isset($this->settings->data->revenueAPI))
400
  return false;
401
+
402
 
403
  $args = array(
404
  'headers' => array(
448
  if (!$vi_token)
449
  return false;
450
 
451
+
452
+ $viParam = $this->getViAdParams($ads);
453
+ // $viParam = array(
454
+ // 'domain' => $this->getDomain(),
455
+ // //'adUnitType' => 'FLOATING_OUTSTREAM',
456
+ // 'adUnitType' => 'NATIVE_VIDEO_UNIT',
457
+ // 'divId' => 'div_id',
458
+ // 'language' => isset($ads['ads'][1]['language']) ? $ads['ads'][1]['language'] : 'en-en',
459
+ // 'iabCategory' => isset($ads['ads'][1]['iab2']) && 'select' != $ads['ads'][1]['iab2'] ? $ads['ads'][1]['iab2'] : 'IAB2-16',
460
+ // 'font' => !empty($ads['ads'][1]['txt_font_family']) && $ads['ads'][1]['txt_font_family'] != 'select' ? $ads['ads'][1]['txt_font_family'] : 'Verdana',
461
+ // 'fontSize' => !empty($ads['ads'][1]['font_size']) ? $ads['ads'][1]['font_size'] : '12',
462
+ // 'keywords' => !empty($ads['ads'][1]['keywords']) ? $ads['ads'][1]['keywords'] : 'key,words',
463
+ // 'textColor' => !empty($ads['ads'][1]['text_color']) ? '#' . $ads['ads'][1]['text_color'] : '#00ff00',
464
+ // 'backgroundColor' => !empty($ads['ads'][1]['bg_color']) ? '#' . $ads['ads'][1]['bg_color'] : '#00ff00',
465
+ // 'vioptional1' => isset($ads['ads'][1]['optional1']) ? $ads['ads'][1]['optional1'] : 'optional1',
466
+ // 'vioptional2' => isset($ads['ads'][1]['optional2']) ? $ads['ads'][1]['optional2'] : 'optional2',
467
+ // 'vioptional3' => isset($ads['ads'][1]['optional3']) ? $ads['ads'][1]['optional3'] : 'optional3',
468
+ // 'float' => true,
469
+ // 'logoUrl' => 'http://url.com/logo.jpg',
470
+ // 'dfpSupport' => true,
471
+ // 'sponsoredText' => 'Sponsored text',
472
+ // 'poweredByText' => 'Powered by VI'
473
+ // );
474
 
475
  $args = array(
476
  'method' => 'POST',
511
  return json_encode($response);
512
  }
513
 
514
+ /**
515
+ * Build ad parameter dynamically
516
+ * @return array
517
+ */
518
+ private function getViAdParams($ads) {
519
+
520
+ if (!empty($ads['ads'][1]['font_size'])) {
521
+ return array(
522
+ 'domain' => $this->getDomain(),
523
+ //'adUnitType' => 'FLOATING_OUTSTREAM',
524
+ 'adUnitType' => 'NATIVE_VIDEO_UNIT',
525
+ 'divId' => 'div_id',
526
+ 'language' => isset($ads['ads'][1]['language']) ? $ads['ads'][1]['language'] : 'en-en',
527
+ 'iabCategory' => isset($ads['ads'][1]['iab2']) && 'select' != $ads['ads'][1]['iab2'] ? $ads['ads'][1]['iab2'] : 'IAB2-16',
528
+ 'font' => !empty($ads['ads'][1]['txt_font_family']) && $ads['ads'][1]['txt_font_family'] != 'select' ? $ads['ads'][1]['txt_font_family'] : 'Verdana',
529
+ 'fontSize' => !empty($ads['ads'][1]['font_size']) ? $ads['ads'][1]['font_size'] : '12',
530
+ 'keywords' => !empty($ads['ads'][1]['keywords']) ? $ads['ads'][1]['keywords'] : 'key,words',
531
+ 'textColor' => !empty($ads['ads'][1]['text_color']) ? '#' . $ads['ads'][1]['text_color'] : '#00ff00',
532
+ 'backgroundColor' => !empty($ads['ads'][1]['bg_color']) ? '#' . $ads['ads'][1]['bg_color'] : '#00ff00',
533
+ 'vioptional1' => isset($ads['ads'][1]['optional1']) ? $ads['ads'][1]['optional1'] : 'optional1',
534
+ 'vioptional2' => isset($ads['ads'][1]['optional2']) ? $ads['ads'][1]['optional2'] : 'optional2',
535
+ 'vioptional3' => isset($ads['ads'][1]['optional3']) ? $ads['ads'][1]['optional3'] : 'optional3',
536
+ 'float' => true,
537
+ 'logoUrl' => 'http://url.com/logo.jpg',
538
+ 'dfpSupport' => true,
539
+ 'sponsoredText' => 'Sponsored text',
540
+ 'poweredByText' => 'Powered by VI'
541
+ );
542
+ } else {
543
+ return array(
544
+ 'domain' => $this->getDomain(),
545
+ //'adUnitType' => 'FLOATING_OUTSTREAM',
546
+ 'adUnitType' => 'NATIVE_VIDEO_UNIT',
547
+ 'divId' => 'div_id',
548
+ 'language' => isset($ads['ads'][1]['language']) ? $ads['ads'][1]['language'] : 'en-en',
549
+ 'iabCategory' => isset($ads['ads'][1]['iab2']) && 'select' != $ads['ads'][1]['iab2'] ? $ads['ads'][1]['iab2'] : 'IAB2-16',
550
+ 'font' => !empty($ads['ads'][1]['txt_font_family']) && $ads['ads'][1]['txt_font_family'] != 'select' ? $ads['ads'][1]['txt_font_family'] : 'Verdana',
551
+ 'keywords' => !empty($ads['ads'][1]['keywords']) ? $ads['ads'][1]['keywords'] : 'key,words',
552
+ 'textColor' => !empty($ads['ads'][1]['text_color']) ? '#' . $ads['ads'][1]['text_color'] : '#00ff00',
553
+ 'backgroundColor' => !empty($ads['ads'][1]['bg_color']) ? '#' . $ads['ads'][1]['bg_color'] : '#00ff00',
554
+ 'vioptional1' => isset($ads['ads'][1]['optional1']) ? $ads['ads'][1]['optional1'] : 'optional1',
555
+ 'vioptional2' => isset($ads['ads'][1]['optional2']) ? $ads['ads'][1]['optional2'] : 'optional2',
556
+ 'vioptional3' => isset($ads['ads'][1]['optional3']) ? $ads['ads'][1]['optional3'] : 'optional3',
557
+ 'float' => true,
558
+ 'logoUrl' => 'http://url.com/logo.jpg',
559
+ 'dfpSupport' => true,
560
+ 'sponsoredText' => 'Sponsored text',
561
+ 'poweredByText' => 'Powered by VI'
562
+ );
563
+ }
564
+ }
565
+
566
  public function getAdCode() {
567
  return get_option('quads_vi_ads');
568
  }
621
  delete_option('quads_vi_active');
622
  return true;
623
  }
624
+
625
  // vi is deactivated
626
  if ($response['body'] == 'false') {
627
  update_option('quads_vi_active', 'false');
628
  return false;
629
  }
630
  }
631
+
632
  /**
633
  * Weekly check to ensure vi ad code has not been changed unintentionally
634
  * @return bool
635
  */
636
  public function verifyViAdCode() {
637
+
638
  //$url = 'https://wpquads.com/wpquads-api/signup/create.php?domain='.$this->getDomain().'&hash=' . $this->getHash();
639
  $url = 'https://wpquads.com/wpquads-api/signup/create.php';
640
  $args = array(
644
  'Content-Type' => 'application/json; charset=utf-8'
645
  ),
646
  'body' => json_encode(array(
647
+ 'domain' => $this->getDomain(),
648
+ 'hash' => $this->getHash(),
649
+ ))
650
  );
651
 
652
  $response = wp_remote_post($url, $args);
661
  if (empty($response)) {
662
  return true;
663
  }
664
+
665
  // vi is deactivated
666
  if ($response['body'] == 'false') {
667
  return false;
668
  }
669
  }
670
+
671
  /**
672
  * Create a hash to ensure that ad code has not been manippulated or changed unintentionally
673
  * Use hashing instead sending sensitive publisher data back and forth
674
  */
675
+ private function getHash() {
676
  $string = get_option('quads_vi_ads');
677
+
678
+ if (isset($string['ads'][1]['code'])) {
679
+ return md5($string['ads'][1]['code']);
680
  }
681
  return '';
682
  }
683
+
684
  /**
685
  * Get login URL
686
  * @return string
687
  */
688
+ public function getLoginURL() {
689
  if (isset($this->settings->data->loginAPI) &&
690
+ !empty($this->settings->data->loginAPI)) {
691
  return $this->settings->data->loginAPI;
692
  }
693
  return '';
694
  }
695
 
 
696
  }
includes/vendor/vi/views/Forms/adSettings.php CHANGED
@@ -507,22 +507,57 @@ class adSettings {
507
  // bg_color
508
  $element = new Text('quads_vi_ads[ads][1][bg_color]', array("class" => "jscolor"), array());
509
  $this->form->add(
510
- $element->setLabel("Background Color")->setDefault(isset($settings->bg_color) ? $settings->bg_color : '')
511
  );
512
  // text_color
513
  $element = new Text('quads_vi_ads[ads][1][text_color]', array("class" => "jscolor"), array());
514
  $this->form->add(
515
- $element->setLabel("Text Color")->setDefault(isset($settings->text_color) ? $settings->text_color : '')
516
  );
517
  // txt_font_family
518
  $element = new Select('quads_vi_ads[ads][1][txt_font_family]', $this->vi->getFontFamily(), array() );
519
  $this->form->add(
520
- $element->setLabel("Text Font Family")->setDefault(isset($settings->txt_font_family) ? $settings->txt_font_family : '')
521
  );
522
  // font_size
523
- $element = new Numerical('quads_vi_ads[ads][1][font_size]', array());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
524
  $this->form->add(
525
- $element->setLabel("Text Font Size")->setDefault(isset($settings->font_size) ? $settings->font_size : 12)
526
  );
527
  // optional1
528
  $element = new Text('quads_vi_ads[ads][1][optional1]', array());
@@ -554,11 +589,30 @@ class adSettings {
554
  $element->setLabel("align")->setDefault(isset($settings->align) ? $settings->align : '')
555
  );
556
 
557
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
558
 
559
  // Position
560
  $options = array(
561
- 'notShown' => 'Do not show vi ad',
562
  'abovePost' => 'Above Content',
563
  'middlePost' => 'Middle of Content',
564
  'belowPost' => 'Below of Content'
@@ -579,6 +633,16 @@ class adSettings {
579
  setDefault(isset($settings->excludedPostTypes) ? $settings->excludedPostTypes : 'noPostTypes')
580
  );
581
 
 
 
 
 
 
 
 
 
 
 
582
  // Hide Ads On Posts
583
  $element = new Text('quads_vi_ads[ads][1][excludedPostIds]', array());
584
  $this->form->add(
@@ -586,6 +650,7 @@ class adSettings {
586
  setTooltip("Exclude ads from beeing shown on specific pages by adding comma separated post ids here.")->
587
  setDefault(isset($settings->excludedPostIds) ? $settings->excludedPostIds : '')
588
  );
 
589
 
590
  // Condition User Roles
591
  $options = array_merge (array('noUserRoles' => 'Exclude nothing'), $this->quads_get_user_roles());
507
  // bg_color
508
  $element = new Text('quads_vi_ads[ads][1][bg_color]', array("class" => "jscolor"), array());
509
  $this->form->add(
510
+ $element->setLabel("Background Color")->setDefault(isset($settings->bg_color) ? $settings->bg_color : 'fafafa')
511
  );
512
  // text_color
513
  $element = new Text('quads_vi_ads[ads][1][text_color]', array("class" => "jscolor"), array());
514
  $this->form->add(
515
+ $element->setLabel("Text Color")->setDefault(isset($settings->text_color) ? $settings->text_color : '000000')
516
  );
517
  // txt_font_family
518
  $element = new Select('quads_vi_ads[ads][1][txt_font_family]', $this->vi->getFontFamily(), array() );
519
  $this->form->add(
520
+ $element->setLabel("Text Font Family")->setDefault(isset($settings->txt_font_family) ? $settings->txt_font_family : 'Verdana')
521
  );
522
  // font_size
523
+ // $element = new Numerical('quads_vi_ads[ads][1][font_size]', array());
524
+ // $this->form->add(
525
+ // $element->setLabel("Text Font Size")->setDefault(!empty($settings->font_size) ? $settings->font_size : '')
526
+ // );
527
+ // font_size
528
+ $element = new Select('quads_vi_ads[ads][1][font_size]', array(
529
+ '8' => '8',
530
+ '9' => '9',
531
+ '10' => '10',
532
+ '11' => '11',
533
+ '12' => '12',
534
+ '13' => '13',
535
+ '14' => '14',
536
+ '15' => '15',
537
+ '16' => '16',
538
+ '17' => '17',
539
+ '18' => '18',
540
+ '19' => '19',
541
+ '20' => '20',
542
+ '21' => '21',
543
+ '22' => '22',
544
+ '23' => '23',
545
+ '24' => '24',
546
+ '25' => '25',
547
+ '26' => '26',
548
+ '27' => '27',
549
+ '28' => '28',
550
+ '29' => '29',
551
+ '30' => '30',
552
+ '31' => '31',
553
+ '32' => '32',
554
+ '33' => '33',
555
+ '34' => '34',
556
+ '35' => '35',
557
+ '36' => '36',
558
+ ));
559
  $this->form->add(
560
+ $element->setLabel("Text Font Size")->setDefault(!empty($settings->font_size) ? $settings->font_size : '')
561
  );
562
  // optional1
563
  $element = new Text('quads_vi_ads[ads][1][optional1]', array());
589
  $element->setLabel("align")->setDefault(isset($settings->align) ? $settings->align : '')
590
  );
591
 
592
+ // Margin Top
593
+ $element = new Numerical('quads_vi_ads[ads][1][marginTop]', array());
594
+ $this->form->add(
595
+ $element->setLabel("Top")->setDefault(isset($settings->marginTop) ? $settings->marginTop : '0')
596
+ );
597
+ // Margin Right
598
+ $element = new Numerical('quads_vi_ads[ads][1][marginRight]', array());
599
+ $this->form->add(
600
+ $element->setLabel("Top")->setDefault(isset($settings->marginRight) ? $settings->marginRight : '0')
601
+ );
602
+ // Margin Bottom
603
+ $element = new Numerical('quads_vi_ads[ads][1][marginBottom]', array());
604
+ $this->form->add(
605
+ $element->setLabel("Top")->setDefault(isset($settings->marginBottom) ? $settings->marginBottom : '0')
606
+ );
607
+ // Margin Left
608
+ $element = new Numerical('quads_vi_ads[ads][1][marginLeft]', array());
609
+ $this->form->add(
610
+ $element->setLabel("Top")->setTooltip('Create some distance between the video content and text elements on your page. Values around 10 and more are looking nice but this also depends on your theme and what you personally prefer;)')->setDefault(isset($settings->marginLeft) ? $settings->marginLeft : '0')
611
+ );
612
 
613
  // Position
614
  $options = array(
615
+ 'notShown' => 'No Automatic',
616
  'abovePost' => 'Above Content',
617
  'middlePost' => 'Middle of Content',
618
  'belowPost' => 'Below of Content'
633
  setDefault(isset($settings->excludedPostTypes) ? $settings->excludedPostTypes : 'noPostTypes')
634
  );
635
 
636
+ // Condition Extra Pages
637
+ $options = array_merge (array('noExtraPages' => 'Exclude nothing'), array('homePage' => 'Home Page'));
638
+
639
+ $element = new SelectMultiple('quads_vi_ads[ads][1][excludedExtraPages]', $options);
640
+ $this->form->add(
641
+ $element->setLabel("Exclude Extra Pages")->
642
+ setTooltip("Never show vi video ad on these extra pages. Select multiple values by holding down ctrl key.")->
643
+ setDefault(isset($settings->excludedExtraPages) ? $settings->excludedExtraPages : 'noExtraPages')
644
+ );
645
+
646
  // Hide Ads On Posts
647
  $element = new Text('quads_vi_ads[ads][1][excludedPostIds]', array());
648
  $this->form->add(
650
  setTooltip("Exclude ads from beeing shown on specific pages by adding comma separated post ids here.")->
651
  setDefault(isset($settings->excludedPostIds) ? $settings->excludedPostIds : '')
652
  );
653
+
654
 
655
  // Condition User Roles
656
  $options = array_merge (array('noUserRoles' => 'Exclude nothing'), $this->quads_get_user_roles());
includes/vendor/vi/views/ad_settings.php CHANGED
@@ -55,9 +55,19 @@
55
  <h3 style="margin-bottom:8px;">Layout</h3>
56
  <br>
57
  <?php echo $form->get()->render("quads_vi_ads[ads][1][align]"); ?>
 
 
 
 
 
 
 
 
 
58
  <br>
59
  </div>
60
- <h3 style="margin-bottom:8px;">Automatic Integration</h3>
 
61
  <div style="border-top: 1px solid #c3c3c3;"></div>
62
  <h3>Where:</h3>
63
 
@@ -74,6 +84,12 @@
74
  ?>
75
  <br>
76
  <?php
 
 
 
 
 
 
77
  echo $form->get()->label("quads_vi_ads[ads][1][excludedUserRoles]");
78
  echo $form->get()->render("quads_vi_ads[ads][1][excludedUserRoles]");
79
  echo $form->get()->tooltip("quads_vi_ads[ads][1][excludedUserRoles]");
@@ -86,6 +102,7 @@
86
  ?>
87
  <br>
88
  <br>
 
89
  <div id="quads-vi-save-notice"><span class="quads-spinner" style="float:none;"></span></div>
90
  <div id="quads-vi-save-settings">
91
  <input type="submit" id="quads_vi_save_settings_submit" style="" class='button button-primary' value="Save Video Settings">
@@ -93,7 +110,7 @@
93
 
94
  </div>
95
  <div id="quads-vi-shortcodes">
96
- <h4 style="font-weight: 500;font-size:18px;color:black;">Manual Integration</h4>
97
  <label>Shortcode:</label>
98
  <input readonly="" id="quads_shortcode_1" type="text" onclick="this.focus();
99
  this.select()" value="[quadsvi id=1]" title="Optional: Copy and paste the shortcode into the post editor, click below then press Ctrl + C (PC) or Cmd + C (Mac).">
55
  <h3 style="margin-bottom:8px;">Layout</h3>
56
  <br>
57
  <?php echo $form->get()->render("quads_vi_ads[ads][1][align]"); ?>
58
+ <br>
59
+ <br>
60
+ Margin Top: <?php echo $form->get()->render("quads_vi_ads[ads][1][marginTop]"); ?>px &nbsp;
61
+ Right: <?php echo $form->get()->render("quads_vi_ads[ads][1][marginRight]"); ?>px &nbsp;
62
+ Bottom: <?php echo $form->get()->render("quads_vi_ads[ads][1][marginBottom]"); ?> px &nbsp;
63
+ Left: <?php echo $form->get()->render("quads_vi_ads[ads][1][marginLeft]"); ?> px
64
+ <?php echo $form->get()->tooltip("quads_vi_ads[ads][1][marginLeft]"); ?>
65
+
66
+
67
  <br>
68
  </div>
69
+ <div id="quads_vi_automatic_integration">
70
+ <h3 style="margin-bottom:8px;">Automatic Placement</h3>
71
  <div style="border-top: 1px solid #c3c3c3;"></div>
72
  <h3>Where:</h3>
73
 
84
  ?>
85
  <br>
86
  <?php
87
+ echo $form->get()->label("quads_vi_ads[ads][1][excludedExtraPages]");
88
+ echo $form->get()->render("quads_vi_ads[ads][1][excludedExtraPages]");
89
+ echo $form->get()->tooltip("quads_vi_ads[ads][1][excludedExtraPages]");
90
+ ?>
91
+ <br>
92
+ <?php
93
  echo $form->get()->label("quads_vi_ads[ads][1][excludedUserRoles]");
94
  echo $form->get()->render("quads_vi_ads[ads][1][excludedUserRoles]");
95
  echo $form->get()->tooltip("quads_vi_ads[ads][1][excludedUserRoles]");
102
  ?>
103
  <br>
104
  <br>
105
+ </div>
106
  <div id="quads-vi-save-notice"><span class="quads-spinner" style="float:none;"></span></div>
107
  <div id="quads-vi-save-settings">
108
  <input type="submit" id="quads_vi_save_settings_submit" style="" class='button button-primary' value="Save Video Settings">
110
 
111
  </div>
112
  <div id="quads-vi-shortcodes">
113
+ <h4 style="font-weight: 500;font-size:18px;color:black;">Manual Placement</h4>
114
  <label>Shortcode:</label>
115
  <input readonly="" id="quads_shortcode_1" type="text" onclick="this.focus();
116
  this.select()" value="[quadsvi id=1]" title="Optional: Copy and paste the shortcode into the post editor, click below then press Ctrl + C (PC) or Cmd + C (Mac).">
quick-adsense-reloaded.php CHANGED
@@ -6,7 +6,7 @@
6
  * Description: Insert Google AdSense and other ad formats fully automatic into your website
7
  * Author: Rene Hermenau, WP-Staging
8
  * Author URI: https://wordpress.org/plugins/quick-adsense-reloaded/
9
- * Version: 1.7.1
10
  * Text Domain: quick-adsense-reloaded
11
  * Domain Path: languages
12
  * Credits: WP QUADS - Quick AdSense Reloaded is a fork of Quick AdSense
@@ -35,7 +35,7 @@ if( !defined( 'ABSPATH' ) )
35
 
36
  // Plugin version
37
  if( !defined( 'QUADS_VERSION' ) ) {
38
- define( 'QUADS_VERSION', '1.7.1' );
39
  }
40
 
41
  // Plugin name
6
  * Description: Insert Google AdSense and other ad formats fully automatic into your website
7
  * Author: Rene Hermenau, WP-Staging
8
  * Author URI: https://wordpress.org/plugins/quick-adsense-reloaded/
9
+ * Version: 1.7.2
10
  * Text Domain: quick-adsense-reloaded
11
  * Domain Path: languages
12
  * Credits: WP QUADS - Quick AdSense Reloaded is a fork of Quick AdSense
35
 
36
  // Plugin version
37
  if( !defined( 'QUADS_VERSION' ) ) {
38
+ define( 'QUADS_VERSION', '1.7.2' );
39
  }
40
 
41
  // Plugin name
readme.txt CHANGED
@@ -9,7 +9,7 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
  Tags: adsense, ads, ad, google adsense, advertising, amp, ad injection, ad inserter, ad manager
10
  Requires at least: 3.6+
11
  Tested up to: 4.9
12
- Stable tag: 1.7.1
13
 
14
  Quick Adsense Reloaded! Quickest way to insert Google AdSense & other ads into your website. Google AdSense integration with Google AMP support
15
 
@@ -129,6 +129,22 @@ Alternative Installation:
129
 
130
  == Changelog ==
131
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  = 1.7.1 =
133
  * Fix: adsense ads are not shown after activation of vi because of incomplete ads.txt
134
 
@@ -210,5 +226,5 @@ Complete changelog: https://wpquads.com/changelog
210
 
211
  == Upgrade Notice ==
212
 
213
- = 1.7.1 =
214
- 1.7.1 New: Implementation of video ads by the SSP vi - video intelligence.
9
  Tags: adsense, ads, ad, google adsense, advertising, amp, ad injection, ad inserter, ad manager
10
  Requires at least: 3.6+
11
  Tested up to: 4.9
12
+ Stable tag: 1.7.2
13
 
14
  Quick Adsense Reloaded! Quickest way to insert Google AdSense & other ads into your website. Google AdSense integration with Google AMP support
15
 
129
 
130
  == Changelog ==
131
 
132
+ = 1.7.2 =
133
+ * New: Add Home Page condition for vi
134
+ * New: Add margin option for vi video ad
135
+ * Fix: Remove undefined var notice
136
+ * Fix: Remove debugging output
137
+ * Fix: vi login sometimes not automatically redirect
138
+ * Fix: use correct default values for vi settings if they are empty
139
+ * Fix: Use correct tier2 iab category depending on tier1 selection
140
+ * Fix: missing comma in ads.txt google adsense entry
141
+ * Fix: Do not show vi ad on feed, 404, category, archive and search pages
142
+ * Fix: Missing excerpt and content on category and archiv pages
143
+ * Fix: vi font Size default value can be empty
144
+ * Fix: Do not show vi ads when user is logged out of vi
145
+ * Tweak: Remove validate ad settings button
146
+ * Tweak: Remove not necessary admin notices
147
+
148
  = 1.7.1 =
149
  * Fix: adsense ads are not shown after activation of vi because of incomplete ads.txt
150
 
226
 
227
  == Upgrade Notice ==
228
 
229
+ = 1.7.2 =
230
+ 1.7.2 New: This update is highly recommended. It fixes serious issues which led to missing content elements.