Ocean Extra - Version 1.4.0

Version Description

  • Added: Integration with Push Monkey, see Theme Panel > Push Notifications.
  • Added: Instagram and White Label extensions added in the extensions tab.
  • Added: New options for the Contact Info widget to add a target to the links.
  • Tweak: Better approch for the Scripts & Styles, now the files are automatically updated after the theme update, no need to do it manually.
  • Fixed: Icons issue of the contact info widget on RTL.
Download this release

Release Info

Developer oceanwp
Plugin Icon 128x128 Ocean Extra
Version 1.4.0
Comparing to
See all releases

Code changes from version 1.3.10 to 1.4.0

assets/css/rtl.css CHANGED
@@ -3,8 +3,9 @@
3
  .oceanwp-about-me .oceanwp-about-me-social li:first-child { margin-right: 0; }
4
 
5
  /* Contact info */
6
- .contact-info-widget .oceanwp-info-wrap { padding-right: 55px; padding-left: 0; }
7
- .contact-info-widget i { float: right; margin-left: 15px; margin-right: 0; }
 
8
 
9
  /* Custom links */
10
  .custom-links-widget .oceanwp-custom-links li a::before { margin-left: 10px; margin-right: 0; }
3
  .oceanwp-about-me .oceanwp-about-me-social li:first-child { margin-right: 0; }
4
 
5
  /* Contact info */
6
+ .contact-info-widget.default .oceanwp-info-wrap { padding-right: 55px; padding-left: 0; }
7
+ .contact-info-widget.default i { float: right; margin-left: 15px; margin-right: 0; }
8
+ .contact-info-widget.big-icons i { float: right; margin-left: 20px; margin-right: 0; }
9
 
10
  /* Custom links */
11
  .custom-links-widget .oceanwp-custom-links li a::before { margin-left: 10px; margin-right: 0; }
includes/metabox/controls/assets/css/butterbean.min.css CHANGED
@@ -1 +1 @@
1
- body .butterbean-manager .butterbean-content .butterbean-control:after{content:'';display:block;height:0;clear:both;visibility:hidden;zoom:1}body .butterbean-manager .butterbean-nav li[aria-selected=true] a{font-weight:400;background-color:#fff;margin-right:-1px}body .butterbean-manager .butterbean-nav li a{color:#555}body .butterbean-manager .butterbean-nav .dashicons{margin-right:8px}body .butterbean-manager .butterbean-content .butterbean-control{border-top:1px solid #f1f1f1;padding:15px 0;margin:0}body .butterbean-manager .butterbean-content .butterbean-control:first-child{border-top:0;padding-top:0}body .butterbean-manager .butterbean-content .butterbean-control:last-child{padding-bottom:0}body .butterbean-manager .butterbean-content .butterbean-section{padding:20px 30px}body .butterbean-manager .butterbean-content .oceanwp-mb-desc{float:left;width:45%}body .butterbean-manager .butterbean-content .oceanwp-mb-field{position:relative;float:right;width:50%}body .butterbean-manager .butterbean-content .butterbean-label{font-size:13px;font-weight:400;color:#222}body .butterbean-manager .butterbean-content .butterbean-description{font-size:12px;font-weight:400;font-style:normal;margin:8px 0 0;padding:0;color:#939393}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple,body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single,body .butterbean-manager .butterbean-content input[type=text],body .butterbean-manager .butterbean-content input[type=number],body .butterbean-manager .butterbean-content select,body .butterbean-manager .butterbean-content textarea{background-color:#f5f5f5;color:#333;border:1px solid rgba(0,0,0,.05);font-size:13px;padding:5px 12px;height:34px;line-height:34px;width:100%;border-radius:0;margin:0;outline:0;box-shadow:none!important;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single:focus,body .butterbean-manager .butterbean-content .select2-container--default.select2-container--focus .select2-selection--multiple,body .butterbean-manager .butterbean-content input[type=text]:focus,body .butterbean-manager .butterbean-content input[type=number]:focus,body .butterbean-manager .butterbean-content textarea:focus{border-color:rgba(0,0,0,.08)}body .butterbean-manager .butterbean-content textarea{height:80px;line-height:20px}body .butterbean-manager .butterbean-content .select2-container{width:100%}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single,body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single .select2-selection__arrow{padding:2px 4px}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single .select2-selection__arrow b,body .butterbean-manager .butterbean-content .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-width:0;margin:0;right:0;left:auto}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single .select2-selection__arrow b:before{content:'\f347';font-family:dashicons;position:absolute;top:50%;right:0;margin-top:-6px;width:32px;font-size:12px;line-height:1;color:#777;text-align:center;transition:all .3s ease;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-o-transition:all .3s ease;-ms-transition:all .3s ease}body .butterbean-manager .butterbean-content .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b:before{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.select2-dropdown.oceanwp-select2{background-color:#f5f5f5!important}.oceanwp-select2 .select2-results .select2-results__option--highlighted,.select2-drop.oceanwp-select2 .select2-result.select2-highlighted{background-color:#3498DB!important;color:#fff!important;box-shadow:none!important;-webkit-box-shadow:none!important;border-radius:0!important;-webkit-border-radius:none!important}.select2-dropdown.oceanwp-select2 .select2-results{margin:0!important;padding:0!important;max-height:300px!important}.oceanwp-select2 .select2-results li:last-child{margin-bottom:0}.oceanwp-select2 .select2-search{padding:6px;margin-bottom:6px}.oceanwp-select2 .select2-search input{padding:5px 15px;margin:0;box-shadow:none!important;-webkit-box-shadow:none!important;border:1px solid rgba(0,0,0,.12)!important;background-color:#fff}.select2-container--open .select2-dropdown.oceanwp-select2{margin-top:-1px;border:1px solid rgba(0,0,0,.05)!important;box-shadow:none!important;-webkit-box-shadow:none!important;border-radius:0!important;-webkit-border-radius:none!important}.select2-drop.oceanwp-select2 .select2-result,.select2-dropdown.oceanwp-select2 .select2-results .select2-results__option{padding:0 .75em!important;height:32px!important;line-height:29px!important;overflow:hidden!important}.oceanwp-select2 .select2-results__option[aria-selected=true]{background-color:transparent}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple{height:auto;min-height:34px;line-height:1;padding:0 2px 5px}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e0e0e0;color:#666;border:none;line-height:1.5;padding:0 6px;border-radius:0;margin:7px 0 0 6px}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple .select2-search{line-height:1.5;margin:0 0 0 6px}body .butterbean-manager .butterbean-content .butterbean-buttonset{display:inline-block;margin:0;border:1px solid rgba(0,0,0,.1)}body .butterbean-manager .butterbean-content .butterbean-buttonset:after{content:'';display:block;height:0;clear:both;visibility:hidden;zoom:1}body .butterbean-manager .butterbean-content .butterbean-buttonset li{float:left;margin:0}body .butterbean-manager .butterbean-content .butterbean-buttonset li label{display:block;background-color:#f5f5f5;color:#555;border-right:1px solid rgba(0,0,0,.1);min-width:60px;padding:12px 18px;margin:0;font-size:13px;line-height:1;letter-spacing:.6px;text-align:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-box-sizing:border-box}body .butterbean-manager .butterbean-content .butterbean-buttonset li:last-child label{border-right:0}body .butterbean-manager .butterbean-content .butterbean-buttonset li input{display:none}body .butterbean-manager .butterbean-content .butterbean-buttonset li .buttonset-input:checked+.buttonset-label{background-color:#3498DB;color:#fff}body .butterbean-manager .butterbean-content .wp-picker-container{width:317px}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-active{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-active .wp-picker-input-wrap{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:200px}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-active .wp-picker-input-wrap label{width:100%;padding-right:3px;margin-top:0}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-active .wp-picker-input-wrap input[type=text]{margin-right:5px;width:100%!important}body .butterbean-manager .butterbean-content .wp-picker-container .wp-picker-holder{width:100%}body .butterbean-manager .butterbean-content .wp-picker-container .iris-picker{width:100%!important}body .butterbean-manager .butterbean-content .wp-picker-container .iris-picker .iris-picker-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}body .butterbean-manager .butterbean-content .wp-picker-container .iris-picker .iris-picker-inner .iris-slider{width:25px!important;margin-left:15px!important;height:100%!important;border-radius:0}body .butterbean-manager .butterbean-content .wp-picker-container .iris-picker .iris-picker-inner .iris-slider .ui-slider-handle{margin-bottom:0;right:-3px;left:-3px;border-radius:0}body .butterbean-manager .butterbean-content .wp-picker-container .iris-picker .iris-picker-inner .iris-square{width:-webkit-calc(100% - 45px)!important;width:calc(100% - 45px)!important;margin-right:0;border-radius:0}body .butterbean-manager .butterbean-content .wp-picker-container .iris-picker.iris-border{padding-bottom:30px!important}body .butterbean-manager .butterbean-content .wp-picker-container .iris-palette-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:-webkit-calc(100% - 45px)!important;width:calc(100% - 45px)!important}body .butterbean-manager .butterbean-content .wp-picker-container .iris-palette-container>.iris-palette{border:1px solid #e7e7e7;margin-left:2px!important;margin-right:0!important;width:19px!important;height:19px!important;border-radius:0;box-shadow:none}body .butterbean-manager .butterbean-content .wp-picker-container .iris-palette-container>.iris-palette:first-child,body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container .iris-palette-container>.iris-palette:first-child{margin-left:0!important}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container{width:365px}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container .iris-picker .iris-square{width:-webkit-calc(100% - 85px)!important;width:calc(100% - 85px)!important;margin-right:15px}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container .iris-palette-container>.iris-palette{width:20px!important;height:20px!important}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container .wp-picker-input-wrap{width:-webkit-calc(100% - 120px);width:calc(100% - 120px)}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container .wp-picker-input-wrap label input[type=text]{width:100%!important}body .butterbean-manager .butterbean-content .wp-color-result{border-radius:0;box-shadow:none}body .butterbean-manager .butterbean-content .button.wp-color-result{height:31px;border-radius:0;box-shadow:none}body .butterbean-manager .butterbean-content .wp-color-result-text{height:100%;line-height:30px}body .butterbean-manager .butterbean-content .wp-picker-container input[type=text]{height:31px;min-height:31px}body .butterbean-manager .butterbean-content .wp-picker-container input[type=button]{height:31px;border-radius:0;box-shadow:none}.fusion-colorpicker-legacy .pyre_field .wp-color-result{height:32px}.fusion-colorpicker-legacy .pyre_field .wp-color-result:after{height:100%;line-height:32px;font-size:12px;padding:0 10px}.fusion-colorpicker-legacy .pyre_field .wp-picker-container.wp-picker-active .wp-picker-input-wrap{width:190px}.fusion-colorpicker-legacy .pyre_field .wp-picker-container.wp-picker-alpha-container .wp-picker-input-wrap{width:240px;max-width:-webkit-calc(100% - 140px);max-width:calc(100% - 140px)}.fusion-colorpicker-legacy .pyre_field .wp-picker-container.wp-picker-active .wp-picker-input-wrap{max-width:-webkit-calc(100% - 140px);max-width:calc(100% - 140px)}.fusion-colorpicker-legacy .pyre_field .wp-picker-container.wp-picker-active input[type=text],.fusion-colorpicker-legacy .pyre_field .wp-picker-container.wp-picker-alpha-container .wp-picker-input-wrap input[type=text]{height:32px;max-height:32px}.fusion-colorpicker-legacy .pyre_page_options .pyre_field .wp-picker-container.wp-picker-active .wp-picker-input-wrap{width:190px}body .butterbean-manager .butterbean-content .wp-picker-container{max-width:-webkit-calc(100% - 2px);max-width:calc(100% - 2px)}body .butterbean-manager .butterbean-content .wp-picker-container .iris-palette-container>.iris-palette{max-width:-webkit-calc((100% - 60px)/ 11)!important;max-width:calc((100% - 60px)/ 11)!important}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container .iris-palette-container>.iris-palette{max-width:-webkit-calc((100% - 100px)/ 11)!important;max-width:calc((100% - 100px)/ 11)!important}body .butterbean-manager .butterbean-content .range-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;flex-wrap:wrap;-webkit-align-items:center;align-items:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body .butterbean-manager .butterbean-content .range-wrapper:after{content:'';display:block;height:0;clear:both;visibility:hidden;zoom:1}body .butterbean-manager .butterbean-content input[type=range]{display:block;background-color:rgba(0,0,0,.1);height:5px;width:76%;padding:0;cursor:pointer;-webkit-transition:background .5s;-moz-transition:background .5s;transition:background .5s;-webkit-appearance:none}body .butterbean-manager .butterbean-content input[type=range]:focus{box-shadow:none!important;outline:0!important}body .butterbean-manager .butterbean-content input[type=range]:hover{background-color:rgba(0,0,0,.15)}body .butterbean-manager .butterbean-content input[type=range]::-webkit-slider-thumb{-webkit-border-radius:15px}body .butterbean-manager .butterbean-content input[type=range]::-moz-range-track{border:inherit;background-color:transparent}body .butterbean-manager .butterbean-content input[type=range]::-ms-track{border:inherit;color:transparent;background-color:transparent}body .butterbean-manager .butterbean-content input[type=range]::-ms-fill-lower,body .butterbean-manager .butterbean-content input[type=range]::-ms-fill-upper{background-color:transparent}body .butterbean-manager .butterbean-content input[type=range]::-ms-tooltip{display:none}body .butterbean-manager .butterbean-content input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:15px;height:15px;border:none;border-radius:15px;background-color:#2e86b9}body .butterbean-manager .butterbean-content input[type=range]::-moz-range-thumb{width:15px;height:15px;border:none;border-radius:15px;background-color:#2e86b9}body .butterbean-manager .butterbean-content input[type=range]::-ms-thumb{width:15px;height:15px;border-radius:15px;border:0;background-color:#2e86b9}body .butterbean-manager .butterbean-content input.oceanwp-range-input{width:15%;height:32px;text-align:center;border-radius:4px;padding:3px;font-size:13px;margin-left:3%;color:#555;-moz-appearance:textfield}body .butterbean-manager .butterbean-content input.oceanwp-range-input::-webkit-inner-spin-button,body .butterbean-manager .butterbean-content input.oceanwp-range-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}body .butterbean-manager .butterbean-content span.oceanwp-reset-slider{position:relative;width:3%;margin-left:2%;line-height:1;color:rgba(0,0,0,.2);text-align:center;cursor:pointer;transition:all .3s ease;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-o-transition:all .3s ease;-ms-transition:all .3s ease}body .butterbean-manager .butterbean-content span.oceanwp-reset-slider:hover{color:#fe5252}body .butterbean-manager .butterbean-content span.oceanwp-reset-slider span{width:16px;height:16px;font-size:16px;line-height:1}body .butterbean-manager .butterbean-content .uploader input[type=text]{width:78%}body .butterbean-manager .butterbean-content .uploader .oceanwp-add-media{float:right;width:20%;height:34px;margin:0;border-radius:0;outline:0;-webkit-box-shadow:none!important;box-shadow:none!important;vertical-align:middle}body .butterbean-manager .butterbean-content .uploader .oceanwp-add-media:focus,body .butterbean-manager .butterbean-content .uploader .oceanwp-add-media:hover{border-color:#bbb}body .butterbean-manager .butterbean-control-typography ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin:0 -10px}body .butterbean-manager .butterbean-control-typography ul li{width:50%;padding:0 10px;margin:0 0 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body .butterbean-manager .butterbean-control-typography ul li.typography-font-family{width:100%}body .butterbean-manager .butterbean-control-typography ul li span.label{display:block;margin:0 0 6px}@media only screen and (max-width:1280px){body .butterbean-manager .butterbean-content input[type=range]{width:70%}body .butterbean-manager .butterbean-content input.oceanwp-range-input{width:20%}}@media only screen and (min-width:959px) and (max-width:1280px){body .butterbean-manager .butterbean-content .oceanwp-mb-desc,body .butterbean-manager .butterbean-content .oceanwp-mb-field{float:none;width:100%}body .butterbean-manager .butterbean-content .oceanwp-mb-desc{margin-bottom:15px}}@media only screen and (max-width:959px){body .butterbean-manager .butterbean-content .uploader .oceanwp-add-media{padding:6px 4px}}@media only screen and (max-width:480px){body .butterbean-manager .butterbean-content .oceanwp-mb-desc,body .butterbean-manager .butterbean-content .oceanwp-mb-field{float:none;width:100%}body .butterbean-manager .butterbean-content .oceanwp-mb-desc{margin-bottom:15px}body .butterbean-manager .butterbean-control-typography ul{margin:0}body .butterbean-manager .butterbean-control-typography ul li{width:100%;padding:0}}body.rtl .butterbean-manager-default{background:linear-gradient(-90deg,#fafafa 0,#fafafa 180px,#fff 180px,#fff 100%)}body.rtl #side-sortables .butterbean-manager-default{background:linear-gradient(-90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}body.rtl .butterbean-manager-default .butterbean-nav{float:right;border-left:1px solid #eee;border-right:0}body.rtl .butterbean-manager .butterbean-nav .dashicons{margin-left:8px;margin-right:0}body.rtl .butterbean-manager .butterbean-nav li[aria-selected=true] a{margin-left:-1px;margin-right:0}body.rtl .butterbean-manager-default .butterbean-content{float:right;margin-right:-1px;margin-left:0;border-right:1px solid #eee;border-left:0}body.rtl .butterbean-manager .butterbean-content .oceanwp-mb-desc{float:right}body.rtl .butterbean-manager .butterbean-content .oceanwp-mb-field{float:left}body.rtl .butterbean-manager .butterbean-content .butterbean-buttonset li,body.rtl .butterbean-manager .butterbean-content .wp-picker-container input[type=text].wp-color-picker{float:right}body.rtl .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single .select2-selection__arrow b{right:50%;left:auto;margin-right:-6px;margin-left:0}body.rtl .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single .select2-selection__arrow{border-right:1px solid rgba(0,0,0,.05);border-left:0}body.rtl .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple .select2-selection__choice{margin:5px 6px 0 0}body.rtl .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple .select2-search{margin:0 6px 0 0}body.rtl .butterbean-manager .butterbean-content .butterbean-buttonset li label{border-left:1px solid rgba(0,0,0,.1);border-right:0}body.rtl .butterbean-manager .butterbean-content .butterbean-buttonset li:last-child label{border-left:0}body.rtl .butterbean-manager .butterbean-content .wp-color-result{padding-right:34px;padding-left:0}body.rtl .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-active .wp-picker-input-wrap{margin-right:7px;margin-left:0;float:left}body.rtl .butterbean-manager .butterbean-content .wp-picker-clear,body.rtl .butterbean-manager .butterbean-content input.wp-picker-clear{float:left}body.rtl .butterbean-manager .butterbean-content input[type=range]{float:right}body.rtl .butterbean-manager .butterbean-content input.oceanwp-range-input{float:right;margin-right:15px;margin-left:0}body.rtl .butterbean-manager .butterbean-content span.oceanwp-reset-slider{float:left;margin:8px 5px 0 0}body.rtl .butterbean-manager .butterbean-content .uploader .oceanwp-add-media{float:left}@media only screen and (max-width:480px){body.rtl .butterbean-manager .butterbean-content .oceanwp-mb-desc,body.rtl .butterbean-manager .butterbean-content .oceanwp-mb-field{float:none;width:100%}}@media only screen and (max-width:782px),(max-width:980px) and (min-width:851px){body.rtl .butterbean-manager-default{background:linear-gradient(-90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}body.rtl .butterbean-manager-default .butterbean-nav .label{right:-1000em;left:auto}}@media only screen and (min-width:850px){body.rtl #side-sortables .butterbean-manager-default .butterbean-nav li{border-left:1px solid #eee;border-right:0}body.rtl #side-sortables .butterbean-manager-default .butterbean-nav li:last-of-type{border-left:none}body.rtl #side-sortables .butterbean-manager-default .butterbean-nav .label{right:-1000em;left:auto}}
1
+ body .butterbean-manager .butterbean-content .butterbean-control:after{content:'';display:block;height:0;clear:both;visibility:hidden;zoom:1}body .butterbean-manager .butterbean-nav li[aria-selected=true] a{font-weight:400;background-color:#fff;margin-right:-1px}body .butterbean-manager .butterbean-nav li a{color:#555}body .butterbean-manager .butterbean-nav .dashicons{margin-right:8px}body .butterbean-manager .butterbean-content .butterbean-control{border-top:1px solid #f1f1f1;padding:15px 0;margin:0}body .butterbean-manager .butterbean-content .butterbean-control:first-child{border-top:0;padding-top:0}body .butterbean-manager .butterbean-content .butterbean-control:last-child{padding-bottom:0}body .butterbean-manager .butterbean-content .butterbean-section{padding:20px 30px}body .butterbean-manager .butterbean-content .oceanwp-mb-desc{float:left;width:45%}body .butterbean-manager .butterbean-content .oceanwp-mb-field{position:relative;float:right;width:50%}body .butterbean-manager .butterbean-content .butterbean-label{font-size:13px;font-weight:400;color:#222}body .butterbean-manager .butterbean-content .butterbean-description{font-size:12px;font-weight:400;font-style:normal;margin:8px 0 0;padding:0;color:#939393}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple,body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single,body .butterbean-manager .butterbean-content input[type=text],body .butterbean-manager .butterbean-content input[type=number],body .butterbean-manager .butterbean-content select,body .butterbean-manager .butterbean-content textarea{background-color:#f5f5f5;color:#333;border:1px solid rgba(0,0,0,.05);font-size:13px;padding:5px 12px;height:34px;line-height:34px;width:100%;border-radius:0;margin:0;outline:0;box-shadow:none!important;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single:focus,body .butterbean-manager .butterbean-content .select2-container--default.select2-container--focus .select2-selection--multiple,body .butterbean-manager .butterbean-content input[type=text]:focus,body .butterbean-manager .butterbean-content input[type=number]:focus,body .butterbean-manager .butterbean-content textarea:focus{border-color:rgba(0,0,0,.08)}body .butterbean-manager .butterbean-content textarea{height:80px;line-height:20px}body .butterbean-manager .butterbean-content .select2-container{width:100%}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single,body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single .select2-selection__arrow{padding:2px 4px}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single .select2-selection__arrow b,body .butterbean-manager .butterbean-content .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-width:0;margin:0;right:0;left:auto}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single .select2-selection__arrow b:before{content:'\f347';font-family:dashicons;position:absolute;top:50%;right:0;margin-top:-6px;width:32px;font-size:12px;line-height:1;color:#777;text-align:center;transition:all .3s ease;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-o-transition:all .3s ease;-ms-transition:all .3s ease}body .butterbean-manager .butterbean-content .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b:before{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.select2-dropdown.oceanwp-select2{background-color:#f5f5f5!important}.oceanwp-select2 .select2-results .select2-results__option--highlighted,.select2-drop.oceanwp-select2 .select2-result.select2-highlighted{background-color:#3498DB!important;color:#fff!important;box-shadow:none!important;-webkit-box-shadow:none!important;border-radius:0!important;-webkit-border-radius:none!important}.select2-dropdown.oceanwp-select2 .select2-results{margin:0!important;padding:0!important;max-height:300px!important}.oceanwp-select2 .select2-results li:last-child{margin-bottom:0}.oceanwp-select2 .select2-search{padding:6px;margin-bottom:6px}.oceanwp-select2 .select2-search input{padding:5px 15px;margin:0;box-shadow:none!important;-webkit-box-shadow:none!important;border:1px solid rgba(0,0,0,.12)!important;background-color:#fff}.select2-container--open .select2-dropdown.oceanwp-select2{margin-top:-1px;border:1px solid rgba(0,0,0,.05)!important;box-shadow:none!important;-webkit-box-shadow:none!important;border-radius:0!important;-webkit-border-radius:none!important}.select2-drop.oceanwp-select2 .select2-result,.select2-dropdown.oceanwp-select2 .select2-results .select2-results__option{padding:0 .75em!important;height:32px!important;line-height:29px!important;overflow:hidden!important}.oceanwp-select2 .select2-results__option[aria-selected=true]{background-color:transparent}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple{height:auto;min-height:34px;line-height:1;padding:0 2px 5px}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e0e0e0;color:#666;border:none;line-height:1.5;padding:0 6px;border-radius:0;margin:7px 0 0 6px}body .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple .select2-search{line-height:1.5;margin:0 0 0 6px}body .butterbean-manager .butterbean-content .butterbean-buttonset{display:inline-block;margin:0;border:1px solid rgba(0,0,0,.1)}body .butterbean-manager .butterbean-content .butterbean-buttonset:after{content:'';display:block;height:0;clear:both;visibility:hidden;zoom:1}body .butterbean-manager .butterbean-content .butterbean-buttonset li{float:left;margin:0}body .butterbean-manager .butterbean-content .butterbean-buttonset li label{display:block;background-color:#f5f5f5;color:#555;border-right:1px solid rgba(0,0,0,.1);min-width:60px;padding:12px 18px;margin:0;font-size:13px;line-height:1;letter-spacing:.6px;text-align:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-box-sizing:border-box}body .butterbean-manager .butterbean-content .butterbean-buttonset li:last-child label{border-right:0}body .butterbean-manager .butterbean-content .butterbean-buttonset li input{display:none}body .butterbean-manager .butterbean-content .butterbean-buttonset li .buttonset-input:checked+.buttonset-label{background-color:#3498DB;color:#fff}body .butterbean-manager .butterbean-content .wp-picker-container{width:317px;max-width:-webkit-calc(100% - 2px);max-width:calc(100% - 2px)}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-active{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-active .wp-picker-input-wrap{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:200px}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-active .wp-picker-input-wrap label{width:100%;padding-right:3px;margin-top:0}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-active .wp-picker-input-wrap input[type=text]{margin-right:5px;width:100%!important}body .butterbean-manager .butterbean-content .wp-picker-container .wp-picker-holder{width:100%}body .butterbean-manager .butterbean-content .wp-picker-container .iris-picker{width:100%!important}body .butterbean-manager .butterbean-content .wp-picker-container .iris-picker .iris-picker-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}body .butterbean-manager .butterbean-content .wp-picker-container .iris-picker .iris-picker-inner .iris-slider{width:25px!important;margin-left:15px!important;height:100%!important;border-radius:0}body .butterbean-manager .butterbean-content .wp-picker-container .iris-picker .iris-picker-inner .iris-slider .ui-slider-handle{margin-bottom:0;right:-3px;left:-3px;border-radius:0}body .butterbean-manager .butterbean-content .wp-picker-container .iris-picker .iris-picker-inner .iris-square{width:-webkit-calc(100% - 45px)!important;width:calc(100% - 45px)!important;margin-right:0;border-radius:0}body .butterbean-manager .butterbean-content .wp-picker-container .iris-picker.iris-border{padding-bottom:30px!important}body .butterbean-manager .butterbean-content .wp-picker-container .iris-palette-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:-webkit-calc(100% - 45px)!important;width:calc(100% - 45px)!important}body .butterbean-manager .butterbean-content .wp-picker-container .iris-palette-container>.iris-palette{border:1px solid #e7e7e7;margin-left:2px!important;margin-right:0!important;width:19px!important;height:19px!important;border-radius:0;box-shadow:none;max-width:-webkit-calc((100% - 60px)/ 11)!important;max-width:calc((100% - 60px)/ 11)!important}body .butterbean-manager .butterbean-content .wp-picker-container .iris-palette-container>.iris-palette:first-child,body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container .iris-palette-container>.iris-palette:first-child{margin-left:0!important}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container{width:365px}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container .iris-picker .iris-square{width:-webkit-calc(100% - 85px)!important;width:calc(100% - 85px)!important;margin-right:15px}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container .iris-palette-container>.iris-palette{width:20px!important;height:20px!important;max-width:-webkit-calc((100% - 100px)/ 11)!important;max-width:calc((100% - 100px)/ 11)!important}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container .wp-picker-input-wrap{width:-webkit-calc(100% - 120px);width:calc(100% - 120px)}body .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-alpha-container .wp-picker-input-wrap label input[type=text]{width:100%!important}body .butterbean-manager .butterbean-content .wp-color-result{border-radius:0;box-shadow:none}body .butterbean-manager .butterbean-content .button.wp-color-result{height:31px;border-radius:0;box-shadow:none}body .butterbean-manager .butterbean-content .wp-color-result-text{height:100%;line-height:30px}body .butterbean-manager .butterbean-content .wp-picker-container input[type=text]{height:31px;min-height:31px}body .butterbean-manager .butterbean-content .wp-picker-container input[type=button]{height:31px;border-radius:0;box-shadow:none}body .butterbean-manager .butterbean-content .range-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;flex-wrap:wrap;-webkit-align-items:center;align-items:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body .butterbean-manager .butterbean-content .range-wrapper:after{content:'';display:block;height:0;clear:both;visibility:hidden;zoom:1}body .butterbean-manager .butterbean-content input[type=range]{display:block;background-color:rgba(0,0,0,.1);height:5px;width:76%;padding:0;cursor:pointer;-webkit-transition:background .5s;-moz-transition:background .5s;transition:background .5s;-webkit-appearance:none}body .butterbean-manager .butterbean-content input[type=range]:focus{box-shadow:none!important;outline:0!important}body .butterbean-manager .butterbean-content input[type=range]:hover{background-color:rgba(0,0,0,.15)}body .butterbean-manager .butterbean-content input[type=range]::-webkit-slider-thumb{-webkit-border-radius:15px}body .butterbean-manager .butterbean-content input[type=range]::-moz-range-track{border:inherit;background-color:transparent}body .butterbean-manager .butterbean-content input[type=range]::-ms-track{border:inherit;color:transparent;background-color:transparent}body .butterbean-manager .butterbean-content input[type=range]::-ms-fill-lower,body .butterbean-manager .butterbean-content input[type=range]::-ms-fill-upper{background-color:transparent}body .butterbean-manager .butterbean-content input[type=range]::-ms-tooltip{display:none}body .butterbean-manager .butterbean-content input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:15px;height:15px;border:none;border-radius:15px;background-color:#2e86b9}body .butterbean-manager .butterbean-content input[type=range]::-moz-range-thumb{width:15px;height:15px;border:none;border-radius:15px;background-color:#2e86b9}body .butterbean-manager .butterbean-content input[type=range]::-ms-thumb{width:15px;height:15px;border-radius:15px;border:0;background-color:#2e86b9}body .butterbean-manager .butterbean-content input.oceanwp-range-input{width:15%;height:32px;text-align:center;border-radius:4px;padding:3px;font-size:13px;margin-left:3%;color:#555;-moz-appearance:textfield}body .butterbean-manager .butterbean-content input.oceanwp-range-input::-webkit-inner-spin-button,body .butterbean-manager .butterbean-content input.oceanwp-range-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}body .butterbean-manager .butterbean-content span.oceanwp-reset-slider{position:relative;width:3%;margin-left:2%;line-height:1;color:rgba(0,0,0,.2);text-align:center;cursor:pointer;transition:all .3s ease;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-o-transition:all .3s ease;-ms-transition:all .3s ease}body .butterbean-manager .butterbean-content span.oceanwp-reset-slider:hover{color:#fe5252}body .butterbean-manager .butterbean-content span.oceanwp-reset-slider span{width:16px;height:16px;font-size:16px;line-height:1}body .butterbean-manager .butterbean-content .uploader input[type=text]{width:78%}body .butterbean-manager .butterbean-content .uploader .oceanwp-add-media{float:right;width:20%;height:34px;margin:0;border-radius:0;outline:0;-webkit-box-shadow:none!important;box-shadow:none!important;vertical-align:middle}body .butterbean-manager .butterbean-content .uploader .oceanwp-add-media:focus,body .butterbean-manager .butterbean-content .uploader .oceanwp-add-media:hover{border-color:#bbb}body .butterbean-manager .butterbean-control-typography ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin:0 -10px}body .butterbean-manager .butterbean-control-typography ul li{width:50%;padding:0 10px;margin:0 0 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body .butterbean-manager .butterbean-control-typography ul li.typography-font-family{width:100%}body .butterbean-manager .butterbean-control-typography ul li span.label{display:block;margin:0 0 6px}@media only screen and (max-width:1280px){body .butterbean-manager .butterbean-content input[type=range]{width:70%}body .butterbean-manager .butterbean-content input.oceanwp-range-input{width:20%}}@media only screen and (min-width:959px) and (max-width:1280px){body .butterbean-manager .butterbean-content .oceanwp-mb-desc,body .butterbean-manager .butterbean-content .oceanwp-mb-field{float:none;width:100%}body .butterbean-manager .butterbean-content .oceanwp-mb-desc{margin-bottom:15px}}@media only screen and (max-width:959px){body .butterbean-manager .butterbean-content .uploader .oceanwp-add-media{padding:6px 4px}}@media only screen and (max-width:480px){body .butterbean-manager .butterbean-content .oceanwp-mb-desc,body .butterbean-manager .butterbean-content .oceanwp-mb-field{float:none;width:100%}body .butterbean-manager .butterbean-content .oceanwp-mb-desc{margin-bottom:15px}body .butterbean-manager .butterbean-control-typography ul{margin:0}body .butterbean-manager .butterbean-control-typography ul li{width:100%;padding:0}}body.rtl .butterbean-manager-default{background:linear-gradient(-90deg,#fafafa 0,#fafafa 180px,#fff 180px,#fff 100%)}body.rtl #side-sortables .butterbean-manager-default{background:linear-gradient(-90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}body.rtl .butterbean-manager-default .butterbean-nav{float:right;border-left:1px solid #eee;border-right:0}body.rtl .butterbean-manager .butterbean-nav .dashicons{margin-left:8px;margin-right:0}body.rtl .butterbean-manager .butterbean-nav li[aria-selected=true] a{margin-left:-1px;margin-right:0}body.rtl .butterbean-manager-default .butterbean-content{float:right;margin-right:-1px;margin-left:0;border-right:1px solid #eee;border-left:0}body.rtl .butterbean-manager .butterbean-content .oceanwp-mb-desc{float:right}body.rtl .butterbean-manager .butterbean-content .oceanwp-mb-field{float:left}body.rtl .butterbean-manager .butterbean-content .butterbean-buttonset li,body.rtl .butterbean-manager .butterbean-content .wp-picker-container input[type=text].wp-color-picker{float:right}body.rtl .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single .select2-selection__arrow b{right:50%;left:auto;margin-right:-6px;margin-left:0}body.rtl .butterbean-manager .butterbean-content .select2-container--default .select2-selection--single .select2-selection__arrow{border-right:1px solid rgba(0,0,0,.05);border-left:0}body.rtl .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple .select2-selection__choice{margin:5px 6px 0 0}body.rtl .butterbean-manager .butterbean-content .select2-container--default .select2-selection--multiple .select2-search{margin:0 6px 0 0}body.rtl .butterbean-manager .butterbean-content .butterbean-buttonset li label{border-left:1px solid rgba(0,0,0,.1);border-right:0}body.rtl .butterbean-manager .butterbean-content .butterbean-buttonset li:last-child label{border-left:0}body.rtl .butterbean-manager .butterbean-content .wp-color-result{padding-right:34px;padding-left:0}body.rtl .butterbean-manager .butterbean-content .wp-picker-container.wp-picker-active .wp-picker-input-wrap{margin-right:7px;margin-left:0;float:left}body.rtl .butterbean-manager .butterbean-content .wp-picker-clear,body.rtl .butterbean-manager .butterbean-content input.wp-picker-clear{float:left}body.rtl .butterbean-manager .butterbean-content input[type=range]{float:right}body.rtl .butterbean-manager .butterbean-content input.oceanwp-range-input{float:right;margin-right:15px;margin-left:0}body.rtl .butterbean-manager .butterbean-content span.oceanwp-reset-slider{float:left;margin:8px 5px 0 0}body.rtl .butterbean-manager .butterbean-content .uploader .oceanwp-add-media{float:left}@media only screen and (max-width:480px){body.rtl .butterbean-manager .butterbean-content .oceanwp-mb-desc,body.rtl .butterbean-manager .butterbean-content .oceanwp-mb-field{float:none;width:100%}}@media only screen and (max-width:782px),(max-width:980px) and (min-width:851px){body.rtl .butterbean-manager-default{background:linear-gradient(-90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}body.rtl .butterbean-manager-default .butterbean-nav .label{right:-1000em;left:auto}}@media only screen and (min-width:850px){body.rtl #side-sortables .butterbean-manager-default .butterbean-nav li{border-left:1px solid #eee;border-right:0}body.rtl #side-sortables .butterbean-manager-default .butterbean-nav li:last-of-type{border-left:none}body.rtl #side-sortables .butterbean-manager-default .butterbean-nav .label{right:-1000em;left:auto}}
includes/panel/assets/css/panel.css CHANGED
@@ -80,6 +80,14 @@ body .postbox.oceanwp-doc .hndle { cursor: inherit; }
80
  #oceanwp-license-form .oceanwp-license-data.oceanwp-license-expired-msg a:hover { text-decoration: none; }
81
  #oceanwp-license-form p.submit { clear: both; }
82
 
 
 
 
 
 
 
 
 
83
  /* RTL */
84
  body.rtl .wrap.oceanwp-theme-panel { margin-left: 40px; margin-right: 0; }
85
  body.rtl .oceanwp-settings .left { float: right; }
80
  #oceanwp-license-form .oceanwp-license-data.oceanwp-license-expired-msg a:hover { text-decoration: none; }
81
  #oceanwp-license-form p.submit { clear: both; }
82
 
83
+ /* Push monkey tab */
84
+ .push-monkey-tab { position: relative; }
85
+ .push-monkey-tab:before { content: ''; display: block; background: url( '../img/push-monkey.png' ) no-repeat; background-size: 100% auto; position: absolute; right: 10px; top: -36px; width: 96px; height: 38px; }
86
+ .oceanwp-settings .pm-right { width: 42%; }
87
+ .oceanwp-settings .pm-left { width: 57%; }
88
+ .oceanwp-settings .push-monkey p { font-size: 15px; line-height: 1.8; margin: 0 0 20px 8px; }
89
+ .oceanwp-settings .push-monkey table { margin: 0 0 10px 8px; }
90
+
91
  /* RTL */
92
  body.rtl .wrap.oceanwp-theme-panel { margin-left: 40px; margin-right: 0; }
93
  body.rtl .oceanwp-settings .left { float: right; }
includes/panel/assets/css/panel.min.css CHANGED
@@ -1 +1 @@
1
- #oceanwp-license-form .oceanwp-license-data.license-expires-soon-notice a:hover,#oceanwp-license-form .oceanwp-license-data.oceanwp-license-expired-msg a:hover,#oceanwp-license-form .oceanwp-license-data[class*=oceanwp-license-] a:hover,.oceanwp-doc a{text-decoration:none}#oceanwp-license-form p.submit,.clr:after{clear:both}.clr:after{content:'';display:block;height:0;visibility:hidden;zoom:1}.button,.wp-core-ui .button-link:focus,.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus,a:focus{-webkit-box-shadow:none!important;box-shadow:none!important}body .button.owp-button{background-color:#13aff0;color:#fff;height:auto;font-size:12px;line-height:1;font-weight:600;text-transform:uppercase;margin:0;padding:14px 20px;border:0;cursor:pointer;text-align:center;letter-spacing:.1em;border-radius:3px;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-o-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}body .button.owp-button:active,body .button.owp-button:focus,body .button.owp-button:hover{background-color:#0b7cac;color:#fff}body .button.owp-button:active{-webkit-transform:none;-ms-transform:none;transform:none}.wrap.oceanwp-theme-panel{margin-right:40px}.oceanwp-settings .left{float:left;width:75%;margin-top:20px}.oceanwp-settings .right{float:right;width:23%;margin-top:30px}.oceanwp-settings .oceanwp-title{font-size:26px;line-height:1.6;margin:0 0 3px 8px}.oceanwp-settings .oceanwp-desc{margin:0 0 30px 8px;font-size:15px}.oceanwp-settings .divider{display:block;height:1px;margin:40px 0 33px;border-bottom:1px solid #ccc}.oceanwp-panels .column-wrap{float:left;position:relative;width:32.33%;margin:0 .5% 1%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oceanwp-panels .column-name{display:block;background-color:#fff;border:2px solid #eee;padding:25px 25px 20px;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-o-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}.oceanwp-panels .column-name:hover{border-color:#ddd}.oceanwp-panels .column-name h3.title{float:left;display:block;position:relative;font-size:18px;color:#333;margin:0;z-index:2}.oceanwp-panels .column-name .desc{display:block;position:relative;font-size:17px;line-height:1.6;font-weight:400;color:#777;z-index:2}.oceanwp-panels input[type=checkbox]{float:right;width:22px;height:22px;min-width:22px;margin:0}.oceanwp-panels input[type=checkbox]:checked:before{width:22px;font-size:27px}.oceanwp-panels p.submit{display:inline-block;width:100%;margin:10px 0 0 .5%;padding:0;clear:both}.oceanwp-options .options-inner{display:-webkit-box;display:-ms-flexbox;display:flex;flex-wrap:wrap;margin-top:30px}.oceanwp-options .column-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;background:#fff;border:1px solid #ccc;width:24%;min-height:150px;margin:0 .5% 1%;padding:25px 25px 20px;overflow:hidden;box-sizing:border-box}.oceanwp-options .column-wrap.hidden{display:none!important}.oceanwp-options .column-inner{display:-webkit-box;display:-ms-flexbox;display:flex;flex-direction:column}.oceanwp-options .title{display:block;position:relative;font-size:17px;color:#333;margin:0 0 20px;padding-bottom:20px;border-bottom:1px solid #eaeaea;text-transform:capitalize}.oceanwp-options .desc{flex:1 0 auto;display:block;margin:0 0 20px;font-size:14px;line-height:1.6;font-weight:400;color:#777}.oceanwp-options .bottom-column{padding:20px 0 0;border-top:1px solid #eaeaea;margin:0}.oceanwp-options .bottom-column .option-link{font-size:12px;font-weight:600;line-height:1.6;text-transform:uppercase;letter-spacing:.6px;text-decoration:none}.oceanwp-bloc{display:inline-block;position:relative;width:100%;background-color:#fff;margin:0 auto 24px;border-radius:3px;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);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.oceanwp-bloc h3{display:block;font-size:14px;font-weight:600;padding:12px 10px;background-color:#13aff0;color:#fff;text-transform:uppercase;letter-spacing:.4px;margin:0 0 22px;text-align:center}.oceanwp-bloc .content-wrap{position:relative;padding:0 30px 25px;z-index:2;text-align:center}.oceanwp-bloc p.content{font-size:14px;color:#5a5a5a;margin:0}body .oceanwp-bloc .button.owp-button{margin:22px 0 10px}.oceanwp-bloc p.bottom-text{color:#5a5a5a;font-size:12px;font-weight:600;font-style:italic;margin:0}.oceanwp-bloc i{position:absolute;bottom:-30px;right:-26px;width:auto;height:auto;font-size:120px;opacity:.07;z-index:1}.oceanwp-youtube .yt-img{padding:30px 30px 0;margin:0 0 25px;text-align:center}.oceanwp-youtube .yt-img img{max-width:110px}body .oceanwp-youtube .button.owp-button{background-color:#e62117}body .oceanwp-youtube .button.owp-button:hover{background-color:#b31217}#wpbody-content .oceanwp-doc{min-width:100%;padding:0}body .postbox.oceanwp-doc .hndle{cursor:inherit}.oceanwp-doc .hndle a{float:right;font-size:13px}.oceanwp-doc .inside{margin:15px 0 3px}.oceanwp-doc .inside ul{list-style:disc;margin:0 0 0 20px}.oceanwp-support p{font-size:14px;line-height:1.7;font-style:italic;margin-top:0}.oceanwp-support .owp-button{float:right;margin:15px 0 0}#oceanwp-license-form .form-table,#oceanwp-license-form caption,#oceanwp-license-form tbody,#oceanwp-license-form td,#oceanwp-license-form tfoot,#oceanwp-license-form th,#oceanwp-license-form thead,#oceanwp-license-form tr{display:block}#oceanwp-license-form .form-table tr{float:left;margin:0 15px 15px 0;background:#fff;border:1px solid #ccc;width:30.5%;max-width:350px;padding:14px;min-height:220px;position:relative;box-sizing:border-box}#oceanwp-license-form .form-table th{background:#f9f9f9;padding:14px;border-bottom:1px solid #ccc;margin:-14px -14px 20px;width:100%}#oceanwp-license-form .form-table td{padding:0}#oceanwp-license-form td input.regular-text{margin:0 0 8px;width:100%}#oceanwp-license-form .oceanwp-license-data[class*=oceanwp-license-]{position:absolute;background:#fafafa;padding:14px;border-top:1px solid #eee;margin:20px -14px -14px;min-height:67px;width:100%;bottom:14px;box-sizing:border-box}#oceanwp-license-form .oceanwp-license-data[class*=oceanwp-license-] a{color:#444}#oceanwp-license-form .oceanwp-license-data.license-expires-soon-notice{background-color:#00a0d2;color:#fff;border-color:#00a0d2}#oceanwp-license-form .oceanwp-license-data.oceanwp-license-expired-msg{background-color:#e24e4e;color:#fff;border-color:#e24e4e}#oceanwp-license-form .oceanwp-license-data.oceanwp-license-error-msg{background-color:#ffebcd;border-color:#ffebcd}#oceanwp-license-form .oceanwp-license-data p{font-size:13px;margin-top:0}#oceanwp-license-form .oceanwp-license-data.license-expires-soon-notice a,#oceanwp-license-form .oceanwp-license-data.oceanwp-license-expired-msg a{color:#fff}body.rtl .wrap.oceanwp-theme-panel{margin-left:40px;margin-right:0}body.rtl .oceanwp-settings .left{float:right}body.rtl .oceanwp-settings .right{float:left}body.rtl .oceanwp-settings .oceanwp-title{margin:0 8px 3px 0}body.rtl .oceanwp-settings .oceanwp-desc{margin:0 8px 30px 0}body.rtl .oceanwp-panels .column-name h3.title,body.rtl .oceanwp-panels .column-wrap{float:right}body.rtl .oceanwp-doc .hndle a,body.rtl .oceanwp-panels input[type=checkbox],body.rtl .oceanwp-support .owp-button{float:left}body.rtl .oceanwp-panels p.submit{margin:10px .5% 0 0}body.rtl .oceanwp-bloc i{left:-26px;right:auto}body.rtl .oceanwp-doc .inside ul{margin:0 20px 0 0}body.rtl #oceanwp-license-form .form-table tr{float:right;margin:0 0 15px 15px}@media screen and (max-width:1280px){.wrap.oceanwp-theme-panel{margin-right:20px}.oceanwp-settings .left,.oceanwp-settings .right{float:none;width:100%}.oceanwp-options .column-wrap{width:32.33%}.oceanwp-bloc,.oceanwp-support{width:49%}.oceanwp-review{float:left}.oceanwp-support,.oceanwp-youtube{float:right}#wpbody-content .oceanwp-doc{float:left;min-width:49%;clear:both}body.rtl .wrap.oceanwp-theme-panel{margin-left:20px;margin-right:0}body.rtl .oceanwp-support{float:right}body.rtl #wpbody-content .oceanwp-doc{float:left}}@media screen and (max-width:1100px){.oceanwp-options .column-wrap,.oceanwp-panels .column-wrap{width:49%}#oceanwp-license-form .form-table tr{width:46%;max-width:none;min-height:230px}}@media screen and (max-width:600px){.oceanwp-options .column-wrap,.oceanwp-panels .column-wrap{width:100%}#oceanwp-license-form .form-table tr{width:100%;min-height:230px}}@media screen and (max-width:480px){#wpbody-content .oceanwp-doc,.oceanwp-bloc,.oceanwp-support{float:none!important;width:100%;min-width:100%}}
1
+ .clr:after,.push-monkey-tab:before{content:''}#oceanwp-license-form .oceanwp-license-data.license-expires-soon-notice a:hover,#oceanwp-license-form .oceanwp-license-data.oceanwp-license-expired-msg a:hover,#oceanwp-license-form .oceanwp-license-data[class*=oceanwp-license-] a:hover,.oceanwp-doc a{text-decoration:none}#oceanwp-license-form p.submit,.clr:after{clear:both}.clr:after{display:block;height:0;visibility:hidden;zoom:1}.button,.wp-core-ui .button-link:focus,.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus,a:focus{-webkit-box-shadow:none!important;box-shadow:none!important}body .button.owp-button{background-color:#13aff0;color:#fff;height:auto;font-size:12px;line-height:1;font-weight:600;text-transform:uppercase;margin:0;padding:14px 20px;border:0;cursor:pointer;text-align:center;letter-spacing:.1em;border-radius:3px;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-o-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}body .button.owp-button:active,body .button.owp-button:focus,body .button.owp-button:hover{background-color:#0b7cac;color:#fff}body .button.owp-button:active{-webkit-transform:none;-ms-transform:none;transform:none}.wrap.oceanwp-theme-panel{margin-right:40px}.oceanwp-settings .left{float:left;width:75%;margin-top:20px}.oceanwp-settings .right{float:right;width:23%;margin-top:30px}.oceanwp-settings .oceanwp-title{font-size:26px;line-height:1.6;margin:0 0 3px 8px}.oceanwp-settings .oceanwp-desc{margin:0 0 30px 8px;font-size:15px}.oceanwp-settings .divider{display:block;height:1px;margin:40px 0 33px;border-bottom:1px solid #ccc}.oceanwp-panels .column-wrap{float:left;position:relative;width:32.33%;margin:0 .5% 1%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oceanwp-panels .column-name{display:block;background-color:#fff;border:2px solid #eee;padding:25px 25px 20px;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-o-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}.oceanwp-panels .column-name:hover{border-color:#ddd}.oceanwp-panels .column-name h3.title{float:left;display:block;position:relative;font-size:18px;color:#333;margin:0;z-index:2}.oceanwp-panels .column-name .desc{display:block;position:relative;font-size:17px;line-height:1.6;font-weight:400;color:#777;z-index:2}.oceanwp-panels input[type=checkbox]{float:right;width:22px;height:22px;min-width:22px;margin:0}.oceanwp-panels input[type=checkbox]:checked:before{width:22px;font-size:27px}.oceanwp-panels p.submit{display:inline-block;width:100%;margin:10px 0 0 .5%;padding:0;clear:both}.oceanwp-options .options-inner{display:-webkit-box;display:-ms-flexbox;display:flex;flex-wrap:wrap;margin-top:30px}.oceanwp-options .column-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;background:#fff;border:1px solid #ccc;width:24%;min-height:150px;margin:0 .5% 1%;padding:25px 25px 20px;overflow:hidden;box-sizing:border-box}.oceanwp-options .column-wrap.hidden{display:none!important}.oceanwp-options .column-inner{display:-webkit-box;display:-ms-flexbox;display:flex;flex-direction:column}.oceanwp-options .title{display:block;position:relative;font-size:17px;color:#333;margin:0 0 20px;padding-bottom:20px;border-bottom:1px solid #eaeaea;text-transform:capitalize}.oceanwp-options .desc{flex:1 0 auto;display:block;margin:0 0 20px;font-size:14px;line-height:1.6;font-weight:400;color:#777}.oceanwp-options .bottom-column{padding:20px 0 0;border-top:1px solid #eaeaea;margin:0}.oceanwp-options .bottom-column .option-link{font-size:12px;font-weight:600;line-height:1.6;text-transform:uppercase;letter-spacing:.6px;text-decoration:none}.oceanwp-bloc{display:inline-block;position:relative;width:100%;background-color:#fff;margin:0 auto 24px;border-radius:3px;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);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.oceanwp-bloc h3{display:block;font-size:14px;font-weight:600;padding:12px 10px;background-color:#13aff0;color:#fff;text-transform:uppercase;letter-spacing:.4px;margin:0 0 22px;text-align:center}.oceanwp-bloc .content-wrap{position:relative;padding:0 30px 25px;z-index:2;text-align:center}.oceanwp-bloc p.content{font-size:14px;color:#5a5a5a;margin:0}body .oceanwp-bloc .button.owp-button{margin:22px 0 10px}.oceanwp-bloc p.bottom-text{color:#5a5a5a;font-size:12px;font-weight:600;font-style:italic;margin:0}.oceanwp-bloc i{position:absolute;bottom:-30px;right:-26px;width:auto;height:auto;font-size:120px;opacity:.07;z-index:1}.oceanwp-youtube .yt-img{padding:30px 30px 0;margin:0 0 25px;text-align:center}.oceanwp-youtube .yt-img img{max-width:110px}body .oceanwp-youtube .button.owp-button{background-color:#e62117}body .oceanwp-youtube .button.owp-button:hover{background-color:#b31217}#wpbody-content .oceanwp-doc{min-width:100%;padding:0}body .postbox.oceanwp-doc .hndle{cursor:inherit}.oceanwp-doc .hndle a{float:right;font-size:13px}.oceanwp-doc .inside{margin:15px 0 3px}.oceanwp-doc .inside ul{list-style:disc;margin:0 0 0 20px}.oceanwp-support p{font-size:14px;line-height:1.7;font-style:italic;margin-top:0}.oceanwp-support .owp-button{float:right;margin:15px 0 0}#oceanwp-license-form .form-table,#oceanwp-license-form caption,#oceanwp-license-form tbody,#oceanwp-license-form td,#oceanwp-license-form tfoot,#oceanwp-license-form th,#oceanwp-license-form thead,#oceanwp-license-form tr{display:block}#oceanwp-license-form .form-table tr{float:left;margin:0 15px 15px 0;background:#fff;border:1px solid #ccc;width:30.5%;max-width:350px;padding:14px;min-height:220px;position:relative;box-sizing:border-box}#oceanwp-license-form .form-table th{background:#f9f9f9;padding:14px;border-bottom:1px solid #ccc;margin:-14px -14px 20px;width:100%}#oceanwp-license-form .form-table td{padding:0}#oceanwp-license-form td input.regular-text{margin:0 0 8px;width:100%}#oceanwp-license-form .oceanwp-license-data[class*=oceanwp-license-]{position:absolute;background:#fafafa;padding:14px;border-top:1px solid #eee;margin:20px -14px -14px;min-height:67px;width:100%;bottom:14px;box-sizing:border-box}#oceanwp-license-form .oceanwp-license-data[class*=oceanwp-license-] a{color:#444}#oceanwp-license-form .oceanwp-license-data.license-expires-soon-notice{background-color:#00a0d2;color:#fff;border-color:#00a0d2}#oceanwp-license-form .oceanwp-license-data.oceanwp-license-expired-msg{background-color:#e24e4e;color:#fff;border-color:#e24e4e}#oceanwp-license-form .oceanwp-license-data.oceanwp-license-error-msg{background-color:#ffebcd;border-color:#ffebcd}#oceanwp-license-form .oceanwp-license-data p{font-size:13px;margin-top:0}#oceanwp-license-form .oceanwp-license-data.license-expires-soon-notice a,#oceanwp-license-form .oceanwp-license-data.oceanwp-license-expired-msg a{color:#fff}.push-monkey-tab{position:relative}.push-monkey-tab:before{display:block;background:url(../img/push-monkey.png) no-repeat;background-size:100% auto;position:absolute;right:10px;top:-36px;width:96px;height:38px}.oceanwp-settings .pm-right{width:42%}.oceanwp-settings .pm-left{width:57%}.oceanwp-settings .push-monkey p{font-size:15px;line-height:1.8;margin:0 0 20px 8px}.oceanwp-settings .push-monkey table{margin:0 0 10px 8px}body.rtl .wrap.oceanwp-theme-panel{margin-left:40px;margin-right:0}body.rtl .oceanwp-settings .left{float:right}body.rtl .oceanwp-settings .right{float:left}body.rtl .oceanwp-settings .oceanwp-title{margin:0 8px 3px 0}body.rtl .oceanwp-settings .oceanwp-desc{margin:0 8px 30px 0}body.rtl .oceanwp-panels .column-name h3.title,body.rtl .oceanwp-panels .column-wrap{float:right}body.rtl .oceanwp-doc .hndle a,body.rtl .oceanwp-panels input[type=checkbox],body.rtl .oceanwp-support .owp-button{float:left}body.rtl .oceanwp-panels p.submit{margin:10px .5% 0 0}body.rtl .oceanwp-bloc i{left:-26px;right:auto}body.rtl .oceanwp-doc .inside ul{margin:0 20px 0 0}body.rtl #oceanwp-license-form .form-table tr{float:right;margin:0 0 15px 15px}@media screen and (max-width:1280px){.wrap.oceanwp-theme-panel{margin-right:20px}.oceanwp-settings .left,.oceanwp-settings .right{float:none;width:100%}.oceanwp-options .column-wrap{width:32.33%}.oceanwp-bloc,.oceanwp-support{width:49%}.oceanwp-review{float:left}.oceanwp-support,.oceanwp-youtube{float:right}#wpbody-content .oceanwp-doc{float:left;min-width:49%;clear:both}body.rtl .wrap.oceanwp-theme-panel{margin-left:20px;margin-right:0}body.rtl .oceanwp-support{float:right}body.rtl #wpbody-content .oceanwp-doc{float:left}}@media screen and (max-width:1100px){.oceanwp-options .column-wrap,.oceanwp-panels .column-wrap{width:49%}#oceanwp-license-form .form-table tr{width:46%;max-width:none;min-height:230px}}@media screen and (max-width:600px){.oceanwp-options .column-wrap,.oceanwp-panels .column-wrap{width:100%}#oceanwp-license-form .form-table tr{width:100%;min-height:230px}}@media screen and (max-width:480px){#wpbody-content .oceanwp-doc,.oceanwp-bloc,.oceanwp-support{float:none!important;width:100%;min-width:100%}}
includes/panel/assets/css/push-monkey.css ADDED
@@ -0,0 +1,278 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .push-monkey-bootstrap * {
2
+ -webkit-box-sizing: border-box;
3
+ -moz-box-sizing: border-box;
4
+ box-sizing: border-box;
5
+ }
6
+ .push-monkey {
7
+ display: inline-block;
8
+ width: 100%;
9
+ margin-top: 30px;
10
+ }
11
+ .push-monkey-bootstrap .container-fluid {
12
+ display: inline-block;
13
+ width: 100%;
14
+ padding-left: 15px;
15
+ padding-right: 15px;
16
+ }
17
+ .push-monkey-bootstrap .panel {
18
+ float: left;
19
+ width: 100%;
20
+ background-color: #fff;
21
+ -moz-border-radius: 5px;
22
+ -webkit-border-radius: 5px;
23
+ border-radius: 5px;
24
+ border: 0px;
25
+ border-top: 2px solid #E5E5E5;
26
+ margin-bottom: 20px;
27
+ position: relative;
28
+ -moz-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.2);
29
+ -webkit-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.2);
30
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.2);
31
+ }
32
+ .push-monkey-bootstrap .panel .panel-heading {
33
+ padding: 10px;
34
+ background: #F5F5F5;
35
+ border-bottom: 1px solid #E5E5E5;
36
+ border-top-right-radius: 3px;
37
+ border-top-left-radius: 3px;
38
+ }
39
+ .push-monkey-bootstrap .panel .panel-heading .panel-title-image {
40
+ float: left;
41
+ width: 30px;
42
+ border: 2px solid #D5D5D5;
43
+ -moz-border-radius: 50%;
44
+ -webkit-border-radius: 50%;
45
+ border-radius: 50%;
46
+ margin-right: 5px;
47
+ }
48
+ .push-monkey-bootstrap .panel .panel-heading .panel-title {
49
+ margin: 0 0 0 7px;
50
+ font-size: 16px;
51
+ font-weight: 400;
52
+ line-height: 30px;
53
+ display: block;
54
+ float: left;
55
+ color: #434A54;
56
+ }
57
+ .push-monkey-bootstrap .panel .panel-heading .panel-title-box {
58
+ float: left;
59
+ }
60
+ .push-monkey-bootstrap .panel .panel-heading .panel-title-box h3 {
61
+ font-size: 14px;
62
+ font-weight: 600;
63
+ line-height: 18px;
64
+ color: #434A54;
65
+ padding: 0px;
66
+ margin: 0px;
67
+ }
68
+ .push-monkey-bootstrap .panel .panel-heading .panel-title-box span {
69
+ font-size: 12px;
70
+ color: #767676;
71
+ font-weight: 400;
72
+ line-height: 12px;
73
+ }
74
+ .push-monkey-bootstrap .panel .panel-heading,
75
+ .push-monkey-bootstrap .panel .panel-footer,
76
+ .push-monkey-bootstrap .panel .panel-body {
77
+ float: left;
78
+ width: 100%;
79
+ }
80
+ .push-monkey-bootstrap .panel .panel-body {
81
+ padding: 15px;
82
+ position: relative;
83
+ }
84
+ .push-monkey-bootstrap h3 {
85
+ margin: 0 0 10px;
86
+ font-size: 18px;
87
+ font-weight: 600;
88
+ color: #434A54;
89
+ }
90
+ .push-monkey-bootstrap p {
91
+ margin: 0 0 10px;
92
+ }
93
+ .push-monkey-bootstrap .panel.panel-success {
94
+ border-top-color: #2fcc70;
95
+ }
96
+ .push-monkey-bootstrap .form-group {
97
+ display: inline-block;
98
+ width: 100%;
99
+ margin-bottom: 15px;
100
+ clear: both;
101
+ }
102
+ .push-monkey-bootstrap label {
103
+ display: inline-block;
104
+ max-width: 100%;
105
+ margin-bottom: 5px;
106
+ font-weight: 600;
107
+ position: relative;
108
+ min-height: 1px;
109
+ padding-left: 15px;
110
+ padding-right: 15px;
111
+ }
112
+ .push-monkey-bootstrap .col-xs-12 {
113
+ width: 100%;
114
+ }
115
+ @media (min-width: 992px) {
116
+ .push-monkey-bootstrap .col-md-3,
117
+ .push-monkey-bootstrap .col-md-4,
118
+ .push-monkey-bootstrap .col-md-6 {
119
+ float: left;
120
+ }
121
+ .push-monkey-bootstrap .col-md-3 {
122
+ width: 25%;
123
+ }
124
+ .push-monkey-bootstrap .col-md-4 {
125
+ width: 33.33333333%;
126
+ }
127
+ .push-monkey-bootstrap .col-md-6 {
128
+ width: 50%;
129
+ }
130
+ }
131
+ .push-monkey-bootstrap .col-md-3,
132
+ .push-monkey-bootstrap .col-md-4,
133
+ .push-monkey-bootstrap .col-md-6 {
134
+ position: relative;
135
+ min-height: 1px;
136
+ padding-left: 15px;
137
+ padding-right: 15px;
138
+ }
139
+ .push-monkey-bootstrap .switch {
140
+ cursor: pointer;
141
+ position: relative;
142
+ height: 30px;
143
+ line-height: 30px;
144
+ padding: 0;
145
+ }
146
+ .push-monkey-bootstrap .switch input {
147
+ position: absolute;
148
+ opacity: 0;
149
+ filter: alpha(opacity=0);
150
+ }
151
+ .push-monkey-bootstrap .switch input:checked + span:after {
152
+ left: 21px;
153
+ }
154
+ .push-monkey-bootstrap .switch input:checked + span {
155
+ background-color: #2fcc70;
156
+ }
157
+ .push-monkey-bootstrap .switch input:disabled + span {
158
+ background-color: #CCC;
159
+ }
160
+ .push-monkey-bootstrap .switch span {
161
+ position: relative;
162
+ width: 50px;
163
+ height: 30px;
164
+ -moz-border-radius: 30px;
165
+ -webkit-border-radius: 30px;
166
+ border-radius: 30px;
167
+ background-color: #E64330;
168
+ border: 1px solid #E5E5E5;
169
+ display: inline-block;
170
+ -webkit-transition: all 200ms ease;
171
+ -moz-transition: all 200ms ease;
172
+ -ms-transition: all 200ms ease;
173
+ -o-transition: all 200ms ease;
174
+ transition: all 200ms ease;
175
+ border-color: rgba(0, 0, 0, 0.1);
176
+ left: 0px;
177
+ }
178
+ .push-monkey-bootstrap .switch span:after {
179
+ content: "";
180
+ position: absolute;
181
+ background-color: #fff;
182
+ width: 26px;
183
+ top: 1px;
184
+ bottom: 1px;
185
+ left: 1px;
186
+ -moz-border-radius: 30px;
187
+ -webkit-border-radius: 30px;
188
+ border-radius: 30px;
189
+ -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25);
190
+ -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25);
191
+ box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25);
192
+ -webkit-transition: all 200ms ease;
193
+ -moz-transition: all 200ms ease;
194
+ -ms-transition: all 200ms ease;
195
+ -o-transition: all 200ms ease;
196
+ transition: all 200ms ease;
197
+ }
198
+ .push-monkey-bootstrap .switch.switch-small {
199
+ margin: 6px 0px 4px;
200
+ height: 20px;
201
+ line-height: 20px;
202
+ }
203
+ .push-monkey-bootstrap .switch.switch-small input:checked + span:after {
204
+ left: 11px;
205
+ }
206
+ .push-monkey-bootstrap .switch.switch-small span {
207
+ width: 30px;
208
+ height: 20px;
209
+ -moz-border-radius: 20px;
210
+ -webkit-border-radius: 20px;
211
+ border-radius: 20px;
212
+ }
213
+ .push-monkey-bootstrap .switch.switch-small span:after {
214
+ width: 16px;
215
+ }
216
+ .push-monkey-bootstrap .help-block {
217
+ display: block;
218
+ margin-top: 5px;
219
+ color: #737373;
220
+ }
221
+ .push-monkey-bootstrap .form-control {
222
+ display: block;
223
+ width: 100%;
224
+ height: 30px;
225
+ font-size: 12px;
226
+ line-height: 18px;
227
+ padding: 6px 12px;
228
+ -webkit-appearance: none;
229
+ border: 1px solid #D5D5D5;
230
+ background: #F9F9F9;
231
+ color: #555555;
232
+ border-radius: 4px;
233
+ }
234
+ .push-monkey-bootstrap .form-control:focus {
235
+ border-color: #C5C5C5;
236
+ -moz-box-shadow: none;
237
+ -webkit-box-shadow: none;
238
+ box-shadow: none;
239
+ border-color: #C1C1C1;
240
+ background: #FFF;
241
+ }
242
+ .push-monkey-bootstrap textarea.form-control {
243
+ height: auto;
244
+ }
245
+ .push-monkey-bootstrap .panel .panel-footer {
246
+ background: #F5F5F5;
247
+ border: 0;
248
+ border-top: 1px solid #E3E3E3;
249
+ line-height: 30px;
250
+ padding: 10px;
251
+ }
252
+ .push-monkey-bootstrap .pull-right {
253
+ float: right;
254
+ }
255
+ .push-monkey-bootstrap .btn {
256
+ background-color: #363636;
257
+ border-color: #363636;
258
+ color: #fff;
259
+ font-size: 12px;
260
+ padding: 4px 15px;
261
+ line-height: 20px;
262
+ font-weight: 400;
263
+ -moz-border-radius: 5px;
264
+ -webkit-border-radius: 5px;
265
+ border-radius: 5px;
266
+ outline: 0;
267
+ cursor: pointer;
268
+ -webkit-transition: all 200ms ease;
269
+ -moz-transition: all 200ms ease;
270
+ -ms-transition: all 200ms ease;
271
+ -o-transition: all 200ms ease;
272
+ transition: all 200ms ease;
273
+ }
274
+ .push-monkey-bootstrap .btn:hover {
275
+ background-color: #286090;
276
+ border-color: #286090;
277
+ color: #fff;
278
+ }
includes/panel/assets/css/push-monkey.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .push-monkey-bootstrap *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.push-monkey{display:inline-block;width:100%;margin-top:30px}.push-monkey-bootstrap .container-fluid{display:inline-block;width:100%;padding-left:15px;padding-right:15px}.push-monkey-bootstrap .panel{float:left;width:100%;background-color:#fff;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:0;border-top:2px solid #E5E5E5;margin-bottom:20px;position:relative;-moz-box-shadow:0 1px 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 1px 0 rgba(0,0,0,.2)}.push-monkey-bootstrap .panel .panel-heading{padding:10px;background:#F5F5F5;border-bottom:1px solid #E5E5E5;border-top-right-radius:3px;border-top-left-radius:3px}.push-monkey-bootstrap .panel .panel-heading .panel-title-image{float:left;width:30px;border:2px solid #D5D5D5;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%;margin-right:5px}.push-monkey-bootstrap .panel .panel-heading .panel-title{margin:0 0 0 7px;font-size:16px;font-weight:400;line-height:30px;display:block;float:left;color:#434A54}.push-monkey-bootstrap .panel .panel-heading .panel-title-box{float:left}.push-monkey-bootstrap .panel .panel-heading .panel-title-box h3{font-size:14px;font-weight:600;line-height:18px;color:#434A54;padding:0;margin:0}.push-monkey-bootstrap .col-md-3,.push-monkey-bootstrap .col-md-4,.push-monkey-bootstrap .col-md-6,.push-monkey-bootstrap label{min-height:1px;padding-left:15px;padding-right:15px;position:relative}.push-monkey-bootstrap .panel .panel-heading .panel-title-box span{font-size:12px;color:#767676;font-weight:400;line-height:12px}.push-monkey-bootstrap .panel .panel-body,.push-monkey-bootstrap .panel .panel-footer,.push-monkey-bootstrap .panel .panel-heading{float:left;width:100%}.push-monkey-bootstrap .panel .panel-body{padding:15px;position:relative}.push-monkey-bootstrap h3{margin:0 0 10px;font-size:18px;font-weight:600;color:#434A54}.push-monkey-bootstrap p{margin:0 0 10px}.push-monkey-bootstrap .panel.panel-success{border-top-color:#2fcc70}.push-monkey-bootstrap .form-group{display:inline-block;width:100%;margin-bottom:15px;clear:both}.push-monkey-bootstrap label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:600}.push-monkey-bootstrap .col-xs-12{width:100%}@media (min-width:992px){.push-monkey-bootstrap .col-md-3,.push-monkey-bootstrap .col-md-4,.push-monkey-bootstrap .col-md-6{float:left}.push-monkey-bootstrap .col-md-3{width:25%}.push-monkey-bootstrap .col-md-4{width:33.33333333%}.push-monkey-bootstrap .col-md-6{width:50%}}.push-monkey-bootstrap .switch{cursor:pointer;position:relative;height:30px;line-height:30px;padding:0}.push-monkey-bootstrap .switch input{position:absolute;opacity:0;filter:alpha(opacity=0)}.push-monkey-bootstrap .switch input:checked+span:after{left:21px}.push-monkey-bootstrap .switch input:checked+span{background-color:#2fcc70}.push-monkey-bootstrap .switch input:disabled+span{background-color:#CCC}.push-monkey-bootstrap .switch span{position:relative;width:50px;height:30px;-moz-border-radius:30px;-webkit-border-radius:30px;border-radius:30px;background-color:#E64330;border:1px solid #E5E5E5;display:inline-block;-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease;border-color:rgba(0,0,0,.1);left:0}.push-monkey-bootstrap .switch span:after{content:"";position:absolute;background-color:#fff;width:26px;top:1px;bottom:1px;left:1px;-moz-border-radius:30px;-webkit-border-radius:30px;border-radius:30px;-moz-box-shadow:1px 1px 3px rgba(0,0,0,.25);-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.25);box-shadow:1px 1px 3px rgba(0,0,0,.25);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.push-monkey-bootstrap .switch.switch-small{margin:6px 0 4px;height:20px;line-height:20px}.push-monkey-bootstrap .switch.switch-small input:checked+span:after{left:11px}.push-monkey-bootstrap .switch.switch-small span{width:30px;height:20px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px}.push-monkey-bootstrap .switch.switch-small span:after{width:16px}.push-monkey-bootstrap .help-block{display:block;margin-top:5px;color:#737373}.push-monkey-bootstrap .form-control{display:block;width:100%;height:30px;font-size:12px;line-height:18px;padding:6px 12px;-webkit-appearance:none;border:1px solid #D5D5D5;background:#F9F9F9;color:#555;border-radius:4px}.push-monkey-bootstrap .form-control:focus{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;border-color:#C1C1C1;background:#FFF}.push-monkey-bootstrap textarea.form-control{height:auto}.push-monkey-bootstrap .panel .panel-footer{background:#F5F5F5;border:0;border-top:1px solid #E3E3E3;line-height:30px;padding:10px}.push-monkey-bootstrap .pull-right{float:right}.push-monkey-bootstrap .btn{background-color:#363636;border-color:#363636;color:#fff;font-size:12px;padding:4px 15px;line-height:20px;font-weight:400;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;outline:0;cursor:pointer;-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.push-monkey-bootstrap .btn:hover{background-color:#286090;border-color:#286090;color:#fff}
includes/panel/assets/img/instagram-icon.png ADDED
Binary file
includes/panel/assets/img/push-monkey-devices.png ADDED
Binary file
includes/panel/assets/img/push-monkey.png ADDED
Binary file
includes/panel/assets/img/white-label-icon.png ADDED
Binary file
includes/panel/assets/js/manifest.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "Push Monkey Notification",
3
+ "short_name": "Notification",
4
+ "icons": [{
5
+ "src": "/static/js/chrome/images/test.png",
6
+ "sizes": "192x192",
7
+ "type": "image/png"
8
+ }],
9
+ "start_url": "./index.html?homescreen=1",
10
+ "display": "standalone",
11
+ "gcm_sender_id": "956785459164",
12
+ "//": "gcm_user_visible_only is only needed until Chrome 44 is in stable ",
13
+ "gcm_user_visible_only": true
14
+ }
includes/panel/extensions.php CHANGED
@@ -73,10 +73,19 @@ class Ocean_Extra_Extensions {
73
 
74
  // Premium extensions
75
  $premium_plugins = array(
 
 
 
 
 
 
 
 
 
76
  array(
77
  'slug' => 'ocean-portfolio',
78
  'url' => 'https://oceanwp.org/extension/',
79
- 'name' => esc_html__( 'Ocean Portfolio', 'ocean-extra' ),
80
  'description' => esc_html__( 'A complete extension to display your portfolio and work in a beautiful way.', 'ocean-extra' ),
81
  'icons' => plugins_url( '/assets/img/portfolio-icon.png', __FILE__ ),
82
  'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
@@ -85,7 +94,7 @@ class Ocean_Extra_Extensions {
85
  array(
86
  'slug' => 'ocean-sticky-header',
87
  'url' => 'https://oceanwp.org/extension/',
88
- 'name' => esc_html__( 'Ocean Sticky Header', 'ocean-extra' ),
89
  'description' => esc_html__( 'Attach the header with or without the top bar at the top of your screen with an animation.', 'ocean-extra' ),
90
  'icons' => plugins_url( '/assets/img/sticky-header-icon.png', __FILE__ ),
91
  'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
@@ -94,7 +103,7 @@ class Ocean_Extra_Extensions {
94
  array(
95
  'slug' => 'ocean-footer-callout',
96
  'url' => 'https://oceanwp.org/extension/',
97
- 'name' => esc_html__( 'Ocean Footer Callout', 'ocean-extra' ),
98
  'description' => esc_html__( 'Add some relevant/important information about your company or product in your footer.', 'ocean-extra' ),
99
  'icons' => plugins_url( '/assets/img/footer-callout-icon.png', __FILE__ ),
100
  'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
@@ -103,7 +112,7 @@ class Ocean_Extra_Extensions {
103
  array(
104
  'slug' => 'ocean-elementor-widgets',
105
  'url' => 'https://oceanwp.org/extension/',
106
- 'name' => esc_html__( 'Ocean Elementor Widgets', 'ocean-extra' ),
107
  'description' => esc_html__( 'Add some new widgets to the popular free page builder Elementor.', 'ocean-extra' ),
108
  'icons' => plugins_url( '/assets/img/elementor-widgets-icon.png', __FILE__ ),
109
  'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
@@ -112,7 +121,7 @@ class Ocean_Extra_Extensions {
112
  array(
113
  'slug' => 'ocean-side-panel',
114
  'url' => 'https://oceanwp.org/extension/',
115
- 'name' => esc_html__( 'Ocean Side Panel', 'ocean-extra' ),
116
  'description' => esc_html__( 'Add a responsive side panel with your preferred widgets inside.', 'ocean-extra' ),
117
  'icons' => plugins_url( '/assets/img/side-panel-icon.png', __FILE__ ),
118
  'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
@@ -145,6 +154,15 @@ class Ocean_Extra_Extensions {
145
  'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
146
  'author_url' => 'https://oceanwp.org/',
147
  ),
 
 
 
 
 
 
 
 
 
148
  );
149
 
150
  // Affiliate link
73
 
74
  // Premium extensions
75
  $premium_plugins = array(
76
+ array(
77
+ 'slug' => 'ocean-instagram',
78
+ 'url' => 'https://oceanwp.org/extension/',
79
+ 'name' => esc_html__( 'Instagram', 'ocean-extra' ),
80
+ 'description' => esc_html__( 'A plugin to display your Instagram feed in a beautiful way.', 'ocean-extra' ),
81
+ 'icons' => plugins_url( '/assets/img/instagram-icon.png', __FILE__ ),
82
+ 'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
83
+ 'author_url' => 'https://oceanwp.org/',
84
+ ),
85
  array(
86
  'slug' => 'ocean-portfolio',
87
  'url' => 'https://oceanwp.org/extension/',
88
+ 'name' => esc_html__( 'Portfolio', 'ocean-extra' ),
89
  'description' => esc_html__( 'A complete extension to display your portfolio and work in a beautiful way.', 'ocean-extra' ),
90
  'icons' => plugins_url( '/assets/img/portfolio-icon.png', __FILE__ ),
91
  'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
94
  array(
95
  'slug' => 'ocean-sticky-header',
96
  'url' => 'https://oceanwp.org/extension/',
97
+ 'name' => esc_html__( 'Sticky Header', 'ocean-extra' ),
98
  'description' => esc_html__( 'Attach the header with or without the top bar at the top of your screen with an animation.', 'ocean-extra' ),
99
  'icons' => plugins_url( '/assets/img/sticky-header-icon.png', __FILE__ ),
100
  'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
103
  array(
104
  'slug' => 'ocean-footer-callout',
105
  'url' => 'https://oceanwp.org/extension/',
106
+ 'name' => esc_html__( 'Footer Callout', 'ocean-extra' ),
107
  'description' => esc_html__( 'Add some relevant/important information about your company or product in your footer.', 'ocean-extra' ),
108
  'icons' => plugins_url( '/assets/img/footer-callout-icon.png', __FILE__ ),
109
  'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
112
  array(
113
  'slug' => 'ocean-elementor-widgets',
114
  'url' => 'https://oceanwp.org/extension/',
115
+ 'name' => esc_html__( 'Elementor Widgets', 'ocean-extra' ),
116
  'description' => esc_html__( 'Add some new widgets to the popular free page builder Elementor.', 'ocean-extra' ),
117
  'icons' => plugins_url( '/assets/img/elementor-widgets-icon.png', __FILE__ ),
118
  'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
121
  array(
122
  'slug' => 'ocean-side-panel',
123
  'url' => 'https://oceanwp.org/extension/',
124
+ 'name' => esc_html__( 'Side Panel', 'ocean-extra' ),
125
  'description' => esc_html__( 'Add a responsive side panel with your preferred widgets inside.', 'ocean-extra' ),
126
  'icons' => plugins_url( '/assets/img/side-panel-icon.png', __FILE__ ),
127
  'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
154
  'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
155
  'author_url' => 'https://oceanwp.org/',
156
  ),
157
+ array(
158
+ 'slug' => 'ocean-white-label',
159
+ 'url' => 'https://oceanwp.org/extension/',
160
+ 'name' => esc_html__( 'White Label', 'ocean-extra' ),
161
+ 'description' => esc_html__( 'A plugin which adds a new box in Theme Panel to allow you to replace the OceanWP name.', 'ocean-extra' ),
162
+ 'icons' => plugins_url( '/assets/img/white-label-icon.png', __FILE__ ),
163
+ 'author' => esc_html__( 'OceanWP', 'ocean-extra' ),
164
+ 'author_url' => 'https://oceanwp.org/',
165
+ ),
166
  );
167
 
168
  // Affiliate link
includes/panel/push-monkey-client.php ADDED
@@ -0,0 +1,514 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* WordPress Check */
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+
6
+ exit;
7
+ }
8
+
9
+ /**
10
+ * API Client
11
+ */
12
+ class Ocean_Push_Monkey_Client {
13
+
14
+ public $endpointURL;
15
+ public $registerURL;
16
+ public $cartURL;
17
+
18
+ /* Public */
19
+
20
+ const PLAN_NAME_KEY = 'push_monkey_plan_name_output';
21
+
22
+ /**
23
+ * Get the stats for an Account Key.
24
+ * @param string $account_key
25
+ * @return mixed; false if nothing found; array otherwise.
26
+ */
27
+ public function get_stats( $account_key ) {
28
+
29
+ $stats_api_url = $this->endpointURL . '/stats/api';
30
+ $args = array( 'body' => array( 'account_key' => $account_key ) );
31
+ $response = wp_remote_post( $stats_api_url, $args );
32
+ if( is_wp_error( $response ) ) {
33
+ return ( object ) array( 'error' => $response->get_error_message() );
34
+ } else {
35
+
36
+ $body = wp_remote_retrieve_body( $response );
37
+ $output = json_decode( $body );
38
+ return $output;
39
+ }
40
+ return false;
41
+ }
42
+
43
+ /**
44
+ * Get the Website Push ID for an Account Key.
45
+ * @param string $account_key
46
+ * @return string; array with error info if an error occured.
47
+ */
48
+ public function get_website_push_ID( $account_key ) {
49
+
50
+ $url = $this->endpointURL . '/v2/api/website_push_id';
51
+ $args = array( 'body' => array( 'account_key' => $account_key ) );
52
+
53
+ $response = wp_remote_post( $url, $args );
54
+
55
+ if( is_wp_error( $response ) ) {
56
+
57
+ return ( object ) array( 'error' => $response->get_error_message() );
58
+ }
59
+ $body = wp_remote_retrieve_body( $response );
60
+ $output = json_decode( $body );
61
+ return $output;
62
+ }
63
+
64
+ /**
65
+ * Sends a desktop push notification.
66
+ * @param string $account_key
67
+ * @param string $title
68
+ * @param string $body
69
+ * @param string $url_args
70
+ * @param boolean $custom
71
+ */
72
+ public function send_push_notification( $account_key, $title, $body, $url_args, $custom, $segments, $locations, $image = NULL ) {
73
+
74
+ $url = $this->endpointURL . '/push_message';
75
+ $args = array(
76
+ 'account_key' => $account_key,
77
+ 'title' => $title,
78
+ 'body' => $body,
79
+ 'url_args' => $url_args,
80
+ 'send_to_segments_string' => implode(",", $segments),
81
+ 'send_to_locations_string' => implode(",", $locations),
82
+ 'image' => $image
83
+ );
84
+ if ( $custom ) {
85
+
86
+ $args['custom'] = true;
87
+ }
88
+ $response = $this->post_with_file( $url, $args, $image );
89
+ if( is_wp_error( $response ) ) {
90
+ } else {
91
+ }
92
+ }
93
+
94
+ /**
95
+ * Get the plan name.
96
+ * @param string $account_key
97
+ * @return string; array with error info otherwise.
98
+ */
99
+ public function get_plan_name( $account_key ) {
100
+
101
+ $output = $this->cache->get( self::PLAN_NAME_KEY );
102
+ if ( $output ) {
103
+ return (object) $output;
104
+ }
105
+
106
+ $url = $this->endpointURL . '/v2/api/get_plan_name';
107
+ $args = array( 'body' => array( 'account_key' => $account_key ) );
108
+
109
+ $response = wp_remote_post( $url, $args );
110
+
111
+ if( is_wp_error( $response ) ) {
112
+
113
+ return ( object ) array( 'error' => $response->get_error_message() );
114
+ }
115
+ $body = wp_remote_retrieve_body( $response );
116
+ $output = json_decode( $body );
117
+ $serialized_output = json_decode( $body, true );
118
+ if ( isset( $output->error ) ) {
119
+ return $output->error;
120
+ } else {
121
+ $this->cache->store( self::PLAN_NAME_KEY, $serialized_output );
122
+ return $output;
123
+ }
124
+ return '';
125
+ }
126
+
127
+ /**
128
+ * Get all the segments
129
+ * @param string $account_key
130
+ * @return associative array of [id=>string]
131
+ */
132
+ public function get_segments( $account_key ) {
133
+
134
+ $segments_api_url = $this->endpointURL . '/push/v1/segments/' . $account_key;
135
+ $response = wp_remote_post( $segments_api_url, array() );
136
+ if( is_wp_error( $response ) ) {
137
+ return ( object ) array( 'error' => $response->get_error_message() );
138
+ } else {
139
+
140
+ $body = wp_remote_retrieve_body( $response );
141
+ $output = json_decode( $body, true );
142
+ if ( isset( $output["segments"] ) ) {
143
+
144
+ if ( count( $output["segments"] ) > 0 ) {
145
+
146
+ if ( gettype($output["segments"][0]) == "array" ) {
147
+
148
+ return $output["segments"];
149
+ }
150
+ }
151
+ }
152
+ }
153
+ return array();
154
+ }
155
+
156
+ /**
157
+ * Save a segments
158
+ * @param string $account_key
159
+ * @param string $name
160
+ * @return response or error
161
+ */
162
+ public function save_segment( $account_key, $name ) {
163
+
164
+ $url = $this->endpointURL . '/push/v1/segments/create/' . $account_key;
165
+ $args = array( 'body' => array(
166
+
167
+ 'name' => $name
168
+ ) );
169
+ $response = wp_remote_post( $url, $args );
170
+ if ( is_wp_error( $response ) ) {
171
+
172
+ return ( object ) array( 'error' => $response->get_error_message() );
173
+ } else {
174
+
175
+ $body = wp_remote_retrieve_body( $response );
176
+ $output = json_decode( $body );
177
+ return $output;
178
+ }
179
+ return false;
180
+ }
181
+
182
+ /**
183
+ * Delete a segments
184
+ * @param string $account_key
185
+ * @param string $id of segment
186
+ * @return response or error
187
+ */
188
+ public function delete_segment( $account_key, $id ) {
189
+
190
+ $url = $this->endpointURL . '/push/v1/segments/delete/' . $account_key;
191
+ $args = array( 'body' => array(
192
+
193
+ 'id' => $id
194
+ ) );
195
+ $response = wp_remote_post( $url, $args );
196
+ if ( is_wp_error( $response ) ) {
197
+
198
+ return ( object ) array( 'error' => $response->get_error_message() );
199
+ } else {
200
+
201
+ $body = wp_remote_retrieve_body( $response );
202
+ $output = json_decode( $body );
203
+ return $output;
204
+ }
205
+ return false;
206
+ }
207
+
208
+ /**
209
+ * Retrieve the status of a welcome message
210
+ * @param string $account_key
211
+ * @return associative array of JSON response
212
+ */
213
+ public function get_welcome_message_status( $account_key ) {
214
+
215
+ $url = $this->endpointURL . '/v2/api/welcome_notification_status/' . $account_key;
216
+ $response = wp_remote_post( $url, array() );
217
+ if( is_wp_error( $response ) ) {
218
+ return ( object ) array( 'error' => $response->get_error_message() );
219
+ }
220
+ $body = wp_remote_retrieve_body( $response );
221
+ $output = json_decode( $body, true );
222
+ if ( empty( $output ) ) {
223
+
224
+ return ( object ) array( 'error' => 'empty' );
225
+ }
226
+ return $output;
227
+ }
228
+
229
+ /**
230
+ * Retrieve the status of a welcome message
231
+ * @param string $account_key
232
+ * @return associative array of JSON response
233
+ */
234
+ public function get_custom_prompt( $account_key ){
235
+
236
+ $url = $this->endpointURL . '/v2/api/custom_prompt/' . $account_key;
237
+ $response = wp_remote_post( $url, array() );
238
+ if( is_wp_error( $response ) ) {
239
+ return ( object ) array( 'error' => $response->get_error_message() );
240
+ }
241
+ $body = wp_remote_retrieve_body( $response );
242
+ $output = json_decode( $body, true );
243
+ if ( empty( $output ) ) {
244
+
245
+ return ( object ) array( 'error' => 'empty' );
246
+ }
247
+ return $output;
248
+ }
249
+
250
+ /**
251
+ * Update the welcome message info
252
+ * @param string $account_key
253
+ * @param boolean $enabled
254
+ * @param string $message
255
+ * @param string $title
256
+ * @return boolean. True if operation finished successfully.
257
+ */
258
+ public function update_custom_prompt( $account_key, $enabled, $title, $message ) {
259
+
260
+ $url = $this->endpointURL . '/v2/api/custom_prompt/' . $account_key . '/update';
261
+ $args = array( 'body' => array(
262
+
263
+ 'custom_prompt_message' => $message,
264
+ 'custom_prompt_title' => $title
265
+ ) );
266
+ if ( $enabled ) {
267
+
268
+ $args['body']['enabled'] = true;
269
+ }
270
+ $response = wp_remote_post( $url, $args );
271
+ if( is_wp_error( $response ) ) {
272
+ return ( object ) array( 'error' => $response->get_error_message() );
273
+ }
274
+ $body = wp_remote_retrieve_body( $response );
275
+ $output = json_decode( $body, true );
276
+ if ( isset( $output["response"] ) ) {
277
+
278
+ if ( $output['response'] == "ok" ) {
279
+
280
+ return true;
281
+ }
282
+ }
283
+ return false;
284
+ }
285
+
286
+ /**
287
+ * Retrieve locations stored for this account key
288
+ * @param string $account_key
289
+ * @return associative array of JSON response
290
+ */
291
+ public function get_locations( $account_key ) {
292
+
293
+ $url = $this->endpointURL . '/v2/api/locations/' . $account_key;
294
+ $response = wp_remote_post( $url, array() );
295
+ if( is_wp_error( $response ) ) {
296
+ return ( object ) array( 'error' => $response->get_error_message() );
297
+ }
298
+ $body = wp_remote_retrieve_body( $response );
299
+ $output = json_decode( $body, true );
300
+ if ( empty( $output ) ) {
301
+
302
+ return ( object ) array( 'error' => 'empty' );
303
+ }
304
+ return $output;
305
+ }
306
+
307
+ /**
308
+ * Update the welcome message info
309
+ * @param string $account_key
310
+ * @param boolean $enabled
311
+ * @param string $message
312
+ * @return boolean. True if operation finished successfully.
313
+ */
314
+ public function update_welcome_message( $account_key, $enabled, $message ) {
315
+
316
+ $url = $this->endpointURL . '/v2/api/update_welcome_notification/' . $account_key;
317
+ $args = array( 'body' => array(
318
+
319
+ 'message' => $message
320
+ ) );
321
+ if ( $enabled ) {
322
+
323
+ $args['body']['enabled'] = true;
324
+ }
325
+ $response = wp_remote_post( $url, $args );
326
+ if( is_wp_error( $response ) ) {
327
+ return ( object ) array( 'error' => $response->get_error_message() );
328
+ }
329
+ $body = wp_remote_retrieve_body( $response );
330
+ $output = json_decode( $body, true );
331
+ if ( isset( $output["status"] ) ) {
332
+
333
+ if ( $output['status'] == "ok" ) {
334
+
335
+ return true;
336
+ }
337
+ }
338
+ return false;
339
+ }
340
+
341
+ /**
342
+ * Update the WooCommerce setting
343
+ * @param string $account_key
344
+ * @param string $delay
345
+ * @param string $title
346
+ * @param string $message
347
+ * @param file $image
348
+ * @return boolean. True if operation finished successfully.
349
+ */
350
+ public function update_woo_settings( $account_key, $delay, $title, $message, $image_path, $image_name ) {
351
+
352
+ $url = $this->endpointURL . '/magento/v1/api/update/' . $account_key;
353
+ $args = array(
354
+
355
+ 'abandoned_cart_delay' => $delay,
356
+ 'abandoned_cart_title' => $title,
357
+ 'abandoned_cart_message' => $message,
358
+ 'image' => $image_name
359
+ );
360
+ $response = $this->post_with_file( $url, $args, $image_path, $image_name );
361
+ if( is_wp_error( $response ) ) {
362
+ return ( object ) array( 'error' => $response->get_error_message() );
363
+ }
364
+ $body = wp_remote_retrieve_body( $response );
365
+ $output = json_decode( $body, true );
366
+ if ( isset( $output["response"] ) ) {
367
+
368
+ if ( $output['response'] == "ok" ) {
369
+
370
+ return true;
371
+ }
372
+ }
373
+ return false;
374
+ }
375
+
376
+ /**
377
+ * Retrieve the WooCommerce setting
378
+ * @param string $account_key
379
+ * @return associative array of JSON response.
380
+ */
381
+ public function get_woo_settings( $account_key ) {
382
+ if ( $account_key ) {
383
+ $url = $this->endpointURL . '/magento/v1/api/get/' . $account_key;
384
+ $response = wp_remote_post( $url, array() );
385
+ if( is_wp_error( $response ) ) {
386
+ return ( object ) array( 'error' => $response->get_error_message() );
387
+ }
388
+ $body = wp_remote_retrieve_body( $response );
389
+ $output = json_decode( $body, true );
390
+ if ( empty( $output ) ) {
391
+
392
+ return ( object ) array( 'error' => 'empty' );
393
+ }
394
+ return $output;
395
+ }
396
+ }
397
+
398
+ /**
399
+ * Creates cart with the API token and cart ID
400
+ * Returns false on WP errors.
401
+ * Returns true.
402
+ * @param string $api_token
403
+ * @param string $cart_id
404
+ * @return mixed; false if nothing found; array otherwise.
405
+ */
406
+ public function create_cart( $cart_id, $api_token ) {
407
+
408
+ $cart_url = $this->cartURL;
409
+ $args = array(
410
+ 'headers' => array( 'Content-Type' => 'application/json; charset=utf-8' ),
411
+ 'body' => json_encode( array( 'token' => $api_token, 'cart_id' => $cart_id ) )
412
+ );
413
+ $response = wp_remote_post( $cart_url, $args );
414
+ if ( is_wp_error( $response ) ) {
415
+
416
+ return ( object ) array( 'error' => $response->get_error_message() );
417
+ }
418
+ $body = wp_remote_retrieve_body( $response );
419
+ $output = json_decode( $body, true );
420
+ if ( isset( $output["response"] ) ) {
421
+
422
+ if ( $output['response'] == "ok" ) {
423
+ return true;
424
+ }
425
+ }
426
+ return false;
427
+ }
428
+
429
+ /**
430
+ * Updates cart with the API token and cart ID
431
+ * Returns false on WP errors.
432
+ * Returns true.
433
+ * @param string $api_token
434
+ * @param string $cart_id
435
+ * @return mixed; false if nothing found; array otherwise.
436
+ */
437
+ public function update_cart( $cart_id, $api_token ) {
438
+ $cart_url = $this->cartURL;
439
+ $args = array(
440
+ 'method' => 'PUT',
441
+ 'headers' => array( 'Content-Type' => 'application/json; charset=utf-8' ),
442
+ 'body' => json_encode(array( 'token' => $api_token, 'cart_id' => $cart_id ) )
443
+ );
444
+ $response = wp_remote_request( $cart_url, $args );
445
+
446
+ if ( is_wp_error( $response ) ) {
447
+
448
+ return ( object ) array( 'error' => $response->get_error_message() );
449
+ }
450
+ $body = wp_remote_retrieve_body( $response );
451
+ $output = json_decode( $body,true );
452
+ if ( isset( $output["response"] ) ) {
453
+
454
+ if ( $output['response'] == "ok" ) {
455
+
456
+ return true;
457
+ }
458
+ }
459
+ return false;
460
+ }
461
+
462
+ /* Private */
463
+
464
+ function __construct( $endpoint_url ) {
465
+
466
+ $this->endpointURL = $endpoint_url;
467
+ $this->registerURL = $endpoint_url.'/v2/register';
468
+ $this->cartURL = $endpoint_url.'/magento/v1/cart';
469
+ }
470
+
471
+ function post_with_file( $url, $data, $file_path, $filename = NULL ) {
472
+
473
+ $boundary = wp_generate_password( 24 );
474
+ $headers = array(
475
+
476
+ 'content-type' => 'multipart/form-data; boundary=' . $boundary
477
+ );
478
+ $payload = '';
479
+ // First, add the standard POST fields:
480
+ foreach ( $data as $name => $value ) {
481
+
482
+ $payload .= '--' . $boundary;
483
+ $payload .= "\r\n";
484
+ $payload .= 'Content-Disposition: form-data; name="' . $name . '"' . "\r\n\r\n";
485
+ $payload .= $value;
486
+ $payload .= "\r\n";
487
+ }
488
+ // Upload the file
489
+ if ( $file_path ) {
490
+
491
+ $payload .= '--' . $boundary;
492
+ $payload .= "\r\n";
493
+ if ( $filename ) {
494
+
495
+ $payload .= 'Content-Disposition: form-data; name="' . 'image' . '"; filename="' . basename( $filename ) . '"' . "\r\n";
496
+ } else {
497
+
498
+ $payload .= 'Content-Disposition: form-data; name="' . 'image' . '"; filename="' . basename( $file_path ) . '"' . "\r\n";
499
+ }
500
+ // $payload .= 'Content-Type: image/jpeg' . "\r\n";
501
+ $payload .= "\r\n";
502
+ $payload .= file_get_contents( $file_path );
503
+ $payload .= "\r\n";
504
+ }
505
+ $payload .= '--' . $boundary . '--';
506
+ $response = wp_remote_post( $url,
507
+ array(
508
+ 'headers' => $headers,
509
+ 'body' => $payload,
510
+ )
511
+ );
512
+ return $response;
513
+ }
514
+ }
includes/panel/push-monkey-woocommerce.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* WordPress Check */
4
+ if ( ! defined( 'ABSPATH' ) )
5
+ {
6
+ exit;
7
+ }
8
+
9
+ /**
10
+ * WooCommerce model for push monkey.
11
+ */
12
+ class Ocean_Woo_Commerce extends Ocean_Extra_Theme_Panel {
13
+
14
+ /**
15
+ * Public functions
16
+ */
17
+ public function add_actions() {
18
+
19
+ $woo_enabled = get_option( self::WOO_COMMERCE_ENABLED, false );
20
+ if ( $woo_enabled !== '1' ) {
21
+ return;
22
+ }
23
+ add_filter( 'woocommerce_cart_id', array( $this,'filter_wc_cart_id'), 10, 5 );
24
+ add_action( 'woocommerce_add_to_cart', array( $this, 'add_to_cart_hook' ) );
25
+ add_action( 'woocommerce_order_status_completed', array( $this, 'update_cart_hook' ) );
26
+ add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'action_woocommerce_checkout_update_order_meta' ), 10, 2 );
27
+ }
28
+
29
+ public function filter_wc_cart_id ( $cart_id, $product_id, $variation_id, $variation, $cart_item_data ) {
30
+
31
+ $cart_id = substr( $cart_id, 1, 9 ).strtotime( 'now' ).mt_rand( 10, 9999 );
32
+ return $cart_id;
33
+ }
34
+
35
+ public function add_to_cart_hook( $key ) {
36
+
37
+ global $woocommerce;
38
+
39
+ $pushmonkey = new Ocean_Extra_Theme_Panel();
40
+ $api_token = $pushmonkey->account_key();
41
+ $stored_key = WC()->session->get( '_push_monkey' );
42
+ if( $pushmonkey->has_account_key() && $stored_key == null ) {
43
+
44
+ $response = $pushmonkey->apiClient->create_cart( $key, $api_token );
45
+ WC()->session->set( '_push_monkey', $key );
46
+ wc_setcookie( '_push_monkey_wc_cart_id', $key, time()+60*60*24*5 );
47
+ }
48
+ return $key;
49
+ }
50
+
51
+ public function update_cart_hook( $order_id ) {
52
+
53
+ global $woocommerce;
54
+ $order = new WC_order( $order_id );
55
+ $key = get_post_meta( $order_id, '_cart_id', true );
56
+ $pushmonkey = new Ocean_Extra_Theme_Panel();
57
+ $api_token = $pushmonkey->account_key();
58
+ /**
59
+ * Update cart if key is not empty.
60
+ */
61
+ if( $key != '' ) {
62
+
63
+ $response = $pushmonkey->apiClient->update_cart( $key, $api_token );
64
+ }
65
+ }
66
+
67
+ public function action_woocommerce_checkout_update_order_meta( $order_id ) {
68
+
69
+ $key = WC()->session->get( '_push_monkey' );
70
+ update_post_meta( $order_id, '_cart_id', $key );
71
+ wc_setcookie( '_push_monkey_wc_cart_id', '', -1 );
72
+ }
73
+
74
+ /**
75
+ * Private
76
+ */
77
+ function __construct() {
78
+
79
+ $this->add_actions();
80
+ }
81
+ }
82
+ $push_monkey_wc = new Ocean_Woo_Commerce();
includes/panel/rec-plugins.php CHANGED
@@ -76,6 +76,21 @@ class Ocean_Extra_Recommended_Plugins {
76
  array(
77
  'slug' => 'ultimate-member',
78
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  );
80
 
81
  // Premium extensions
@@ -107,24 +122,6 @@ class Ocean_Extra_Recommended_Plugins {
107
  'author' => esc_html__( 'rocketgenius', 'ocean-extra' ),
108
  'author_url' => 'http://www.rocketgenius.com/',
109
  ),
110
- array(
111
- 'slug' => 'slider-revolution',
112
- 'full_url' => 'https://codecanyon.net/item/slider-revolution-responsive-wordpress-plugin/2751380?ref=OceanWP',
113
- 'name' => esc_html__( 'Slider Revolution', 'ocean-extra' ),
114
- 'description' => esc_html__( 'This plugin is an innovative, responsive WordPress Slider Plugin that displays your content the beautiful way. Even beginners will manage to create beautiful presentations.', 'ocean-extra' ),
115
- 'icons' => plugins_url( '/assets/img/rec-plugins/slider-revolution-icon.png', __FILE__ ),
116
- 'author' => esc_html__( 'ThemePunch', 'ocean-extra' ),
117
- 'author_url' => 'https://www.themepunch.com/',
118
- ),
119
- array(
120
- 'slug' => 'wpbakery-visual-composer',
121
- 'full_url' => 'https://codecanyon.net/item/visual-composer-page-builder-for-wordpress/242431?ref=OceanWP',
122
- 'name' => esc_html__( 'Visual Composer', 'ocean-extra' ),
123
- 'description' => esc_html__( 'This plugin is an easy to use drag and drop page builder that will help you to create any layout you can imagine fast and easy – no programming knowledge required!', 'ocean-extra' ),
124
- 'icons' => plugins_url( '/assets/img/rec-plugins/visual-composer-icon.png', __FILE__ ),
125
- 'author' => esc_html__( 'Michael M', 'ocean-extra' ),
126
- 'author_url' => 'http://wpbakery.com/',
127
- ),
128
  ); ?>
129
 
130
  <div id="oceanwp-rec-plugins-wrap" class="wrap">
76
  array(
77
  'slug' => 'ultimate-member',
78
  ),
79
+ array(
80
+ 'slug' => 'mailoptin',
81
+ ),
82
+ array(
83
+ 'slug' => 'smart-slider-3',
84
+ ),
85
+ array(
86
+ 'slug' => 'types',
87
+ ),
88
+ array(
89
+ 'slug' => 'widget-options',
90
+ ),
91
+ array(
92
+ 'slug' => 'jilt-for-woocommerce',
93
+ ),
94
  );
95
 
96
  // Premium extensions
122
  'author' => esc_html__( 'rocketgenius', 'ocean-extra' ),
123
  'author_url' => 'http://www.rocketgenius.com/',
124
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  ); ?>
126
 
127
  <div id="oceanwp-rec-plugins-wrap" class="wrap">
includes/panel/scripts.php CHANGED
@@ -43,6 +43,8 @@ class Ocean_Extra_Scripts_Panel {
43
 
44
  }
45
 
 
 
46
  }
47
 
48
  /**
@@ -52,316 +54,556 @@ class Ocean_Extra_Scripts_Panel {
52
  */
53
  private static function get_scripts() {
54
 
 
 
 
 
 
 
55
  $scripts = array(
56
- 'oe_customSelect_script' => array(
57
  'label' => esc_html__( 'Custom Select', 'ocean-extra' ),
58
- 'desc' => esc_html__( 'This script uses the native select box and add overlays a stylable <span> element in order to acheive the desired look.', 'ocean-extra' ),
59
- 'type' => 'js',
 
 
 
 
 
60
  ),
61
-
62
- 'oe_dropDownSearch_script' => array(
63
  'label' => esc_html__( 'Drop Down Search', 'ocean-extra' ),
64
- 'desc' => esc_html__( 'This script is for the drop down search style in your navigation.', 'ocean-extra' ),
65
- 'type' => 'js',
 
 
 
 
66
  ),
67
  'oe_headerReplaceSearch_script' => array(
68
  'label' => esc_html__( 'Header Replace Search', 'ocean-extra' ),
69
- 'desc' => esc_html__( 'This script is for the header replace search style in your navigation.', 'ocean-extra' ),
70
- 'type' => 'js',
 
 
 
 
71
  ),
72
- 'oe_overlaySearch_script' => array(
73
  'label' => esc_html__( 'Overlay Search', 'ocean-extra' ),
74
- 'desc' => esc_html__( 'This script is for the overlay search style in your navigation.', 'ocean-extra' ),
75
- 'type' => 'js',
 
 
 
 
76
  ),
77
- 'oe_fitVids_script' => array(
78
  'label' => esc_html__( 'FitVids', 'ocean-extra' ),
79
- 'desc' => esc_html__( 'This script is to achieve fluid width videos in your responsive web design, your videos looks good on all devices.', 'ocean-extra' ),
80
- 'type' => 'js',
 
 
 
 
81
  ),
82
- 'oe_fixedFooter_script' => array(
83
  'label' => esc_html__( 'Fixed Footer', 'ocean-extra' ),
84
- 'desc' => esc_html__( 'This script adds a height to your content to keep your footer at the bottom of your page, the Fixed Footer option need to be activated in the customizer&rsquo;s Footer Widgets section.', 'ocean-extra' ),
85
- 'type' => 'js',
 
 
 
86
  ),
87
- 'oe_parallax_footer_script' => array(
88
  'label' => esc_html__( 'Parallax Footer', 'ocean-extra' ),
89
- 'desc' => esc_html__( 'This script is used for the parallax footer effect.', 'ocean-extra' ),
90
- 'type' => 'js',
 
 
 
91
  ),
92
- 'oe_fullScreenMenu_script' => array(
93
  'label' => esc_html__( 'Full Screen Menu', 'ocean-extra' ),
94
- 'desc' => esc_html__( 'This script is to open your menu in overlay for the full screen header style, you can disable this function if you do not use this header style.', 'ocean-extra' ),
95
- 'type' => 'js',
 
 
 
96
  ),
97
- 'oe_headerSearchForm_script' => array(
98
  'label' => esc_html__( 'Header Search Form', 'ocean-extra' ),
99
- 'desc' => esc_html__( 'This script is to add a class to the search form to make the label disappear when text is inserted, used on some header style like medium or full screen and the full screen mobile menu style.', 'ocean-extra' ),
100
- 'type' => 'js',
 
 
 
101
  ),
102
- 'oe_infiniteScroll_script' => array(
103
  'label' => esc_html__( 'Infinite Scroll', 'ocean-extra' ),
104
- 'desc' => esc_html__( 'This script create an infinite scrolling effect, used for the blog archives page if Infinite Scroll is selected as pagination style.', 'ocean-extra' ),
105
- 'type' => 'js',
 
 
 
 
106
  ),
107
- 'oe_isotope_script' => array(
108
  'label' => esc_html__( 'Isotope', 'ocean-extra' ),
109
- 'desc' => esc_html__( 'This script is to filter & sort layouts, used for the masonry grid style of your blog and will be used in some extensions.', 'ocean-extra' ),
110
- 'type' => 'js',
 
 
 
 
111
  ),
112
- 'oe_lightbox_script' => array(
113
  'label' => esc_html__( 'Lightbox', 'ocean-extra' ),
114
- 'desc' => esc_html__( 'This script enables you to overlay your images on the current page, used for the gallerie, single product and content images.', 'ocean-extra' ),
115
- 'type' => 'js',
 
 
 
116
  ),
117
- 'oe_matchHeight_script' => array(
118
  'label' => esc_html__( 'Match Height', 'ocean-extra' ),
119
- 'desc' => esc_html__( 'This script is a responsive equal heights script makes the height of all selected elements exactly equal, used for the grid blog style.', 'ocean-extra' ),
120
- 'type' => 'js',
 
 
 
 
121
  ),
122
- 'oe_megaMenu_script' => array(
123
  'label' => esc_html__( 'Mega Menu', 'ocean-extra' ),
124
- 'desc' => esc_html__( 'This script is to create the mega menus, so if you don&rsquo;t use mega menus at all on your website, you can disable this script.', 'ocean-extra' ),
125
- 'type' => 'js',
 
 
 
 
126
  ),
127
- 'oe_navNoClick_script' => array(
128
  'label' => esc_html__( 'Nav No Click', 'ocean-extra' ),
129
- 'desc' => esc_html__( 'This script is to prevent clicking on your links, used for the "Disable link" field of your menu items.', 'ocean-extra' ),
130
- 'type' => 'js',
 
 
 
131
  ),
132
- 'oe_scrollEffect_script' => array(
133
  'label' => esc_html__( 'Scroll Effect', 'ocean-extra' ),
134
- 'desc' => esc_html__( 'This script create an animation to your anchor links, mainly used for a one page site but also for some links like the comment link on your single posts.', 'ocean-extra' ),
135
- 'type' => 'js',
 
 
 
136
  ),
137
- 'oe_scrollTop_script' => array(
138
  'label' => esc_html__( 'Scroll Top', 'ocean-extra' ),
139
- 'desc' => esc_html__( 'This script is to displays the scroll up button and brings you back to the top of your page when you click on it.', 'ocean-extra' ),
140
- 'type' => 'js',
 
 
 
141
  ),
142
- 'oe_sidr_script' => array(
143
  'label' => esc_html__( 'Sidr', 'ocean-extra' ),
144
- 'desc' => esc_html__( 'This script is for easily creating responsive side menus, used for the Sidebar mobile menu style.', 'ocean-extra' ),
145
- 'type' => 'js',
 
 
 
 
 
146
  ),
147
- 'oe_dropdown_mobile_script' => array(
148
  'label' => esc_html__( 'Drop Down Mobile', 'ocean-extra' ),
149
- 'desc' => esc_html__( 'This script is used for the Drop Down mobile menu style.', 'ocean-extra' ),
150
- 'type' => 'js',
 
 
 
 
151
  ),
152
- 'oe_fullscreen_mobile_script' => array(
153
  'label' => esc_html__( 'Full Screen Mobile', 'ocean-extra' ),
154
- 'desc' => esc_html__( 'This script is used for the Full Screen mobile menu style.', 'ocean-extra' ),
155
- 'type' => 'js',
 
 
 
 
156
  ),
157
- 'oe_slick_script' => array(
158
  'label' => esc_html__( 'Slick', 'ocean-extra' ),
159
- 'desc' => esc_html__( 'This script is used for all the carousel of your site, gallerie images, WooCommerce single product images and thumbnails.', 'ocean-extra' ),
160
- 'type' => 'js',
 
 
 
 
 
 
161
  ),
162
- 'oe_smoothScroll_script' => array(
163
  'label' => esc_html__( 'SmoothScroll', 'ocean-extra' ),
164
- 'desc' => esc_html__( 'This script adds a smooth scrolling to the browser.', 'ocean-extra' ),
165
- 'type' => 'js',
 
 
 
166
  ),
167
- 'oe_superfish_script' => array(
168
  'label' => esc_html__( 'Superfish', 'ocean-extra' ),
169
- 'desc' => esc_html__( 'This script adds usability enhancements to existing multi-level drop-down menus.', 'ocean-extra' ),
170
- 'type' => 'js',
 
 
 
 
171
  ),
172
- 'oe_wooGridList_script' => array(
173
- 'label' => esc_html__( 'WooCommerce Grid/List Buttons', 'ocean-extra' ),
174
- 'desc' => esc_html__( 'This script is to switch between grid and list view on your WooCommerce catalog products.', 'ocean-extra' ),
175
- 'type' => 'js',
 
 
 
 
176
  'condition' => OCEANWP_WOOCOMMERCE_ACTIVE,
177
  ),
178
- 'oe_wooMenuCart_script' => array(
179
- 'label' => esc_html__( 'WooCommerce Menu Cart', 'ocean-extra' ),
180
- 'desc' => esc_html__( 'This script is to display and hide your WooCommerce cart drop down in the navigation.', 'ocean-extra' ),
181
- 'type' => 'js',
 
 
 
 
182
  'condition' => OCEANWP_WOOCOMMERCE_ACTIVE,
183
  ),
184
  'oe_wooCategoriesWidget_script' => array(
185
- 'label' => esc_html__( 'WooCommerce Categories Widget', 'ocean-extra' ),
186
- 'desc' => esc_html__( 'This script adds a button to show your sub products categories when you click on it for the WooCommerce categories widget.', 'ocean-extra' ),
187
- 'type' => 'js',
 
 
 
 
188
  'condition' => OCEANWP_WOOCOMMERCE_ACTIVE,
189
  ),
190
- 'oe_wooQuantityButtons_script' => array(
191
- 'label' => esc_html__( 'WooCommerce Quantity Buttons', 'ocean-extra' ),
192
- 'desc' => esc_html__( 'This script is to add a up and down button for the quantity input number on your WooCommerce single products and cart pages.', 'ocean-extra' ),
193
- 'type' => 'js',
 
 
 
 
194
  'condition' => OCEANWP_WOOCOMMERCE_ACTIVE,
195
  ),
196
- 'oe_wooReviewsScroll_script' => array(
197
- 'label' => esc_html__( 'WooCommerce Reviews Scroll', 'ocean-extra' ),
198
- 'desc' => esc_html__( 'This script is to show and scroll down to your review tab to your WooCommerce single products when you click on the review link.', 'ocean-extra' ),
199
- 'type' => 'js',
 
 
 
200
  'condition' => OCEANWP_WOOCOMMERCE_ACTIVE,
201
  ),
202
 
203
- 'oe_fontAwesome_style' => array(
 
204
  'label' => esc_html__( 'Font Awesome Icons', 'ocean-extra' ),
205
- 'desc' => esc_html__( 'This style is all the css for the font awesome icons.', 'ocean-extra' ),
206
- 'type' => 'css',
 
207
  ),
208
- 'oe_simpleLineIcons_style' => array(
209
  'label' => esc_html__( 'Simple Line Icons', 'ocean-extra' ),
210
- 'desc' => esc_html__( 'This style is all the css for the simple line icons.', 'ocean-extra' ),
211
- 'type' => 'css',
 
212
  ),
213
- 'oe_topBar_style' => array(
214
  'label' => esc_html__( 'Top Bar', 'ocean-extra' ),
215
- 'desc' => esc_html__( 'This style is all the css for the top bar.', 'ocean-extra' ),
216
- 'type' => 'css',
 
 
 
 
 
 
217
  ),
218
- 'oe_header_style' => array(
219
  'label' => esc_html__( 'Header', 'ocean-extra' ),
220
- 'desc' => esc_html__( 'This style is all the css for the header.', 'ocean-extra' ),
221
- 'type' => 'css',
 
 
 
222
  ),
223
- 'oe_transparentHeader_style' => array(
224
  'label' => esc_html__( 'Transparent Header', 'ocean-extra' ),
225
- 'desc' => esc_html__( 'This style is all the css for the transparent header style.', 'ocean-extra' ),
226
- 'type' => 'css',
 
 
 
227
  ),
228
- 'oe_topHeader_style' => array(
229
  'label' => esc_html__( 'Top Header', 'ocean-extra' ),
230
- 'desc' => esc_html__( 'This style is all the css for the top header style.', 'ocean-extra' ),
231
- 'type' => 'css',
 
 
 
232
  ),
233
- 'oe_fullScreenHeader_style' => array(
234
  'label' => esc_html__( 'Full Screen Header', 'ocean-extra' ),
235
- 'desc' => esc_html__( 'This style is all the css for the full screen header style.', 'ocean-extra' ),
236
- 'type' => 'css',
 
 
 
237
  ),
238
- 'oe_centerHeader_style' => array(
239
  'label' => esc_html__( 'Center Header', 'ocean-extra' ),
240
- 'desc' => esc_html__( 'This style is all the css for the center header style.', 'ocean-extra' ),
241
- 'type' => 'css',
 
 
 
242
  ),
243
- 'oe_mediumHeader_style' => array(
244
  'label' => esc_html__( 'Medium Header', 'ocean-extra' ),
245
- 'desc' => esc_html__( 'This style is all the css for the medium header style.', 'ocean-extra' ),
246
- 'type' => 'css',
 
 
 
247
  ),
248
- 'oe_verticalHeader_style' => array(
249
  'label' => esc_html__( 'Vertical Header', 'ocean-extra' ),
250
- 'desc' => esc_html__( 'This style is all the css for the vertical header style.', 'ocean-extra' ),
251
- 'type' => 'css',
 
 
 
252
  ),
253
- 'oe_customHeader_style' => array(
254
  'label' => esc_html__( 'Custom Header', 'ocean-extra' ),
255
- 'desc' => esc_html__( 'This style is all the css for the custom header style.', 'ocean-extra' ),
256
- 'type' => 'css',
 
 
 
257
  ),
258
- 'oe_navigation_style' => array(
259
  'label' => esc_html__( 'Navigation', 'ocean-extra' ),
260
- 'desc' => esc_html__( 'This style is all the css for the navigation of the principal menu.', 'ocean-extra' ),
261
- 'type' => 'css',
 
 
 
262
  ),
263
- 'oe_menu_links_effect_style' => array(
264
  'label' => esc_html__( 'Links Effect', 'ocean-extra' ),
265
- 'desc' => esc_html__( 'This style is all the css for the links effect of the principal menu.', 'ocean-extra' ),
266
- 'type' => 'css',
 
 
 
267
  ),
268
- 'oe_socialMenu_style' => array(
269
  'label' => esc_html__( 'Social Icons Menu', 'ocean-extra' ),
270
- 'desc' => esc_html__( 'This style is all the css for the social icons in the navigation of the header.', 'ocean-extra' ),
271
- 'type' => 'css',
 
 
 
272
  ),
273
- 'oe_pageHeader_style' => array(
274
  'label' => esc_html__( 'Page Header', 'ocean-extra' ),
275
- 'desc' => esc_html__( 'This style is all the css for the page header (title).', 'ocean-extra' ),
276
- 'type' => 'css',
 
 
 
277
  ),
278
- 'oe_blog_style' => array(
279
  'label' => esc_html__( 'Blog', 'ocean-extra' ),
280
- 'desc' => esc_html__( 'This style is all the css for the blog and post formats.', 'ocean-extra' ),
281
- 'type' => 'css',
 
 
 
 
 
 
 
 
 
 
 
282
  ),
283
- 'oe_blogLarge_style' => array(
284
  'label' => esc_html__( 'Blog Large Style', 'ocean-extra' ),
285
- 'desc' => esc_html__( 'This style is all the css for the blog large style.', 'ocean-extra' ),
286
- 'type' => 'css',
 
 
 
287
  ),
288
- 'oe_blogGrid_style' => array(
289
  'label' => esc_html__( 'Blog Grid Style', 'ocean-extra' ),
290
- 'desc' => esc_html__( 'This style is all the css for the blog grid style.', 'ocean-extra' ),
291
- 'type' => 'css',
 
 
 
292
  ),
293
- 'oe_blogThumbnail_style' => array(
294
  'label' => esc_html__( 'Blog Thumbnail Style', 'ocean-extra' ),
295
- 'desc' => esc_html__( 'This style is all the css for the blog thumbnail style.', 'ocean-extra' ),
296
- 'type' => 'css',
 
 
 
297
  ),
298
- 'oe_singlePostPrevNext_style' => array(
299
  'label' => esc_html__( 'Single Post Next/Prev Pagination', 'ocean-extra' ),
300
- 'desc' => esc_html__( 'This style is all the css for the next/previous pagination on single post.', 'ocean-extra' ),
301
- 'type' => 'css',
 
 
 
302
  ),
303
- 'oe_singlePostAuthorBio_style' => array(
304
  'label' => esc_html__( 'Single Post Author Box', 'ocean-extra' ),
305
- 'desc' => esc_html__( 'This style is all the css for the author box on single post.', 'ocean-extra' ),
306
- 'type' => 'css',
 
 
 
307
  ),
308
  'oe_singlePostRelatedPosts_style' => array(
309
  'label' => esc_html__( 'Single Post Related Posts', 'ocean-extra' ),
310
- 'desc' => esc_html__( 'This style is all the css for the related posts on single post.', 'ocean-extra' ),
311
- 'type' => 'css',
 
 
 
312
  ),
313
- 'oe_sidebar_style' => array(
314
  'label' => esc_html__( 'Sidebar', 'ocean-extra' ),
315
- 'desc' => esc_html__( 'This style is all the css for the sidebar.', 'ocean-extra' ),
316
- 'type' => 'css',
 
 
 
317
  ),
318
- 'oe_comment_style' => array(
319
  'label' => esc_html__( 'Comment', 'ocean-extra' ),
320
- 'desc' => esc_html__( 'This style is all the css for the comments.', 'ocean-extra' ),
321
- 'type' => 'css',
 
 
 
322
  ),
323
- 'oe_pagination_style' => array(
324
  'label' => esc_html__( 'Pagination', 'ocean-extra' ),
325
- 'desc' => esc_html__( 'This style is all the css for the pagination.', 'ocean-extra' ),
326
- 'type' => 'css',
 
 
 
327
  ),
328
- 'oe_footerWidgets_style' => array(
329
  'label' => esc_html__( 'Footer Widgets', 'ocean-extra' ),
330
- 'desc' => esc_html__( 'This style is all the css for the footer widgets area.', 'ocean-extra' ),
331
- 'type' => 'css',
 
 
 
332
  ),
333
- 'oe_footerBottom_style' => array(
334
  'label' => esc_html__( 'Footer Bottom', 'ocean-extra' ),
335
- 'desc' => esc_html__( 'This style is all the css for the footer bottom area.', 'ocean-extra' ),
336
- 'type' => 'css',
 
 
 
337
  ),
338
- 'oe_searchResults_style' => array(
339
  'label' => esc_html__( 'Search Results', 'ocean-extra' ),
340
- 'desc' => esc_html__( 'This style is all the css for the search results page.', 'ocean-extra' ),
341
- 'type' => 'css',
 
 
 
342
  ),
343
- 'oe_scrollTop_style' => array(
344
  'label' => esc_html__( 'Scroll Top Button', 'ocean-extra' ),
345
- 'desc' => esc_html__( 'This style is all the css for the scroll top button.', 'ocean-extra' ),
346
- 'type' => 'css',
 
 
 
347
  ),
348
- 'oe_errorPage_style' => array(
349
  'label' => esc_html__( '404 Page', 'ocean-extra' ),
350
- 'desc' => esc_html__( 'This style is all the css for the 404 error page.', 'ocean-extra' ),
351
- 'type' => 'css',
 
 
 
352
  ),
353
- 'oe_responsive_style' => array(
354
  'label' => esc_html__( 'Responsive', 'ocean-extra' ),
355
- 'desc' => esc_html__( 'This style is all the css for the responsive view.', 'ocean-extra' ),
356
- 'type' => 'css',
 
 
 
357
  ),
358
  );
359
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  // Apply filters and return
361
  return apply_filters( 'oe_theme_scripts', $scripts );
362
 
363
  }
364
 
 
 
 
 
 
 
 
 
 
 
365
  /**
366
  * Add sub menu page
367
  *
43
 
44
  }
45
 
46
+ add_action( 'admin_init', array( $this, 'update_scripts' ), 10, 2 );
47
+
48
  }
49
 
50
  /**
54
  */
55
  private static function get_scripts() {
56
 
57
+ $tDir = get_template_directory() . '/assets/js/';
58
+
59
+ // Get css directory uri
60
+ $tSass = get_template_directory() . '/sass/';
61
+ $tDirSass = $tSass . 'components/';
62
+
63
  $scripts = array(
64
+ 'oe_customSelect_script' => array(
65
  'label' => esc_html__( 'Custom Select', 'ocean-extra' ),
66
+ 'desc' => esc_html__( 'This script uses the native select box and add overlays a stylable <span> element in order to acheive the desired look.', 'ocean-extra' ),
67
+ 'type' => 'js',
68
+ 'files' => array(
69
+ $tDir . 'devs/customselect.js',
70
+ $tDir . 'core/customSelect.js',
71
+ $tDirSass . '_custom-selects.scss',
72
+ ),
73
  ),
74
+ 'oe_dropDownSearch_script' => array(
 
75
  'label' => esc_html__( 'Drop Down Search', 'ocean-extra' ),
76
+ 'desc' => esc_html__( 'This script is for the drop down search style in your navigation.', 'ocean-extra' ),
77
+ 'type' => 'js',
78
+ 'files' => array(
79
+ $tDir . 'core/dropDownSearch.js',
80
+ $tDirSass . 'header/_search-dropdown.scss',
81
+ ),
82
  ),
83
  'oe_headerReplaceSearch_script' => array(
84
  'label' => esc_html__( 'Header Replace Search', 'ocean-extra' ),
85
+ 'desc' => esc_html__( 'This script is for the header replace search style in your navigation.', 'ocean-extra' ),
86
+ 'type' => 'js',
87
+ 'files' => array(
88
+ $tDir . 'core/headerReplaceSearch.js',
89
+ $tDirSass . 'header/_search-replace.scss',
90
+ ),
91
  ),
92
+ 'oe_overlaySearch_script' => array(
93
  'label' => esc_html__( 'Overlay Search', 'ocean-extra' ),
94
+ 'desc' => esc_html__( 'This script is for the overlay search style in your navigation.', 'ocean-extra' ),
95
+ 'type' => 'js',
96
+ 'files' => array(
97
+ $tDir . 'core/overlaySearch.js',
98
+ $tDirSass . 'header/_search-overlay.scss',
99
+ ),
100
  ),
101
+ 'oe_fitVids_script' => array(
102
  'label' => esc_html__( 'FitVids', 'ocean-extra' ),
103
+ 'desc' => esc_html__( 'This script is to achieve fluid width videos in your responsive web design, your videos looks good on all devices.', 'ocean-extra' ),
104
+ 'type' => 'js',
105
+ 'files' => array(
106
+ $tDir . 'devs/fitvids.js',
107
+ $tDir . 'core/fitVids.js',
108
+ ),
109
  ),
110
+ 'oe_fixedFooter_script' => array(
111
  'label' => esc_html__( 'Fixed Footer', 'ocean-extra' ),
112
+ 'desc' => esc_html__( 'This script adds a height to your content to keep your footer at the bottom of your page, the Fixed Footer option need to be activated in the customizer&rsquo;s Footer Widgets section.', 'ocean-extra' ),
113
+ 'type' => 'js',
114
+ 'files' => array(
115
+ $tDir . 'core/fixedFooter.js',
116
+ ),
117
  ),
118
+ 'oe_parallax_footer_script' => array(
119
  'label' => esc_html__( 'Parallax Footer', 'ocean-extra' ),
120
+ 'desc' => esc_html__( 'This script is used for the parallax footer effect.', 'ocean-extra' ),
121
+ 'type' => 'js',
122
+ 'files' => array(
123
+ $tDir . 'core/parallaxFooter.js',
124
+ ),
125
  ),
126
+ 'oe_fullScreenMenu_script' => array(
127
  'label' => esc_html__( 'Full Screen Menu', 'ocean-extra' ),
128
+ 'desc' => esc_html__( 'This script is to open your menu in overlay for the full screen header style, you can disable this function if you do not use this header style.', 'ocean-extra' ),
129
+ 'type' => 'js',
130
+ 'files' => array(
131
+ $tDir . 'core/fullScreenMenu.js',
132
+ ),
133
  ),
134
+ 'oe_headerSearchForm_script' => array(
135
  'label' => esc_html__( 'Header Search Form', 'ocean-extra' ),
136
+ 'desc' => esc_html__( 'This script is to add a class to the search form to make the label disappear when text is inserted, used on some header style like medium or full screen and the full screen mobile menu style.', 'ocean-extra' ),
137
+ 'type' => 'js',
138
+ 'files' => array(
139
+ $tDir . 'core/headerSearchForm.js',
140
+ ),
141
  ),
142
+ 'oe_infiniteScroll_script' => array(
143
  'label' => esc_html__( 'Infinite Scroll', 'ocean-extra' ),
144
+ 'desc' => esc_html__( 'This script create an infinite scrolling effect, used for the blog archives page if Infinite Scroll is selected as pagination style.', 'ocean-extra' ),
145
+ 'type' => 'js',
146
+ 'files' => array(
147
+ $tDir . 'third/infinitescroll.js',
148
+ ),
149
+
150
  ),
151
+ 'oe_isotope_script' => array(
152
  'label' => esc_html__( 'Isotope', 'ocean-extra' ),
153
+ 'desc' => esc_html__( 'This script is to filter & sort layouts, used for the masonry grid style of your blog and will be used in some extensions.', 'ocean-extra' ),
154
+ 'type' => 'js',
155
+ 'files' => array(
156
+ $tDir . 'devs/isotope.js',
157
+ $tDir . 'core/isotope.js',
158
+ ),
159
  ),
160
+ 'oe_lightbox_script' => array(
161
  'label' => esc_html__( 'Lightbox', 'ocean-extra' ),
162
+ 'desc' => esc_html__( 'This script enables you to overlay your images on the current page, used for the gallerie, single product and content images.', 'ocean-extra' ),
163
+ 'type' => 'js',
164
+ 'files' => array(
165
+ $tDir . 'third/lightbox.min.js',
166
+ ),
167
  ),
168
+ 'oe_matchHeight_script' => array(
169
  'label' => esc_html__( 'Match Height', 'ocean-extra' ),
170
+ 'desc' => esc_html__( 'This script is a responsive equal heights script makes the height of all selected elements exactly equal, used for the grid blog style.', 'ocean-extra' ),
171
+ 'type' => 'js',
172
+ 'files' => array(
173
+ $tDir . 'devs/matchHeight.js',
174
+ $tDir . 'core/matchHeight.js',
175
+ ),
176
  ),
177
+ 'oe_megaMenu_script' => array(
178
  'label' => esc_html__( 'Mega Menu', 'ocean-extra' ),
179
+ 'desc' => esc_html__( 'This script is to create the mega menus, so if you don&rsquo;t use mega menus at all on your website, you can disable this script.', 'ocean-extra' ),
180
+ 'type' => 'js',
181
+ 'files' => array(
182
+ $tDir . 'core/megaMenu.js',
183
+ $tDirSass . 'header/_megamenu.scss',
184
+ ),
185
  ),
186
+ 'oe_navNoClick_script' => array(
187
  'label' => esc_html__( 'Nav No Click', 'ocean-extra' ),
188
+ 'desc' => esc_html__( 'This script is to prevent clicking on your links, used for the "Disable link" field of your menu items.', 'ocean-extra' ),
189
+ 'type' => 'js',
190
+ 'files' => array(
191
+ $tDir . 'core/navNoClick.js',
192
+ ),
193
  ),
194
+ 'oe_scrollEffect_script' => array(
195
  'label' => esc_html__( 'Scroll Effect', 'ocean-extra' ),
196
+ 'desc' => esc_html__( 'This script create an animation to your anchor links, mainly used for a one page site but also for some links like the comment link on your single posts.', 'ocean-extra' ),
197
+ 'type' => 'js',
198
+ 'files' => array(
199
+ $tDir . 'core/scrollEffect.js',
200
+ ),
201
  ),
202
+ 'oe_scrollTop_script' => array(
203
  'label' => esc_html__( 'Scroll Top', 'ocean-extra' ),
204
+ 'desc' => esc_html__( 'This script is to displays the scroll up button and brings you back to the top of your page when you click on it.', 'ocean-extra' ),
205
+ 'type' => 'js',
206
+ 'files' => array(
207
+ $tDir . 'core/scrollTop.js',
208
+ ),
209
  ),
210
+ 'oe_sidr_script' => array(
211
  'label' => esc_html__( 'Sidr', 'ocean-extra' ),
212
+ 'desc' => esc_html__( 'This script is for easily creating responsive side menus, used for the Sidebar mobile menu style.', 'ocean-extra' ),
213
+ 'type' => 'js',
214
+ 'files' => array(
215
+ $tDir . 'devs/sidr.js',
216
+ $tDir . 'core/sidr.js',
217
+ $tDirSass . 'plugins/_sidr.scss',
218
+ ),
219
  ),
220
+ 'oe_dropdown_mobile_script' => array(
221
  'label' => esc_html__( 'Drop Down Mobile', 'ocean-extra' ),
222
+ 'desc' => esc_html__( 'This script is used for the Drop Down mobile menu style.', 'ocean-extra' ),
223
+ 'type' => 'js',
224
+ 'files' => array(
225
+ $tDir . 'core/dropDownMobile.js',
226
+ $tDirSass . 'mobile/_dropdown-mobile.scss',
227
+ ),
228
  ),
229
+ 'oe_fullscreen_mobile_script' => array(
230
  'label' => esc_html__( 'Full Screen Mobile', 'ocean-extra' ),
231
+ 'desc' => esc_html__( 'This script is used for the Full Screen mobile menu style.', 'ocean-extra' ),
232
+ 'type' => 'js',
233
+ 'files' => array(
234
+ $tDir . 'core/fullScreenMobile.js',
235
+ $tDirSass . 'mobile/_fullscreen-mobile.scss',
236
+ ),
237
  ),
238
+ 'oe_slick_script' => array(
239
  'label' => esc_html__( 'Slick', 'ocean-extra' ),
240
+ 'desc' => esc_html__( 'This script is used for all the carousel of your site, gallerie images, WooCommerce single product images and thumbnails.', 'ocean-extra' ),
241
+ 'type' => 'js',
242
+ 'files' => array(
243
+ $tDir . 'devs/slick.js',
244
+ $tDir . 'core/slick.js',
245
+ $tDirSass . 'plugins/_slick.scss',
246
+ $tDirSass . 'plugins/_slick-theme.scss',
247
+ ),
248
  ),
249
+ 'oe_smoothScroll_script' => array(
250
  'label' => esc_html__( 'SmoothScroll', 'ocean-extra' ),
251
+ 'desc' => esc_html__( 'This script adds a smooth scrolling to the browser.', 'ocean-extra' ),
252
+ 'type' => 'js',
253
+ 'files' => array(
254
+ $tDir . 'devs/smoothscroll.js',
255
+ ),
256
  ),
257
+ 'oe_superfish_script' => array(
258
  'label' => esc_html__( 'Superfish', 'ocean-extra' ),
259
+ 'desc' => esc_html__( 'This script adds usability enhancements to existing multi-level drop-down menus.', 'ocean-extra' ),
260
+ 'type' => 'js',
261
+ 'files' => array(
262
+ $tDir . 'devs/superfish.js',
263
+ $tDir . 'core/superfish.js',
264
+ ),
265
  ),
266
+ 'oe_wooGridList_script' => array(
267
+ 'label' => esc_html__( 'WooCommerce Grid/List Buttons', 'ocean-extra' ),
268
+ 'desc' => esc_html__( 'This script is to switch between grid and list view on your WooCommerce catalog products.', 'ocean-extra' ),
269
+ 'type' => 'js',
270
+ 'files' => array(
271
+ $tDir . 'third/woo/devs/wooGridList.js',
272
+ $tDir . 'devs/cookie.js',
273
+ ),
274
  'condition' => OCEANWP_WOOCOMMERCE_ACTIVE,
275
  ),
276
+ 'oe_wooMenuCart_script' => array(
277
+ 'label' => esc_html__( 'WooCommerce Menu Cart', 'ocean-extra' ),
278
+ 'desc' => esc_html__( 'This script is to display and hide your WooCommerce cart drop down in the navigation.', 'ocean-extra' ),
279
+ 'type' => 'js',
280
+ 'files' => array(
281
+ $tDir . 'third/woo/devs/wooMenuCart.js',
282
+ $tSass . 'woo/_woo-cart.scss',
283
+ ),
284
  'condition' => OCEANWP_WOOCOMMERCE_ACTIVE,
285
  ),
286
  'oe_wooCategoriesWidget_script' => array(
287
+ 'label' => esc_html__( 'WooCommerce Categories Widget', 'ocean-extra' ),
288
+ 'desc' => esc_html__( 'This script adds a button to show your sub products categories when you click on it for the WooCommerce categories widget.', 'ocean-extra' ),
289
+ 'type' => 'js',
290
+ 'files' => array(
291
+ $tDir . 'third/woo/devs/wooCategoriesWidget.js',
292
+ $tSass . 'woo/_woo-cat-widget.scss',
293
+ ),
294
  'condition' => OCEANWP_WOOCOMMERCE_ACTIVE,
295
  ),
296
+ 'oe_wooQuantityButtons_script' => array(
297
+ 'label' => esc_html__( 'WooCommerce Quantity Buttons', 'ocean-extra' ),
298
+ 'desc' => esc_html__( 'This script is to add a up and down button for the quantity input number on your WooCommerce single products and cart pages.', 'ocean-extra' ),
299
+ 'type' => 'js',
300
+ 'files' => array(
301
+ $tDir . 'third/woo/devs/wooQuantityButtons.js',
302
+ $tSass . 'woo/_woo-quantity.scss',
303
+ ),
304
  'condition' => OCEANWP_WOOCOMMERCE_ACTIVE,
305
  ),
306
+ 'oe_wooReviewsScroll_script' => array(
307
+ 'label' => esc_html__( 'WooCommerce Reviews Scroll', 'ocean-extra' ),
308
+ 'desc' => esc_html__( 'This script is to show and scroll down to your review tab to your WooCommerce single products when you click on the review link.', 'ocean-extra' ),
309
+ 'type' => 'js',
310
+ 'files' => array(
311
+ $tDir . 'third/woo/devs/wooReviewsScroll.js',
312
+ ),
313
  'condition' => OCEANWP_WOOCOMMERCE_ACTIVE,
314
  ),
315
 
316
+ // type css
317
+ 'oe_fontAwesome_style' => array(
318
  'label' => esc_html__( 'Font Awesome Icons', 'ocean-extra' ),
319
+ 'desc' => esc_html__( 'This style is all the css for the font awesome icons.', 'ocean-extra' ),
320
+ 'type' => 'css',
321
+ 'files' => array(),
322
  ),
323
+ 'oe_simpleLineIcons_style' => array(
324
  'label' => esc_html__( 'Simple Line Icons', 'ocean-extra' ),
325
+ 'desc' => esc_html__( 'This style is all the css for the simple line icons.', 'ocean-extra' ),
326
+ 'type' => 'css',
327
+ 'files' => array(),
328
  ),
329
+ 'oe_topBar_style' => array(
330
  'label' => esc_html__( 'Top Bar', 'ocean-extra' ),
331
+ 'desc' => esc_html__( 'This style is all the css for the top bar.', 'ocean-extra' ),
332
+ 'type' => 'css',
333
+ 'files' => array(
334
+ $tDirSass . 'topbar/_topbar.scss',
335
+ $tDirSass . 'topbar/_topbar-content.scss',
336
+ $tDirSass . 'topbar/_topbar-menu.scss',
337
+ $tDirSass . 'topbar/_topbar-social.scss',
338
+ ),
339
  ),
340
+ 'oe_header_style' => array(
341
  'label' => esc_html__( 'Header', 'ocean-extra' ),
342
+ 'desc' => esc_html__( 'This style is all the css for the header.', 'ocean-extra' ),
343
+ 'type' => 'css',
344
+ 'files' => array(
345
+ $tDirSass . 'header/_header.scss',
346
+ ),
347
  ),
348
+ 'oe_transparentHeader_style' => array(
349
  'label' => esc_html__( 'Transparent Header', 'ocean-extra' ),
350
+ 'desc' => esc_html__( 'This style is all the css for the transparent header style.', 'ocean-extra' ),
351
+ 'type' => 'css',
352
+ 'files' => array(
353
+ $tDirSass . 'header/_header-transparent.scss',
354
+ ),
355
  ),
356
+ 'oe_topHeader_style' => array(
357
  'label' => esc_html__( 'Top Header', 'ocean-extra' ),
358
+ 'desc' => esc_html__( 'This style is all the css for the top header style.', 'ocean-extra' ),
359
+ 'type' => 'css',
360
+ 'files' => array(
361
+ $tDirSass . 'header/_header-top.scss',
362
+ ),
363
  ),
364
+ 'oe_fullScreenHeader_style' => array(
365
  'label' => esc_html__( 'Full Screen Header', 'ocean-extra' ),
366
+ 'desc' => esc_html__( 'This style is all the css for the full screen header style.', 'ocean-extra' ),
367
+ 'type' => 'css',
368
+ 'files' => array(
369
+ $tDirSass . 'header/_header-fullscreen.scss',
370
+ ),
371
  ),
372
+ 'oe_centerHeader_style' => array(
373
  'label' => esc_html__( 'Center Header', 'ocean-extra' ),
374
+ 'desc' => esc_html__( 'This style is all the css for the center header style.', 'ocean-extra' ),
375
+ 'type' => 'css',
376
+ 'files' => array(
377
+ $tDirSass . 'header/_header-center.scss',
378
+ ),
379
  ),
380
+ 'oe_mediumHeader_style' => array(
381
  'label' => esc_html__( 'Medium Header', 'ocean-extra' ),
382
+ 'desc' => esc_html__( 'This style is all the css for the medium header style.', 'ocean-extra' ),
383
+ 'type' => 'css',
384
+ 'files' => array(
385
+ $tDirSass . 'header/_header-medium.scss',
386
+ ),
387
  ),
388
+ 'oe_verticalHeader_style' => array(
389
  'label' => esc_html__( 'Vertical Header', 'ocean-extra' ),
390
+ 'desc' => esc_html__( 'This style is all the css for the vertical header style.', 'ocean-extra' ),
391
+ 'type' => 'css',
392
+ 'files' => array(
393
+ $tDirSass . 'header/_header-vertical.scss',
394
+ ),
395
  ),
396
+ 'oe_customHeader_style' => array(
397
  'label' => esc_html__( 'Custom Header', 'ocean-extra' ),
398
+ 'desc' => esc_html__( 'This style is all the css for the custom header style.', 'ocean-extra' ),
399
+ 'type' => 'css',
400
+ 'files' => array(
401
+ $tDirSass . 'header/_header-custom.scss',
402
+ )
403
  ),
404
+ 'oe_navigation_style' => array(
405
  'label' => esc_html__( 'Navigation', 'ocean-extra' ),
406
+ 'desc' => esc_html__( 'This style is all the css for the navigation of the principal menu.', 'ocean-extra' ),
407
+ 'type' => 'css',
408
+ 'files' => array(
409
+ $tDirSass . 'header/_navigation.scss',
410
+ ),
411
  ),
412
+ 'oe_menu_links_effect_style' => array(
413
  'label' => esc_html__( 'Links Effect', 'ocean-extra' ),
414
+ 'desc' => esc_html__( 'This style is all the css for the links effect of the principal menu.', 'ocean-extra' ),
415
+ 'type' => 'css',
416
+ 'files' => array(
417
+ $tDirSass . 'header/_links_effect.scss',
418
+ ),
419
  ),
420
+ 'oe_socialMenu_style' => array(
421
  'label' => esc_html__( 'Social Icons Menu', 'ocean-extra' ),
422
+ 'desc' => esc_html__( 'This style is all the css for the social icons in the navigation of the header.', 'ocean-extra' ),
423
+ 'type' => 'css',
424
+ 'files' => array(
425
+ $tDirSass . 'header/_socialmenu.scss',
426
+ )
427
  ),
428
+ 'oe_pageHeader_style' => array(
429
  'label' => esc_html__( 'Page Header', 'ocean-extra' ),
430
+ 'desc' => esc_html__( 'This style is all the css for the page header (title).', 'ocean-extra' ),
431
+ 'type' => 'css',
432
+ 'files' => array(
433
+ $tDirSass . '_page-header.scss',
434
+ ),
435
  ),
436
+ 'oe_blog_style' => array(
437
  'label' => esc_html__( 'Blog', 'ocean-extra' ),
438
+ 'desc' => esc_html__( 'This style is all the css for the blog and post formats.', 'ocean-extra' ),
439
+ 'type' => 'css',
440
+ 'files' => array(
441
+ $tDirSass . 'blog/_blog-entries.scss',
442
+ $tDirSass . 'blog/_blog-meta.scss',
443
+ $tDirSass . 'blog/_gallery-format.scss',
444
+ $tDirSass . 'blog/_link-format.scss',
445
+ $tDirSass . 'blog/_quote-format.scss',
446
+ $tDirSass . 'blog/_video-audio-format.scss',
447
+ $tDirSass . 'blog/_single-content.scss',
448
+ $tDirSass . 'blog/_single-post.scss',
449
+ $tDirSass . 'blog/_single-tags.scss',
450
+ ),
451
  ),
452
+ 'oe_blogLarge_style' => array(
453
  'label' => esc_html__( 'Blog Large Style', 'ocean-extra' ),
454
+ 'desc' => esc_html__( 'This style is all the css for the blog large style.', 'ocean-extra' ),
455
+ 'type' => 'css',
456
+ 'files' => array(
457
+ $tDirSass . 'blog/_blog-large.scss',
458
+ ),
459
  ),
460
+ 'oe_blogGrid_style' => array(
461
  'label' => esc_html__( 'Blog Grid Style', 'ocean-extra' ),
462
+ 'desc' => esc_html__( 'This style is all the css for the blog grid style.', 'ocean-extra' ),
463
+ 'type' => 'css',
464
+ 'files' => array(
465
+ $tDirSass . 'blog/_blog-grid.scss',
466
+ ),
467
  ),
468
+ 'oe_blogThumbnail_style' => array(
469
  'label' => esc_html__( 'Blog Thumbnail Style', 'ocean-extra' ),
470
+ 'desc' => esc_html__( 'This style is all the css for the blog thumbnail style.', 'ocean-extra' ),
471
+ 'type' => 'css',
472
+ 'files' => array(
473
+ $tDirSass . 'blog/_blog-thumbnail.scss',
474
+ ),
475
  ),
476
+ 'oe_singlePostPrevNext_style' => array(
477
  'label' => esc_html__( 'Single Post Next/Prev Pagination', 'ocean-extra' ),
478
+ 'desc' => esc_html__( 'This style is all the css for the next/previous pagination on single post.', 'ocean-extra' ),
479
+ 'type' => 'css',
480
+ 'files' => array(
481
+ $tDirSass . 'blog/_single-next-prev.scss',
482
+ ),
483
  ),
484
+ 'oe_singlePostAuthorBio_style' => array(
485
  'label' => esc_html__( 'Single Post Author Box', 'ocean-extra' ),
486
+ 'desc' => esc_html__( 'This style is all the css for the author box on single post.', 'ocean-extra' ),
487
+ 'type' => 'css',
488
+ 'files' => array(
489
+ $tDirSass . 'blog/_single-author-bio.scss',
490
+ ),
491
  ),
492
  'oe_singlePostRelatedPosts_style' => array(
493
  'label' => esc_html__( 'Single Post Related Posts', 'ocean-extra' ),
494
+ 'desc' => esc_html__( 'This style is all the css for the related posts on single post.', 'ocean-extra' ),
495
+ 'type' => 'css',
496
+ 'files' => array(
497
+ $tDirSass . 'blog/_single-related-posts.scss',
498
+ ),
499
  ),
500
+ 'oe_sidebar_style' => array(
501
  'label' => esc_html__( 'Sidebar', 'ocean-extra' ),
502
+ 'desc' => esc_html__( 'This style is all the css for the sidebar.', 'ocean-extra' ),
503
+ 'type' => 'css',
504
+ 'files' => array(
505
+ $tDirSass . 'sidebar/_sidebar.scss',
506
+ ),
507
  ),
508
+ 'oe_comment_style' => array(
509
  'label' => esc_html__( 'Comment', 'ocean-extra' ),
510
+ 'desc' => esc_html__( 'This style is all the css for the comments.', 'ocean-extra' ),
511
+ 'type' => 'css',
512
+ 'files' => array(
513
+ $tDirSass . '_comments.scss',
514
+ ),
515
  ),
516
+ 'oe_pagination_style' => array(
517
  'label' => esc_html__( 'Pagination', 'ocean-extra' ),
518
+ 'desc' => esc_html__( 'This style is all the css for the pagination.', 'ocean-extra' ),
519
+ 'type' => 'css',
520
+ 'files' => array(
521
+ $tDirSass . '_pagination.scss',
522
+ ),
523
  ),
524
+ 'oe_footerWidgets_style' => array(
525
  'label' => esc_html__( 'Footer Widgets', 'ocean-extra' ),
526
+ 'desc' => esc_html__( 'This style is all the css for the footer widgets area.', 'ocean-extra' ),
527
+ 'type' => 'css',
528
+ 'files' => array(
529
+ $tDirSass . 'footer/_footer-widgets.scss',
530
+ ),
531
  ),
532
+ 'oe_footerBottom_style' => array(
533
  'label' => esc_html__( 'Footer Bottom', 'ocean-extra' ),
534
+ 'desc' => esc_html__( 'This style is all the css for the footer bottom area.', 'ocean-extra' ),
535
+ 'type' => 'css',
536
+ 'files' => array(
537
+ $tDirSass . 'footer/_footer-bottom.scss',
538
+ ),
539
  ),
540
+ 'oe_searchResults_style' => array(
541
  'label' => esc_html__( 'Search Results', 'ocean-extra' ),
542
+ 'desc' => esc_html__( 'This style is all the css for the search results page.', 'ocean-extra' ),
543
+ 'type' => 'css',
544
+ 'files' => array(
545
+ $tDirSass . '_search.scss',
546
+ ),
547
  ),
548
+ 'oe_scrollTop_style' => array(
549
  'label' => esc_html__( 'Scroll Top Button', 'ocean-extra' ),
550
+ 'desc' => esc_html__( 'This style is all the css for the scroll top button.', 'ocean-extra' ),
551
+ 'type' => 'css',
552
+ 'files' => array(
553
+ $tDirSass . 'footer/_scroll-top.scss',
554
+ ),
555
  ),
556
+ 'oe_errorPage_style' => array(
557
  'label' => esc_html__( '404 Page', 'ocean-extra' ),
558
+ 'desc' => esc_html__( 'This style is all the css for the 404 error page.', 'ocean-extra' ),
559
+ 'type' => 'css',
560
+ 'files' => array(
561
+ $tDirSass . '_404.scss',
562
+ ),
563
  ),
564
+ 'oe_responsive_style' => array(
565
  'label' => esc_html__( 'Responsive', 'ocean-extra' ),
566
+ 'desc' => esc_html__( 'This style is all the css for the responsive view.', 'ocean-extra' ),
567
+ 'type' => 'css',
568
+ 'files' => array(
569
+ $tDirSass . '_responsive.scss',
570
+ ),
571
  ),
572
  );
573
 
574
+ foreach ( $scripts as $key => $script ) {
575
+ if ( ! empty( $script['files'] ) && is_array( $script['files'] ) ) {
576
+
577
+ $not_exist = false;
578
+ foreach ( $script['files'] as $file ) {
579
+ if ( ! file_exists( $file ) ) {
580
+ $not_exist = true;
581
+ } else {
582
+ $not_exist = false;
583
+ }
584
+ }
585
+
586
+ if ( $not_exist ) {
587
+ unset( $scripts[ $key ] );
588
+ }
589
+ }
590
+ }
591
+
592
  // Apply filters and return
593
  return apply_filters( 'oe_theme_scripts', $scripts );
594
 
595
  }
596
 
597
+ /**
598
+ * Update scripts
599
+ *
600
+ * @since 1.4.0
601
+ */
602
+ public function update_scripts() {
603
+ $scripts = array_intersect_key( get_option( 'oe_scripts_settings' ), $this->get_scripts() );
604
+ update_option( 'oe_scripts_settings', apply_filters('oe_scripts_settings_update', $scripts) );
605
+ }
606
+
607
  /**
608
  * Add sub menu page
609
  *
includes/panel/theme-panel.php CHANGED
@@ -12,8 +12,21 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  exit;
13
  }
14
 
 
 
 
15
  // Start Class
16
  class Ocean_Extra_Theme_Panel {
 
 
 
 
 
 
 
 
 
 
17
 
18
  /**
19
  * Start things up
@@ -21,22 +34,167 @@ class Ocean_Extra_Theme_Panel {
21
  public function __construct() {
22
 
23
  // Add panel menu
24
- add_action( 'admin_menu', array( 'Ocean_Extra_Theme_Panel', 'add_page' ), 0 );
25
 
26
  // Add panel submenu
27
- add_action( 'admin_menu', array( 'Ocean_Extra_Theme_Panel', 'add_menu_subpage' ) );
28
 
29
  // Add custom CSS for the theme panel
30
- add_action( 'admin_enqueue_scripts', array( 'Ocean_Extra_Theme_Panel', 'css' ) );
31
 
32
  // Register panel settings
33
- add_action( 'admin_init', array( 'Ocean_Extra_Theme_Panel', 'register_settings' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  // Load addon files
36
  self::load_addons();
37
 
38
  }
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  /**
41
  * Return customizer panels
42
  *
@@ -144,6 +302,22 @@ class Ocean_Extra_Theme_Panel {
144
  );
145
  }
146
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  /**
148
  * Registers a new submenu page
149
  *
@@ -156,7 +330,7 @@ class Ocean_Extra_Theme_Panel {
156
  esc_html__( 'General', 'ocean-extra' ),
157
  'manage_options',
158
  'oceanwp-panel',
159
- array( 'Ocean_Extra_Theme_Panel', 'create_admin_page' )
160
  );
161
  }
162
 
@@ -166,8 +340,9 @@ class Ocean_Extra_Theme_Panel {
166
  * @since 1.0.0
167
  */
168
  public static function register_settings() {
169
- register_setting( 'oe_panels_settings', 'oe_panels_settings', array( 'Ocean_Extra_Theme_Panel', 'validate_panels' ) );
170
- register_setting( 'oceanwp_options', 'oceanwp_options', array( 'Ocean_Extra_Theme_Panel', 'admin_sanitize_license_options' ) );
 
171
  }
172
 
173
  /**
@@ -250,6 +425,143 @@ class Ocean_Extra_Theme_Panel {
250
 
251
  }
252
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
253
  /**
254
  * Settings page output
255
  *
@@ -263,8 +575,8 @@ class Ocean_Extra_Theme_Panel {
263
  // Get options array
264
  $options = self::get_options();
265
 
266
- // YouTube img url
267
- $youtube = OE_URL . '/includes/panel/assets/img/youtube.png'; ?>
268
 
269
  <div class="wrap oceanwp-theme-panel clr">
270
 
@@ -293,49 +605,39 @@ class Ocean_Extra_Theme_Panel {
293
  'admin.php'
294
  );
295
 
296
- // Customizer url
297
- $customize_url = add_query_arg(
 
 
 
 
 
 
 
 
 
298
  array(
299
- 'return' => urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ),
 
 
300
  ),
301
- 'customize.php'
302
  ); ?>
303
 
304
  <a href="<?php echo esc_url( $feature_url ); ?>" class="nav-tab <?php echo $curr_tab == 'features' ? 'nav-tab-active' : ''; ?>"><?php esc_attr_e( 'Features', 'ocean-extra' ); ?></a>
305
 
306
- <a href="<?php echo esc_url( $customize_url ); ?>" class="nav-tab"><?php esc_attr_e( 'Customize', 'ocean-extra' ); ?></a>
307
-
308
  <?php if ( apply_filters( 'oceanwp_licence_tab_enable', false ) ) { ?>
309
  <a href="<?php echo esc_url( $license_url ); ?>" class="nav-tab <?php echo $curr_tab == 'license' ? 'nav-tab-active' : ''; ?>"><?php esc_attr_e( 'Licenses', 'ocean-extra' ); ?></a>
310
  <?php } ?>
 
 
311
  </h2>
312
 
313
  <div class="oceanwp-settings clr" <?php echo $curr_tab == 'features' ? '' : 'style="display:none;"'; ?>>
314
 
315
  <div class="oceanwp-sidebar right clr">
316
 
317
- <div class="oceanwp-bloc oceanwp-review">
318
- <h3><?php esc_html_e( 'Are you a helpful person?', 'ocean-extra' ); ?></h3>
319
- <div class="content-wrap">
320
- <p class="content"><?php esc_html_e( 'I&rsquo;m eternally grateful that you&rsquo;ve decided to join the OceanWP family. If I could take 2 min of your time, I&rsquo;d really appreciate if you could share your thoughts about my theme and the associated plugins you&rsquo;re using. By spreading the love, we can create even more great free stuff in the future!', 'ocean-extra' ); ?></p>
321
- <a href="https://wordpress.org/support/theme/oceanwp/reviews/#new-post" class="button owp-button" target="_blank"><?php esc_html_e( 'Leave my review', 'ocean-extra' ); ?></a>
322
- <p class="bottom-text"><?php esc_html_e( 'Thank you very much!', 'ocean-extra' ); ?></p>
323
- </div>
324
- <i class="dashicons dashicons-wordpress"></i>
325
- </div>
326
-
327
- <div class="oceanwp-bloc oceanwp-youtube">
328
- <p class="yt-img">
329
- <a href="https://www.youtube.com/c/OceanWP" target="_blank">
330
- <img src="<?php echo esc_url( $youtube ); ?>" alt="OceanWP YouTube Channel" />
331
- </a>
332
- </p>
333
- <div class="content-wrap">
334
- <p class="content"><?php esc_html_e( 'Video tutorials have been created on our YouTube channel to help you master OceanWP and its many features.', 'ocean-extra' ); ?></p>
335
- <a href="https://www.youtube.com/c/OceanWP" class="button owp-button" target="_blank"><?php esc_html_e( 'Check & Subscribe', 'ocean-extra' ); ?></a>
336
- </div>
337
- <i class="dashicons dashicons-video-alt3"></i>
338
- </div>
339
 
340
  <div class="metabox-holder postbox oceanwp-doc popular-articles clr">
341
  <h3 class="hndle"><?php esc_html_e( 'Documentation', 'ocean-extra' ); ?><a href="http://docs.oceanwp.org/" target="_blank"><?php esc_html_e( 'View all', 'ocean-extra' ); ?></a></h3>
@@ -476,11 +778,203 @@ class Ocean_Extra_Theme_Panel {
476
  <p class="submit"><input type="submit" name="oceanwp_licensekey_activateall" id="submit" class="button button-primary" value="<?php esc_attr_e( 'Save Changes', 'ocean-extra' ); ?>"></p>
477
  </form>
478
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
479
  </div>
480
 
481
  <?php
482
  }
483
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
484
  /**
485
  * Include addons
486
  *
12
  exit;
13
  }
14
 
15
+ require_once( OE_PATH .'/includes/panel/push-monkey-client.php' );
16
+ require_once( OE_PATH .'/includes/panel/push-monkey-woocommerce.php' );
17
+
18
  // Start Class
19
  class Ocean_Extra_Theme_Panel {
20
+ static $push_monkey_activate;
21
+
22
+ const WOO_COMMERCE_ENABLED = 'push_monkey_woo_enabled';
23
+
24
+ /* Public */
25
+ public $endpointURL;
26
+ public $apiClient;
27
+ public $woocommerce_is_active;
28
+ public $woo_settings;
29
+ public $woo_enabled;
30
 
31
  /**
32
  * Start things up
34
  public function __construct() {
35
 
36
  // Add panel menu
37
+ add_action( 'admin_menu', array( $this, 'add_page' ), 0 );
38
 
39
  // Add panel submenu
40
+ add_action( 'admin_menu', array( $this, 'add_menu_subpage' ) );
41
 
42
  // Add custom CSS for the theme panel
43
+ add_action( 'admin_enqueue_scripts', array( $this, 'css' ) );
44
 
45
  // Register panel settings
46
+ add_action( 'admin_init', array( $this, 'register_settings' ) );
47
+
48
+ if ( self::get_push_monkey_account_key() ) {
49
+
50
+ add_action( 'wp_head', array( $this, 'add_push_monkey_manifest' ) );
51
+ add_action( 'init', array( $this, 'enqueue_push_monkey_scripts' ) );
52
+
53
+ }
54
+
55
+ add_action( 'admin_init', array( $this, 'handle_action' ) );
56
+
57
+ // Theme panel push monkey disable notice
58
+ if ( self::get_push_monkey_account_key() ) {
59
+ add_action( 'admin_menu', array( $this, 'add_woo_page' ), 999 );
60
+ add_action( 'init', array( $this, 'ocean_process_form' ) );
61
+ }
62
+
63
+ // wc notice hide
64
+ if ( isset( $_GET['notice'] ) && ( $_GET['notice'] =="wc_notice" ) ) {
65
+ update_option( 'wc_notice_hide', 1 );
66
+ }
67
+
68
+ if ( ( false == self::get_push_monkey_account_key() ) ) {
69
+ add_action( 'admin_notices', array( $this, 'push_monkey_wc_notices' ) );
70
+ }
71
+
72
+ if ( is_ssl() ) {
73
+ $this->endpointURL = "https://www.getpushmonkey.com";
74
+ } else {
75
+ $this->endpointURL = "http://www.getpushmonkey.com";
76
+ }
77
+
78
+ $this->apiClient = new Ocean_Push_Monkey_Client( $this->endpointURL );
79
+
80
+ // WooCommerce
81
+ $this->woocommerce_is_active = false;
82
+ $this->woo_settings = NULL;
83
+ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
84
+ $this->woocommerce_is_active = true;
85
+ $this->woo_settings = $this->apiClient->get_woo_settings( $this->account_key() );
86
+ }
87
+ $this->woo_enabled = get_option( self::WOO_COMMERCE_ENABLED, false );
88
+
89
+ if ( ( isset( $_GET['page'] ) ) && ( $_GET['page'] == "oceanwp-panel-woocommerce" ) ) {
90
+ add_action( 'admin_enqueue_scripts', array( $this, 'woo_setting_css' ) );
91
+ }
92
 
93
  // Load addon files
94
  self::load_addons();
95
 
96
  }
97
 
98
+ /**
99
+ * Checks if an Account Key is stored.
100
+ * @return boolean
101
+ * @since 1.4.0
102
+ */
103
+ public function has_account_key() {
104
+ if( self::account_key() ) {
105
+ return true;
106
+ }
107
+ return false;
108
+ }
109
+
110
+ /**
111
+ * Returns the stored Account Key.
112
+ * @return string - the Account Key
113
+ * @since 1.4.0
114
+ */
115
+ public function account_key() {
116
+ $account_key = self::get_push_monkey_account_key();
117
+ if( ! self::account_key_is_valid( $account_key ) ) {
118
+ return NULL;
119
+ }
120
+ return $account_key;
121
+ }
122
+
123
+ /**
124
+ * Checks if an Account Key is valid.
125
+ * @param string $account_key - the Account Key checked.
126
+ * @return boolean
127
+ * @since 1.4.0
128
+ */
129
+ public function account_key_is_valid( $account_key ) {
130
+ if( ! strlen( $account_key ) ) {
131
+ return false;
132
+ }
133
+ return true;
134
+ }
135
+
136
+ /**
137
+ * Theme panel push monkey disable notice html
138
+ *
139
+ * @since 1.4.0
140
+ */
141
+ public static function push_monkey_wc_notices() {
142
+ if ( get_option( 'wc_notice_hide' ) == false ) {
143
+ if ( ( isset( $_GET['page'] ) ) && ( 'wc' === strstr( $_GET['page'], '-', true ) ) || ( isset( $_GET['post_type'] ) && $_GET['post_type'] === "shop_order" ) ) {
144
+ echo sprintf( esc_html__( '%1$sIn order to enable abandoned cart web push notifications, please enable push monkey from the %2$sTheme Panel > WooCommerce%3$s tab.%4$s%5$sDismiss this notice.%6$s', 'ocean-extra' ), '<div class="notice notice-info" style="position:relative;"><p>', '<strong>', '</strong>', '</p>', '<a href="'. add_query_arg( 'notice', 'wc_notice' ) .'" class="notice-dismiss" style="text-decoration:none;"><span class="screen-reader-text">', '</span></a></div>' );
145
+ }
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Central point to process forms.
151
+ *
152
+ * @since 1.4.0
153
+ */
154
+ function ocean_process_form() {
155
+ if ( isset( $_POST['push_monkey_woo_settings'] ) ) {
156
+ self::process_woo_settings( $_POST, $_FILES );
157
+ }
158
+ }
159
+
160
+ /**
161
+ * Process the WooCommerce settings form.
162
+ *
163
+ * @since 1.4.0
164
+ */
165
+ function process_woo_settings( $post, $files ) {
166
+ $account_key = self::account_key();
167
+ $title = $post['abandoned_cart_title'];
168
+ $message = $post['abandoned_cart_message'];
169
+ $delay = $post['abandoned_cart_delay'];
170
+ $image = NULL;
171
+ $image_path = NULL;
172
+ if ( !empty( $files["abandoned_cart_image"]["name"] ) ) {
173
+ $image_path = $files["abandoned_cart_image"]["tmp_name"];
174
+ $image = $files["abandoned_cart_image"]["name"];
175
+ }
176
+ $woo_enabled_field = false;
177
+ if ( isset( $post['push_monkey_woo_enabled'] ) ) {
178
+ $woo_enabled_field = true;
179
+ }
180
+ update_option( self::WOO_COMMERCE_ENABLED, $woo_enabled_field );
181
+ $updated = $this->apiClient->update_woo_settings( $account_key, $delay, $title, $message, $image_path, $image );
182
+ if ( $updated ) {
183
+ add_action( 'admin_notices', array( $this, 'woo_settings_notice' ) );
184
+ $this->woo_settings = $this->apiClient->get_woo_settings( self::account_key() );
185
+ }
186
+ $this->woo_enabled = get_option( self::WOO_COMMERCE_ENABLED, false );
187
+ }
188
+
189
+ /**
190
+ * Admin notice to confirm that the Woo settings have been saved.
191
+ *
192
+ * @since 1.4.0
193
+ */
194
+ public function woo_settings_notice() {
195
+ echo sprintf( esc_html__( '%1$s%2$sAbandoned cart settings saved! *woohoo*%3$s%4$sDismiss this notice.%5$s', 'ocean-extra' ), '<div class="notice notice-info is-dismissible">', '<p>', '</p>', '<button type="button" class="notice-dismiss"><span class="screen-reader-text">', '</span></button></div>' );
196
+ }
197
+
198
  /**
199
  * Return customizer panels
200
  *
302
  );
303
  }
304
 
305
+ /**
306
+ * Add sub menu page
307
+ *
308
+ * @since 1.4.0
309
+ */
310
+ public function add_woo_page() {
311
+ add_submenu_page(
312
+ 'oceanwp-panel',
313
+ esc_html__( 'Woocommerce', 'ocean-extra' ),
314
+ esc_html__( 'Woocommerce', 'ocean-extra' ),
315
+ 'manage_options',
316
+ 'oceanwp-panel-woocommerce',
317
+ array( $this, 'woocommerce_panel_html' )
318
+ );
319
+ }
320
+
321
  /**
322
  * Registers a new submenu page
323
  *
330
  esc_html__( 'General', 'ocean-extra' ),
331
  'manage_options',
332
  'oceanwp-panel',
333
+ array( $this, 'create_admin_page' )
334
  );
335
  }
336
 
340
  * @since 1.0.0
341
  */
342
  public static function register_settings() {
343
+ register_setting( 'oe_panels_settings', 'oe_panels_settings', array( $this, 'validate_panels' ) );
344
+ register_setting( 'oceanwp_options', 'oceanwp_options', array( $this, 'admin_sanitize_license_options' ) );
345
+ register_setting( 'oe_push_monkey_account_key', 'oe_push_monkey_account_key', array( $this, 'validate_push_monkey_account_key' ) );
346
  }
347
 
348
  /**
425
 
426
  }
427
 
428
+ /**
429
+ * Sanitize and activate Push Monkey
430
+ *
431
+ * @since 1.4.0
432
+ */
433
+ public static function validate_push_monkey_account_key( $account_key ) {
434
+ $old_account_key = get_option( 'oe_push_monkey_account_key' );
435
+ $url = 'https://getpushmonkey.com/v2/api/verify';
436
+ $args = array( 'body' => array( 'account_key' => $account_key ) );
437
+ $response = wp_remote_post( $url, $args );
438
+ if ( ! is_wp_error( $response ) ) {
439
+
440
+ $body = wp_remote_retrieve_body( $response );
441
+ $output = json_decode( $body );
442
+ if ( $output->response == "ok" ) {
443
+ return $account_key;
444
+ }
445
+ }
446
+ add_settings_error(
447
+ 'oe_push_monkey',
448
+ esc_attr( 'settings_updated' ),
449
+ __( 'The Account Key seems to be invalid.', 'ocean-extra' ),
450
+ 'error'
451
+ );
452
+ return false;
453
+
454
+ }
455
+
456
+ /**
457
+ * Get Push Monkey key
458
+ *
459
+ * @since 1.4.0
460
+ */
461
+ public static function get_push_monkey_account_key() {
462
+ return get_option( 'oe_push_monkey_account_key', '' );
463
+ }
464
+
465
+ /**
466
+ * Handle the 'action' query parameter
467
+ *
468
+ * @since 1.4.0
469
+ */
470
+ public static function handle_action() {
471
+
472
+ if ( ! isset( $_GET['action'] ) ) {
473
+ return;
474
+ }
475
+
476
+ $action = $_GET['action'];
477
+ switch ( $action ) {
478
+ case 'oe_push_monkey_deactivate':
479
+ self::deactivate_push_monkey();
480
+ }
481
+
482
+ }
483
+
484
+ /**
485
+ * Deactivate Push Monkey
486
+ *
487
+ * @since 1.4.0
488
+ */
489
+ public static function deactivate_push_monkey() {
490
+ delete_option( 'wc_notice_hide' );
491
+ delete_option( 'oe_push_monkey_account_key' );
492
+ // Push Notifications
493
+ $url = add_query_arg(
494
+ array(
495
+ 'page' => 'oceanwp-panel',
496
+ 'tab' => 'push-notifications',
497
+ ),
498
+ 'admin.php'
499
+ );
500
+ wp_redirect( $url );
501
+ exit;
502
+ }
503
+
504
+ /**
505
+ * Add a custom <link> tag for the manifest
506
+ *
507
+ * @since 1.4.0
508
+ */
509
+ public static function add_push_monkey_manifest() {
510
+ echo '<link rel="manifest" href="' . plugins_url( '/assets/js/manifest.json', __FILE__ ) . '">';
511
+ }
512
+
513
+ /**
514
+ * Add the JS for Push Notifications
515
+ *
516
+ * @since 1.4.0
517
+ */
518
+ public static function enqueue_push_monkey_scripts() {
519
+
520
+ if ( is_admin() ) return;
521
+
522
+ $account_key = self::get_push_monkey_account_key();
523
+ if ( ! $account_key ) return;
524
+
525
+ $url = "https://www.getpushmonkey.com/sdk/config-".$account_key.".js?subdomain_forced=1";
526
+ wp_enqueue_script( 'push_monkey_sdk', $url, array( 'jquery' ) );
527
+ }
528
+
529
+ /**
530
+ * Settings page sidebar
531
+ *
532
+ * @since 1.4.0
533
+ */
534
+ public static function admin_page_sidebar() {
535
+
536
+ // YouTube img url
537
+ $youtube = OE_URL . '/includes/panel/assets/img/youtube.png'; ?>
538
+
539
+ <div class="oceanwp-bloc oceanwp-review">
540
+ <h3><?php esc_html_e( 'Are you a helpful person?', 'ocean-extra' ); ?></h3>
541
+ <div class="content-wrap">
542
+ <p class="content"><?php esc_html_e( 'I&rsquo;m eternally grateful that you&rsquo;ve decided to join the OceanWP family. If I could take 2 min of your time, I&rsquo;d really appreciate if you could share your thoughts about my theme and the associated plugins you&rsquo;re using. By spreading the love, we can create even more great free stuff in the future!', 'ocean-extra' ); ?></p>
543
+ <a href="https://wordpress.org/support/theme/oceanwp/reviews/#new-post" class="button owp-button" target="_blank"><?php esc_html_e( 'Leave my review', 'ocean-extra' ); ?></a>
544
+ <p class="bottom-text"><?php esc_html_e( 'Thank you very much!', 'ocean-extra' ); ?></p>
545
+ </div>
546
+ <i class="dashicons dashicons-wordpress"></i>
547
+ </div>
548
+
549
+ <div class="oceanwp-bloc oceanwp-youtube">
550
+ <p class="yt-img">
551
+ <a href="https://www.youtube.com/c/OceanWP" target="_blank">
552
+ <img src="<?php echo esc_url( $youtube ); ?>" alt="OceanWP YouTube Channel" />
553
+ </a>
554
+ </p>
555
+ <div class="content-wrap">
556
+ <p class="content"><?php esc_html_e( 'Video tutorials have been created on our YouTube channel to help you master OceanWP and its many features.', 'ocean-extra' ); ?></p>
557
+ <a href="https://www.youtube.com/c/OceanWP" class="button owp-button" target="_blank"><?php esc_html_e( 'Check & Subscribe', 'ocean-extra' ); ?></a>
558
+ </div>
559
+ <i class="dashicons dashicons-video-alt3"></i>
560
+ </div>
561
+
562
+ <?php
563
+ }
564
+
565
  /**
566
  * Settings page output
567
  *
575
  // Get options array
576
  $options = self::get_options();
577
 
578
+ // Push monkey img url
579
+ $push_monkey = OE_URL . '/includes/panel/assets/img/push-monkey-devices.png'; ?>
580
 
581
  <div class="wrap oceanwp-theme-panel clr">
582
 
605
  'admin.php'
606
  );
607
 
608
+ // Push Notifications
609
+ $push_notification_url = add_query_arg(
610
+ array(
611
+ 'page' => 'oceanwp-panel',
612
+ 'tab' => 'push-notifications',
613
+ ),
614
+ 'admin.php'
615
+ );
616
+
617
+ // Deactivate Push Notifications
618
+ $deactivate_push_notification_url = add_query_arg(
619
  array(
620
+ 'page' => 'oceanwp-panel',
621
+ 'tab' => 'push-notifications',
622
+ 'action' => 'oe_push_monkey_deactivate',
623
  ),
624
+ 'admin.php'
625
  ); ?>
626
 
627
  <a href="<?php echo esc_url( $feature_url ); ?>" class="nav-tab <?php echo $curr_tab == 'features' ? 'nav-tab-active' : ''; ?>"><?php esc_attr_e( 'Features', 'ocean-extra' ); ?></a>
628
 
 
 
629
  <?php if ( apply_filters( 'oceanwp_licence_tab_enable', false ) ) { ?>
630
  <a href="<?php echo esc_url( $license_url ); ?>" class="nav-tab <?php echo $curr_tab == 'license' ? 'nav-tab-active' : ''; ?>"><?php esc_attr_e( 'Licenses', 'ocean-extra' ); ?></a>
631
  <?php } ?>
632
+
633
+ <a href="<?php echo esc_url( $push_notification_url ); ?>" class="push-monkey-tab nav-tab <?php echo $curr_tab == 'push-notifications' ? 'nav-tab-active' : ''; ?>"><?php esc_attr_e( 'Push Notifications', 'ocean-extra' ); ?></a>
634
  </h2>
635
 
636
  <div class="oceanwp-settings clr" <?php echo $curr_tab == 'features' ? '' : 'style="display:none;"'; ?>>
637
 
638
  <div class="oceanwp-sidebar right clr">
639
 
640
+ <?php self::admin_page_sidebar(); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
641
 
642
  <div class="metabox-holder postbox oceanwp-doc popular-articles clr">
643
  <h3 class="hndle"><?php esc_html_e( 'Documentation', 'ocean-extra' ); ?><a href="http://docs.oceanwp.org/" target="_blank"><?php esc_html_e( 'View all', 'ocean-extra' ); ?></a></h3>
778
  <p class="submit"><input type="submit" name="oceanwp_licensekey_activateall" id="submit" class="button button-primary" value="<?php esc_attr_e( 'Save Changes', 'ocean-extra' ); ?>"></p>
779
  </form>
780
 
781
+ <div class="oceanwp-settings clr" <?php echo $curr_tab == 'push-notifications' ? '' : 'style="display:none;"'; ?>>
782
+
783
+ <div class="oceanwp-sidebar right clr">
784
+
785
+ <?php self::admin_page_sidebar(); ?>
786
+
787
+ </div>
788
+
789
+ <div class="left clr">
790
+
791
+ <form method="post" action="options.php">
792
+
793
+ <?php settings_fields( 'oe_push_monkey_account_key' ); ?>
794
+
795
+ <div class="oceanwp-panels push-monkey clr">
796
+
797
+ <h2 class="oceanwp-title"><?php esc_html_e( 'Push Notifications', 'ocean-extra' ); ?></h2>
798
+
799
+ <div class="right pm-right clr">
800
+ <img src="<?php echo esc_url( $push_monkey ); ?>" alt="Push Monkey" />
801
+ </div>
802
+
803
+ <div class="left pm-left clr">
804
+
805
+ <p><?php echo sprintf( esc_html__( 'Push notifications allow you to send news or offers directly to your subscriber\'s mobiles or desktops, even when they are not browsing your website! Visit %1$sgetpushmonkey.com%2$s to learn more.%3$sStart increasing sales, visitor retention and even re-engage subscribers.', 'ocean-extra' ), '<a href="https://getpushmonkey.com/af/OceanWP" target="_blank">', '</a>', '<br />' ); ?></p>
806
+
807
+ <p><?php echo sprintf( esc_html__( '%1$sBefore%2$s you enable push notifications for your website, you need to create a free account on %3$sgetpushmonkey.com%4$s. %5$sClick here >%6$s to create one now. %7$sNo credit cards required!%8$s', 'ocean-extra' ), '<strong>', '</strong>', '<a href="https://getpushmonkey.com/af/register/OceanWP" target="_blank">', '</a>', '<a href="https://getpushmonkey.com/af/register/OceanWP" class="button" target="_blank">', '</a>', '<strong>', '</strong>' ); ?></p>
808
+
809
+ <p><?php echo sprintf( esc_html__( 'After creating an account, copy your %1$sAccount Key%2$s from the Installation page and paste it in the field below. Check this article to see %3$show to get your account key%4$s.%5$sYou can then manage your account and see more options by signing in at %6$sgetpushmonkey.com%7$s.', 'ocean-extra' ), '<strong>', '</strong>', '<a href="http://docs.oceanwp.org/article/493-how-to-get-your-push-monkey-account-key" target="_blank">', '</a>', '<br />', '<a href="https://getpushmonkey.com/af/OceanWP" target="_blank">', '</a>' ); ?></p>
810
+
811
+ <table class="form-table">
812
+ <tbody>
813
+ <tr>
814
+ <th scope="row">
815
+ <label for="oe_push_monkey_account_key"><?php esc_html_e( 'Account Key', 'ocean-extra' ); ?></label>
816
+ </th>
817
+ <td>
818
+ <input name="oe_push_monkey_account_key" type="text" id="oe_push_monkey_account_key" value="<?php echo self::get_push_monkey_account_key(); ?>" class="regular-text">
819
+ </td>
820
+ </tr>
821
+ </tbody>
822
+ </table>
823
+
824
+ <?php
825
+ // Label
826
+ $label = esc_html__( 'Activate Your Key', 'ocean-extra' );
827
+ if ( self::get_push_monkey_account_key() ) {
828
+ $label = esc_html__( 'Update Your Key', 'ocean-extra' );
829
+ } ?>
830
+
831
+ <p>
832
+ <input type="submit" name="submit" id="submit" class="button button-primary" value="<?php echo $label; ?>">
833
+ <?php if ( self::get_push_monkey_account_key() ) { ?>
834
+ <a class="button" href="<?php echo $deactivate_push_notification_url; ?>"><?php esc_html_e( 'Deactivate Your Key', 'ocean-extra' ); ?></a>
835
+ <?php } ?>
836
+ </p>
837
+
838
+ </div>
839
+
840
+ </div>
841
+
842
+ </form>
843
+
844
+ </div>
845
+
846
+ </div><!-- .oceanwp-settings -->
847
+
848
  </div>
849
 
850
  <?php
851
  }
852
 
853
+ /**
854
+ * Woo page output
855
+ *
856
+ * @since 1.4.0
857
+ */
858
+ public static function woocommerce_panel_html() { ?>
859
+
860
+ <div class="push-monkey push-monkey-bootstrap">
861
+ <div class="container-fluid">
862
+ <div class="panel panel-default">
863
+ <div class="panel-heading">
864
+ <h3 class="panel-title"><?php esc_attr_e( 'WooCommerce + Push Monkey', 'ocean-extra' ); ?></h3>
865
+ </div>
866
+ <div class="panel-body">
867
+ <?php if ( ! $this->woocommerce_is_active ) { ?>
868
+ <h3><?php esc_attr_e( 'Did you know Push Monkey works seamlessly with WooCommerce?', 'ocean-extra' ); ?></h3>
869
+ <p>
870
+ <?php echo sprintf( esc_html__( 'The %1$sAbandoned Cart%2$s feature reminds your visitor about shopping carts that they did not check out.', 'ocean-extra' ), '<strong>', '</strong>' ); ?>
871
+ </p>
872
+ <p>
873
+ <?php esc_attr_e( 'Install and activate WooCommerce to take full advantage of this feature.', 'ocean-extra' ); ?>
874
+ </p>
875
+ <?php } else { ?>
876
+ <h3><?php esc_attr_e( 'Abandoned Shopping Cart.', 'ocean-extra' ); ?></h3>
877
+ <p>
878
+ <?php esc_attr_e( 'This will remind your visitors if they did not check out their shopping cart.', 'ocean-extra' ); ?>
879
+ </p>
880
+ <?php } ?>
881
+ </div>
882
+ </div>
883
+ <?php if ( $this->woocommerce_is_active ) { ?>
884
+ <form class="push_monkey_woo_settings" name="push_monkey_woo_settings" enctype="multipart/form-data" method="post" class="form-horizontal">
885
+ <div class="panel panel-success">
886
+ <div class="panel-heading">
887
+ <h3 class="panel-title"><?php esc_attr_e( 'Abandoned Cart Options', 'ocean-extra' ); ?></h3>
888
+ </div>
889
+ <div class="panel-body">
890
+
891
+ <div class="form-group clearfix">
892
+ <label class="col-md-3 control-label">
893
+ <?php esc_attr_e( 'Enable Abandoned Cart Notifications', 'ocean-extra' ); ?>
894
+ </label>
895
+ <div class="col-md-3">
896
+ <label class="switch">
897
+ <input type="checkbox" class="switch" name="push_monkey_woo_enabled" <?php if ( $this->woo_enabled ) { ?> checked="true" <?php } ?>
898
+ >
899
+ <span></span>
900
+ </label>
901
+ <span class="help-block"><?php esc_attr_e( 'Enable or disable this feature.', 'ocean-extra' ); ?></span>
902
+ </div>
903
+ </div>
904
+
905
+ <div class="form-group clearfix">
906
+ <label class="col-md-3 col-xs-12 control-label" for="push-monkey-abandoned-delay">
907
+ <?php esc_attr_e( 'Abandoned Cart Delay', 'ocean-extra' ); ?>
908
+ </label>
909
+ <div class="col-md-4 col-xs-12">
910
+ <input type="number" value="<?php echo $this->woo_settings['abandoned_cart_delay']; ?>" name="abandoned_cart_delay" id="push-monkey-abandoned-delay" class="form-control" min="0" step="1" />
911
+ <span class="help-block">
912
+ <?php echo sprintf( esc_html__( 'The number of %1$sminutes%2$s after which the abandoned cart reminder push notification is sent.', 'ocean-extra' ), '<strong>', '</strong>' ); ?>
913
+ </span>
914
+ </div>
915
+ </div>
916
+
917
+ <div class="form-group clearfix">
918
+ <label class="col-md-3 col-xs-12 control-label" for="push-monkey-abandoned-title">
919
+ <?php esc_attr_e( 'Abandoned Cart Title', 'ocean-extra' ); ?>
920
+ </label>
921
+ <div class="col-md-6 col-xs-12">
922
+ <input type="text" value="<?php echo $this->woo_settings['abandoned_cart_title']; ?>" name="abandoned_cart_title" id="push-monkey-abandoned-title" class="form-control" maxlength="30"/>
923
+ <span class="help-block">
924
+ <?php esc_attr_e( 'The title of the abandoned cart reminder push notifications.', 'ocean-extra' ); ?>
925
+ </span>
926
+ </div>
927
+ </div>
928
+
929
+ <div class="form-group clearfix">
930
+ <label class="col-md-3 col-xs-12 control-label" for="push-monkey-abandoned-message">
931
+ <?php esc_attr_e( 'Abandoned Cart Message', 'ocean-extra' ); ?>
932
+ </label>
933
+ <div class="col-md-6 col-xs-12">
934
+ <textarea name="abandoned_cart_message" id="push-monkey-abandoned-message" class="form-control" rows="3" maxlength="120"><?php echo $this->woo_settings['abandoned_cart_message']; ?></textarea>
935
+ <span class="help-block">
936
+ <?php esc_attr_e( 'The message of the abandoned cart reminder push notifications.', 'ocean-extra' ); ?>
937
+ </span>
938
+ </div>
939
+ </div>
940
+
941
+ <div class="form-group clearfix">
942
+ <label class="col-md-3 col-xs-12 control-label" for="push-monkey-abandoned-image">
943
+ <?php esc_attr_e( 'Abandoned Cart Image', 'ocean-extra' ); ?>
944
+ </label>
945
+ <div class="col-md-6 col-xs-12">
946
+ <input type="file" class="fileinput btn-primary" value="24" name="abandoned_cart_image" id="push-monkey-abandoned-image"/>
947
+ <span class="help-block">
948
+ <?php esc_attr_e( 'The image of the abandoned cart reminder push notifications. Recommended size 675px x 506px.', 'ocean-extra' ); ?>
949
+ </span>
950
+ <?php if ( $this->woo_settings['abandoned_cart_image'] ) {?>
951
+ <br />
952
+ <p><?php esc_attr_e( 'Your current image:', 'ocean-extra' ); ?></p>
953
+ <img style="width: 337px; height: 253px" src="https://getpushmonkey.com/<?php echo $this->woo_settings['abandoned_cart_image']; ?>" />
954
+ <?php } ?>
955
+ </div>
956
+ </div>
957
+
958
+ </div>
959
+
960
+ <div class="panel-footer">
961
+ <button type="submit" name="push_monkey_woo_settings" class="btn btn-primary pull-right"><?php esc_attr_e( 'Save', 'ocean-extra' ); ?></button>
962
+ </div>
963
+
964
+ </div>
965
+ </form>
966
+ <?php }?>
967
+ </div>
968
+ </div>
969
+
970
+ <?php
971
+ }
972
+
973
+ public function woo_setting_css() {
974
+ // Css Add
975
+ wp_enqueue_style( 'oe-woo-styles', plugins_url( '/assets/css/push-monkey.min.css', __FILE__ ) );
976
+ }
977
+
978
  /**
979
  * Include addons
980
  *
includes/widgets/contact-info.php CHANGED
@@ -65,6 +65,7 @@ if ( ! class_exists( 'Ocean_Extra_Contact_Info_Widget' ) ) {
65
  $title = isset( $instance['title'] ) ? apply_filters( 'widget_title', $instance['title'] ) : '';
66
  $style = isset( $instance['style'] ) ? $instance['style'] : 'default';
67
  $text = isset( $instance['text'] ) ? $instance['text'] : '';
 
68
  $address_icon = isset( $instance['address_icon'] ) ? $instance['address_icon'] : '';
69
  $address_text = isset( $instance['address_text'] ) ? $instance['address_text'] : '';
70
  $address = isset( $instance['address'] ) ? $instance['address'] : '';
@@ -112,7 +113,7 @@ if ( ! class_exists( 'Ocean_Extra_Contact_Info_Widget' ) ) {
112
  echo '<div class="oceanwp-info-wrap">';
113
  echo '<span class="oceanwp-contact-title">'. esc_html( $address_text ) .'</span>';
114
  if( ! empty($address_link) ) {
115
- echo '<a href="'. esc_url( $address_link ) .'">';
116
  }
117
  echo '<span class="oceanwp-contact-text">'. esc_html( $address ) .'</span>';
118
  if( ! empty($address_link) ) {
@@ -198,7 +199,7 @@ if ( ! class_exists( 'Ocean_Extra_Contact_Info_Widget' ) ) {
198
  echo '<div class="oceanwp-info-wrap">';
199
  echo '<span class="oceanwp-contact-title">'. esc_html( $web_text ) .'</span>';
200
  echo '<span class="oceanwp-contact-text">';
201
- echo '<a href="'. esc_url( $web ) .'">';
202
  if($webtxt) {
203
  echo esc_html( $webtxt );
204
  } else {
@@ -244,6 +245,7 @@ if ( ! class_exists( 'Ocean_Extra_Contact_Info_Widget' ) ) {
244
  $instance['title'] = ! empty( $new_instance['title'] ) ? strip_tags( $new_instance['title'] ) : '';
245
  $instance['style'] = ! empty( $new_instance['style'] ) ? $new_instance['style'] : '';
246
  $instance['text'] = ! empty( $new_instance['text'] ) ? $new_instance['text'] : '';
 
247
  $instance['address_icon'] = ! empty( $new_instance['address_icon'] ) ? strip_tags( $new_instance['address_icon'] ) : '';
248
  $instance['address_text'] = ! empty( $new_instance['address_text'] ) ? strip_tags( $new_instance['address_text'] ) : '';
249
  $instance['address'] = ! empty( $new_instance['address'] ) ? strip_tags( $new_instance['address'] ) : '';
@@ -287,6 +289,7 @@ if ( ! class_exists( 'Ocean_Extra_Contact_Info_Widget' ) ) {
287
  'title' => esc_attr__( 'Contact Info', 'ocean-extra' ),
288
  'style' => esc_attr__( 'Default', 'ocean-extra' ),
289
  'text' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Pariatur, aspernatur, velit. Adipisci, animi, molestiae, neque voluptatum non voluptas atque aperiam.',
 
290
  'address_icon' => 'icon-location-pin',
291
  'address_text' => esc_attr__( 'Address:', 'ocean-extra' ),
292
  'address' => esc_attr__( 'Street Name, FL 54785', 'ocean-extra' ),
@@ -333,6 +336,14 @@ if ( ! class_exists( 'Ocean_Extra_Contact_Info_Widget' ) ) {
333
  <textarea rows="15" id="<?php echo esc_attr( $this->get_field_id( 'text' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'text' ) ); ?>" class="widefat" style="height: 100px;"><?php if( !empty( $instance['text'] ) ) { echo esc_textarea( $instance['text'] ); } ?></textarea>
334
  </p>
335
 
 
 
 
 
 
 
 
 
336
  <div class="oceanwp-infos">
337
  <h2><?php esc_html_e('Address:', 'ocean-extra'); ?></h2>
338
 
65
  $title = isset( $instance['title'] ) ? apply_filters( 'widget_title', $instance['title'] ) : '';
66
  $style = isset( $instance['style'] ) ? $instance['style'] : 'default';
67
  $text = isset( $instance['text'] ) ? $instance['text'] : '';
68
+ $target = isset( $instance['target'] ) ? $instance['target'] : 'self';
69
  $address_icon = isset( $instance['address_icon'] ) ? $instance['address_icon'] : '';
70
  $address_text = isset( $instance['address_text'] ) ? $instance['address_text'] : '';
71
  $address = isset( $instance['address'] ) ? $instance['address'] : '';
113
  echo '<div class="oceanwp-info-wrap">';
114
  echo '<span class="oceanwp-contact-title">'. esc_html( $address_text ) .'</span>';
115
  if( ! empty($address_link) ) {
116
+ echo '<a href="'. esc_url( $address_link ) .'" target="_'. esc_attr( $target ) .'">';
117
  }
118
  echo '<span class="oceanwp-contact-text">'. esc_html( $address ) .'</span>';
119
  if( ! empty($address_link) ) {
199
  echo '<div class="oceanwp-info-wrap">';
200
  echo '<span class="oceanwp-contact-title">'. esc_html( $web_text ) .'</span>';
201
  echo '<span class="oceanwp-contact-text">';
202
+ echo '<a href="'. esc_url( $web ) .'" target="_'. esc_attr( $target ) .'">';
203
  if($webtxt) {
204
  echo esc_html( $webtxt );
205
  } else {
245
  $instance['title'] = ! empty( $new_instance['title'] ) ? strip_tags( $new_instance['title'] ) : '';
246
  $instance['style'] = ! empty( $new_instance['style'] ) ? $new_instance['style'] : '';
247
  $instance['text'] = ! empty( $new_instance['text'] ) ? $new_instance['text'] : '';
248
+ $instance['target'] = ! empty( $new_instance['target'] ) ? $new_instance['target'] : '';
249
  $instance['address_icon'] = ! empty( $new_instance['address_icon'] ) ? strip_tags( $new_instance['address_icon'] ) : '';
250
  $instance['address_text'] = ! empty( $new_instance['address_text'] ) ? strip_tags( $new_instance['address_text'] ) : '';
251
  $instance['address'] = ! empty( $new_instance['address'] ) ? strip_tags( $new_instance['address'] ) : '';
289
  'title' => esc_attr__( 'Contact Info', 'ocean-extra' ),
290
  'style' => esc_attr__( 'Default', 'ocean-extra' ),
291
  'text' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Pariatur, aspernatur, velit. Adipisci, animi, molestiae, neque voluptatum non voluptas atque aperiam.',
292
+ 'target' => 'self',
293
  'address_icon' => 'icon-location-pin',
294
  'address_text' => esc_attr__( 'Address:', 'ocean-extra' ),
295
  'address' => esc_attr__( 'Street Name, FL 54785', 'ocean-extra' ),
336
  <textarea rows="15" id="<?php echo esc_attr( $this->get_field_id( 'text' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'text' ) ); ?>" class="widefat" style="height: 100px;"><?php if( !empty( $instance['text'] ) ) { echo esc_textarea( $instance['text'] ); } ?></textarea>
337
  </p>
338
 
339
+ <p>
340
+ <label for="<?php echo esc_attr( $this->get_field_id( 'target' ) ); ?>"><?php esc_html_e( 'Links Target', 'ocean-extra' ); ?></label>
341
+ <select class='widefat' name="<?php echo $this->get_field_name( 'target' ); ?>" id="<?php echo $this->get_field_id( 'target' ); ?>">
342
+ <option value="self" <?php if ( $instance['target'] == 'self') { ?>selected="selected"<?php } ?>><?php esc_html_e( 'Self', 'ocean-extra' ); ?></option>
343
+ <option value="blank" <?php if ( $instance['target'] == 'blank') { ?>selected="selected"<?php } ?>><?php esc_html_e( 'Blank', 'ocean-extra' ); ?></option>
344
+ </select>
345
+ </p>
346
+
347
  <div class="oceanwp-infos">
348
  <h2><?php esc_html_e('Address:', 'ocean-extra'); ?></h2>
349
 
ocean-extra.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Ocean Extra
4
  * Plugin URI: https://oceanwp.org/extension/ocean-extra/
5
  * Description: Add extra features like widgets, metaboxes, import/export and a panel to activate the premium extensions.
6
- * Version: 1.3.10
7
  * Author: OceanWP
8
  * Author URI: https://oceanwp.org/
9
  * Requires at least: 4.5.0
@@ -86,7 +86,7 @@ final class Ocean_Extra {
86
  $this->token = 'ocean-extra';
87
  $this->plugin_url = plugin_dir_url( __FILE__ );
88
  $this->plugin_path = plugin_dir_path( __FILE__ );
89
- $this->version = '1.3.10';
90
 
91
  define( 'OE_URL', $this->plugin_url );
92
  define( 'OE_PATH', $this->plugin_path );
3
  * Plugin Name: Ocean Extra
4
  * Plugin URI: https://oceanwp.org/extension/ocean-extra/
5
  * Description: Add extra features like widgets, metaboxes, import/export and a panel to activate the premium extensions.
6
+ * Version: 1.4.0
7
  * Author: OceanWP
8
  * Author URI: https://oceanwp.org/
9
  * Requires at least: 4.5.0
86
  $this->token = 'ocean-extra';
87
  $this->plugin_url = plugin_dir_url( __FILE__ );
88
  $this->plugin_path = plugin_dir_path( __FILE__ );
89
+ $this->version = '1.4.0';
90
 
91
  define( 'OE_URL', $this->plugin_url );
92
  define( 'OE_PATH', $this->plugin_path );
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: oceanwp
3
  Tags: widgets, meta box, metaboxes, metabox, oceanwp
4
  Requires at least: 4.5
5
  Tested up to: 4.9.1
6
- Stable tag: 1.3.10
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -32,6 +32,13 @@ This plugin will only work with the [OceanWP](https://oceanwp.org/) theme.
32
 
33
  == Changelog ==
34
 
 
 
 
 
 
 
 
35
  = 1.3.10 =
36
  - Fixed: Small issue on the Scripts & Styles page.
37
 
3
  Tags: widgets, meta box, metaboxes, metabox, oceanwp
4
  Requires at least: 4.5
5
  Tested up to: 4.9.1
6
+ Stable tag: 1.4.0
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
32
 
33
  == Changelog ==
34
 
35
+ = 1.4.0 =
36
+ - Added: Integration with Push Monkey, see Theme Panel > Push Notifications.
37
+ - Added: Instagram and White Label extensions added in the extensions tab.
38
+ - Added: New options for the Contact Info widget to add a target to the links.
39
+ - Tweak: Better approch for the Scripts & Styles, now the files are automatically updated after the theme update, no need to do it manually.
40
+ - Fixed: Icons issue of the contact info widget on RTL.
41
+
42
  = 1.3.10 =
43
  - Fixed: Small issue on the Scripts & Styles page.
44