| Current Path : /home/bechata/mp/wp-content/uploads/2022/ejn73c/ |
| Current File : /home/bechata/mp/wp-content/uploads/2022/ejn73c/codecabin.tar |
remodal.css 0000666 00000003102 15176115772 0006715 0 ustar 00 /*
* Remodal - v1.1.1
* Responsive, lightweight, fast, synchronized with CSS animations, fully customizable modal window plugin with declarative configuration and hash tracking.
* http://vodkabears.github.io/remodal/
*
* Made by Ilya Makarov
* Under MIT License
*/
/* ==========================================================================
Remodal's necessary styles
========================================================================== */
/* Hide scroll bar */
html.remodal-is-locked {
overflow: hidden;
-ms-touch-action: none;
touch-action: none;
}
/* Anti FOUC */
.remodal,
[data-remodal-id] {
display: none;
}
/* Necessary styles of the overlay */
.remodal-overlay {
position: fixed;
z-index: 9999;
top: -5000px;
right: -5000px;
bottom: -5000px;
left: -5000px;
display: none;
}
/* Necessary styles of the wrapper */
.remodal-wrapper {
position: fixed;
z-index: 10000;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: none;
overflow: auto;
text-align: center;
-webkit-overflow-scrolling: touch;
}
.remodal-wrapper:after {
display: inline-block;
height: 100%;
margin-left: -0.05em;
content: "";
}
/* Fix iPad, iPhone glitches */
.remodal-overlay,
.remodal-wrapper {
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
}
/* Necessary styles of the modal dialog */
.remodal {
position: relative;
outline: none;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
text-size-adjust: 100%;
}
.remodal-is-initialized {
/* Disable Anti-FOUC */
display: inline-block;
}
remodal.min.js 0000666 00000017215 15176115772 0007335 0 ustar 00 /*
* Remodal - v1.1.1
* Responsive, lightweight, fast, synchronized with CSS animations, fully customizable modal window plugin with declarative configuration and hash tracking.
* http://vodkabears.github.io/remodal/
*
* Made by Ilya Makarov
* Under MIT License
*/
!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(c){return b(a,c)}):"object"==typeof exports?b(a,require("jquery")):b(a,a.jQuery||a.Zepto)}(this,function(a,b){"use strict";function c(a){if(w&&"none"===a.css("animation-name")&&"none"===a.css("-webkit-animation-name")&&"none"===a.css("-moz-animation-name")&&"none"===a.css("-o-animation-name")&&"none"===a.css("-ms-animation-name"))return 0;var b,c,d,e,f=a.css("animation-duration")||a.css("-webkit-animation-duration")||a.css("-moz-animation-duration")||a.css("-o-animation-duration")||a.css("-ms-animation-duration")||"0s",g=a.css("animation-delay")||a.css("-webkit-animation-delay")||a.css("-moz-animation-delay")||a.css("-o-animation-delay")||a.css("-ms-animation-delay")||"0s",h=a.css("animation-iteration-count")||a.css("-webkit-animation-iteration-count")||a.css("-moz-animation-iteration-count")||a.css("-o-animation-iteration-count")||a.css("-ms-animation-iteration-count")||"1";for(f=f.split(", "),g=g.split(", "),h=h.split(", "),e=0,c=f.length,b=Number.NEGATIVE_INFINITY;e<c;e++)d=parseFloat(f[e])*parseInt(h[e],10)+parseFloat(g[e]),d>b&&(b=d);return b}function d(){if(b(document).height()<=b(window).height())return 0;var a,c,d=document.createElement("div"),e=document.createElement("div");return d.style.visibility="hidden",d.style.width="100px",document.body.appendChild(d),a=d.offsetWidth,d.style.overflow="scroll",e.style.width="100%",d.appendChild(e),c=e.offsetWidth,d.parentNode.removeChild(d),a-c}function e(){if(!x){var a,c,e=b("html"),f=k("is-locked");e.hasClass(f)||(c=b(document.body),a=parseInt(c.css("padding-right"),10)+d(),c.css("padding-right",a+"px"),e.addClass(f))}}function f(){if(!x){var a,c,e=b("html"),f=k("is-locked");e.hasClass(f)&&(c=b(document.body),a=parseInt(c.css("padding-right"),10)-d(),c.css("padding-right",a+"px"),e.removeClass(f))}}function g(a,b,c,d){var e=k("is",b),f=[k("is",u.CLOSING),k("is",u.OPENING),k("is",u.CLOSED),k("is",u.OPENED)].join(" ");a.$bg.removeClass(f).addClass(e),a.$overlay.removeClass(f).addClass(e),a.$wrapper.removeClass(f).addClass(e),a.$modal.removeClass(f).addClass(e),a.state=b,!c&&a.$modal.trigger({type:b,reason:d},[{reason:d}])}function h(a,d,e){var f=0,g=function(a){a.target===this&&f++},h=function(a){a.target===this&&0===--f&&(b.each(["$bg","$overlay","$wrapper","$modal"],function(a,b){e[b].off(r+" "+s)}),d())};b.each(["$bg","$overlay","$wrapper","$modal"],function(a,b){e[b].on(r,g).on(s,h)}),a(),0===c(e.$bg)&&0===c(e.$overlay)&&0===c(e.$wrapper)&&0===c(e.$modal)&&(b.each(["$bg","$overlay","$wrapper","$modal"],function(a,b){e[b].off(r+" "+s)}),d())}function i(a){a.state!==u.CLOSED&&(b.each(["$bg","$overlay","$wrapper","$modal"],function(b,c){a[c].off(r+" "+s)}),a.$bg.removeClass(a.settings.modifier),a.$overlay.removeClass(a.settings.modifier).hide(),a.$wrapper.hide(),f(),g(a,u.CLOSED,!0))}function j(a){var b,c,d,e,f={};for(a=a.replace(/\s*:\s*/g,":").replace(/\s*,\s*/g,","),b=a.split(","),e=0,c=b.length;e<c;e++)b[e]=b[e].split(":"),d=b[e][1],("string"==typeof d||d instanceof String)&&(d="true"===d||"false"!==d&&d),("string"==typeof d||d instanceof String)&&(d=isNaN(d)?d:+d),f[b[e][0]]=d;return f}function k(){for(var a=q,b=0;b<arguments.length;++b)a+="-"+arguments[b];return a}function l(){var a,c,d=location.hash.replace("#","");if(d){try{c=b('[data-remodal-id="'+d+'"]')}catch(e){}c&&c.length&&(a=b[p].lookup[c.data(p)],a&&a.settings.hashTracking&&a.open())}else n&&n.state===u.OPENED&&n.settings.hashTracking&&n.close()}function m(a,c){var d=b(document.body),e=d,f=this;f.settings=b.extend({},t,c),f.index=b[p].lookup.push(f)-1,f.state=u.CLOSED,f.$overlay=b("."+k("overlay")),null!==f.settings.appendTo&&f.settings.appendTo.length&&(e=b(f.settings.appendTo)),f.$overlay.length||(f.$overlay=b("<div>").addClass(k("overlay")+" "+k("is",u.CLOSED)).hide(),e.append(f.$overlay)),f.$bg=b("."+k("bg")).addClass(k("is",u.CLOSED)),f.$modal=a.addClass(q+" "+k("is-initialized")+" "+f.settings.modifier+" "+k("is",u.CLOSED)).attr("tabindex","-1"),f.$wrapper=b("<div>").addClass(k("wrapper")+" "+f.settings.modifier+" "+k("is",u.CLOSED)).hide().append(f.$modal),e.append(f.$wrapper),f.$wrapper.on("click."+q,'[data-remodal-action="close"]',function(a){a.preventDefault(),f.close()}),f.$wrapper.on("click."+q,'[data-remodal-action="cancel"]',function(a){a.preventDefault(),f.$modal.trigger(v.CANCELLATION),f.settings.closeOnCancel&&f.close(v.CANCELLATION)}),f.$wrapper.on("click."+q,'[data-remodal-action="confirm"]',function(a){a.preventDefault(),f.$modal.trigger(v.CONFIRMATION),f.settings.closeOnConfirm&&f.close(v.CONFIRMATION)}),f.$wrapper.on("click."+q,function(a){var c=b(a.target);c.hasClass(k("wrapper"))&&f.settings.closeOnOutsideClick&&f.close()})}var n,o,p="remodal",q=a.REMODAL_GLOBALS&&a.REMODAL_GLOBALS.NAMESPACE||p,r=b.map(["animationstart","webkitAnimationStart","MSAnimationStart","oAnimationStart"],function(a){return a+"."+q}).join(" "),s=b.map(["animationend","webkitAnimationEnd","MSAnimationEnd","oAnimationEnd"],function(a){return a+"."+q}).join(" "),t=b.extend({hashTracking:!0,closeOnConfirm:!0,closeOnCancel:!0,closeOnEscape:!0,closeOnOutsideClick:!0,modifier:"",appendTo:null},a.REMODAL_GLOBALS&&a.REMODAL_GLOBALS.DEFAULTS),u={CLOSING:"closing",CLOSED:"closed",OPENING:"opening",OPENED:"opened"},v={CONFIRMATION:"confirmation",CANCELLATION:"cancellation"},w=function(){var a=document.createElement("div").style;return void 0!==a.animationName||void 0!==a.WebkitAnimationName||void 0!==a.MozAnimationName||void 0!==a.msAnimationName||void 0!==a.OAnimationName}(),x=/iPad|iPhone|iPod/.test(navigator.platform);m.prototype.open=function(){var a,c=this;c.state!==u.OPENING&&c.state!==u.CLOSING&&(a=c.$modal.attr("data-remodal-id"),a&&c.settings.hashTracking&&(o=b(window).scrollTop(),location.hash=a),n&&n!==c&&i(n),n=c,e(),c.$bg.addClass(c.settings.modifier),c.$overlay.addClass(c.settings.modifier).show(),c.$wrapper.show().scrollTop(0),c.$modal.focus(),h(function(){g(c,u.OPENING)},function(){g(c,u.OPENED)},c))},m.prototype.close=function(a){var c=this;c.state!==u.OPENING&&c.state!==u.CLOSING&&c.state!==u.CLOSED&&(c.settings.hashTracking&&c.$modal.attr("data-remodal-id")===location.hash.substr(1)&&(location.hash="",b(window).scrollTop(o)),h(function(){g(c,u.CLOSING,!1,a)},function(){c.$bg.removeClass(c.settings.modifier),c.$overlay.removeClass(c.settings.modifier).hide(),c.$wrapper.hide(),f(),g(c,u.CLOSED,!1,a)},c))},m.prototype.getState=function(){return this.state},m.prototype.destroy=function(){var a,c=b[p].lookup;i(this),this.$wrapper.remove(),delete c[this.index],a=b.grep(c,function(a){return!!a}).length,0===a&&(this.$overlay.remove(),this.$bg.removeClass(k("is",u.CLOSING)+" "+k("is",u.OPENING)+" "+k("is",u.CLOSED)+" "+k("is",u.OPENED)))},b[p]={lookup:[]},b.fn[p]=function(a){var c,d;return this.each(function(e,f){d=b(f),null==d.data(p)?(c=new m(d,a),d.data(p,c.index),c.settings.hashTracking&&d.attr("data-remodal-id")===location.hash.substr(1)&&c.open()):c=b[p].lookup[d.data(p)]}),c},b(document).ready(function(){b(document).on("click","[data-remodal-target]",function(a){a.preventDefault();var c=a.currentTarget,d=c.getAttribute("data-remodal-target"),e=b('[data-remodal-id="'+d+'"]');b[p].lookup[e.data(p)].open()}),b(document).find("."+q).each(function(a,c){var d=b(c),e=d.data("remodal-options");e?("string"==typeof e||e instanceof String)&&(e=j(e)):e={},d[p](e)}),b(document).on("keydown."+q,function(a){n&&n.settings.closeOnEscape&&n.state===u.OPENED&&27===a.keyCode&&n.close()}),b(window).on("hashchange."+q,l)})}); deactivate-feedback-form.php 0000666 00000006244 15176115772 0012077 0 ustar 00 <?php
namespace codecabin\PluginDeactivationForm;
if(!defined('ABSPATH'))
exit;
// NB: GDPR
return;
if(!is_admin())
return;
global $pagenow;
if($pagenow != "plugins.php")
return;
if(defined('CODECABIN_DEACTIVATE_FEEDBACK_FORM_INCLUDED'))
return;
define('CODECABIN_DEACTIVATE_FEEDBACK_FORM_INCLUDED', true);
function admin_enqueue_scripts()
{
// Enqueue scripts
wp_enqueue_script('remodal', plugin_dir_url(__FILE__) . 'remodal.min.js');
wp_enqueue_style('remodal', plugin_dir_url(__FILE__) . 'remodal.css');
wp_enqueue_style('remodal-default-theme', plugin_dir_url(__FILE__) . 'remodal-default-theme.css');
wp_enqueue_script('codecabin-deactivate-feedback-form', plugin_dir_url(__FILE__) . 'deactivate-feedback-form.js');
wp_enqueue_style('codecabin-deactivate-feedback-form', plugin_dir_url(__FILE__) . 'deactivate-feedback-form.css');
// Localized strings
wp_localize_script('codecabin-deactivate-feedback-form', 'codecabin_deactivate_feedback_form_strings', array(
'quick_feedback' => __('Quick Feedback', 'codecabin'),
'foreword' => __('If you would be kind enough, please tell us why you\'re deactivating?', 'codecabin'),
'better_plugins_name' => __('Please tell us which plugin?', 'codecabin'),
'please_tell_us' => __('Please tell us the reason so we can improve the plugin', 'codecabin'),
'do_not_attach_email' => __('Do not send my e-mail address with this feedback', 'codecabin'),
'brief_description' => __('Please give us any feedback that could help us improve', 'codecabin'),
'cancel' => __('Cancel', 'codecabin'),
'skip_and_deactivate' => __('Skip & Deactivate', 'codecabin'),
'submit_and_deactivate' => __('Submit & Deactivate', 'codecabin'),
'please_wait' => __('Please wait', 'codecabin'),
'thank_you' => __('Thank you!', 'codecabin')
));
// Plugins
$plugins = apply_filters('codecabin_deactivate_feedback_form_plugins', array());
// Reasons
$defaultReasons = array(
'suddenly-stopped-working' => __('The plugin suddenly stopped working', 'codecabin'),
'plugin-broke-site' => __('The plugin broke my site', 'codecabin'),
'no-longer-needed' => __('I don\'t need this plugin any more', 'codecabin'),
'found-better-plugin' => __('I found a better plugin', 'codecabin'),
'temporary-deactivation' => __('It\'s a temporary deactivation, I\'m troubleshooting', 'codecabin'),
'other' => __('Other', 'codecabin')
);
foreach($plugins as $plugin)
{
$plugin->reasons = apply_filters('codecabin_deactivate_feedback_form_reasons', $defaultReasons, $plugin);
}
// Send plugin data
wp_localize_script('codecabin-deactivate-feedback-form', 'codecabin_deactivate_feedback_form_plugins', $plugins);
}
add_action('admin_enqueue_scripts', 'codecabin\\PluginDeactivationForm\\admin_enqueue_scripts');
/**
* Hook for adding plugins, pass an array of objects in the following format:
* 'slug' => 'plugin-slug'
* 'version' => 'plugin-version'
* @return array The plugins in the format described above
*/
function deactivate_feedback_form_plugins($plugins)
{
return $plugins;
}
add_filter('codecabin_deactivate_feedback_form_plugins', 'codecabin\PluginDeactivationForm\deactivate_feedback_form_plugins'); deactivate-feedback-form.js 0000666 00000006103 15176115772 0011716 0 ustar 00 jQuery(function($) {
if(!window.codecabin)
window.codecabin = {};
if(codecabin.DeactivateFeedbackForm)
return;
codecabin.DeactivateFeedbackForm = function(plugin)
{
var self = this;
var strings = codecabin_deactivate_feedback_form_strings;
this.plugin = plugin;
// Dialog HTML
var element = $('\
<div class="codecabin-deactivate-dialog" data-remodal-id="' + plugin.slug + '">\
<form>\
<input type="hidden" name="plugin"/>\
<h2>' + strings.quick_feedback + '</h2>\
<p>\
' + strings.foreword + '\
</p>\
<ul class="codecabin-deactivate-reasons"></ul>\
<input name="comments" placeholder="' + strings.brief_description + '"/>\
<br>\
<p class="codecabin-deactivate-dialog-buttons">\
<input type="submit" class="button confirm" value="' + strings.skip_and_deactivate + '"/>\
<button data-remodal-action="cancel" class="button button-primary">' + strings.cancel + '</button>\
</p>\
</form>\
</div>\
')[0];
this.element = element;
$(element).find("input[name='plugin']").val(JSON.stringify(plugin));
$(element).on("click", "input[name='reason']", function(event) {
$(element).find("input[type='submit']").val(
strings.submit_and_deactivate
);
});
$(element).find("form").on("submit", function(event) {
self.onSubmit(event);
});
// Reasons list
var ul = $(element).find("ul.codecabin-deactivate-reasons");
for(var key in plugin.reasons)
{
var li = $("<li><input type='radio' name='reason'/> <span></span></li>");
$(li).find("input").val(key);
$(li).find("span").html(plugin.reasons[key]);
$(ul).append(li);
}
// Listen for deactivate
$("#the-list [data-slug='" + plugin.slug + "'] .deactivate>a").on("click", function(event) {
self.onDeactivateClicked(event);
});
}
codecabin.DeactivateFeedbackForm.prototype.onDeactivateClicked = function(event)
{
this.deactivateURL = event.target.href;
event.preventDefault();
if(!this.dialog)
this.dialog = $(this.element).remodal();
this.dialog.open();
}
codecabin.DeactivateFeedbackForm.prototype.onSubmit = function(event)
{
var element = this.element;
var strings = codecabin_deactivate_feedback_form_strings;
var self = this;
var data = $(element).find("form").serialize();
$(element).find("button, input[type='submit']").prop("disabled", true);
if($(element).find("input[name='reason']:checked").length)
{
$(element).find("input[type='submit']").val(strings.thank_you);
$.ajax({
type: "POST",
url: "https://www.ccplugins.co/api-deactivation-dialog/feedback.php",
data: data,
complete: function() {
window.location.href = self.deactivateURL;
}
});
}
else
{
$(element).find("input[type='submit']").val(strings.please_wait);
window.location.href = self.deactivateURL;
}
event.preventDefault();
return false;
}
for(var i = 0; i < codecabin_deactivate_feedback_form_plugins.length; i++)
{
var plugin = codecabin_deactivate_feedback_form_plugins[i];
new codecabin.DeactivateFeedbackForm(plugin);
}
}); deactivate-feedback-form.css 0000666 00000000642 15176115772 0012074 0 ustar 00 .codecabin-deactivate-dialog
{
text-align: left;
width: auto;
}
.codecabin-deactivate-dialog-buttons
{
text-align: right;
}
.codecabin-deactivate-dialog
{
width: auto !important;
}
.codecabin-deactivate-dialog h2
{
color: gray;
font-variant: small-caps;
font-size: 1.2em;
padding-bottom: 0.2em;
border-bottom: 1px solid lightgray;
}
.codecabin-deactivate-dialog input[name="comments"]
{
width: 380px;
} remodal-default-theme.css 0000666 00000013126 15176115772 0011446 0 ustar 00 /*
* Remodal - v1.1.1
* Responsive, lightweight, fast, synchronized with CSS animations, fully customizable modal window plugin with declarative configuration and hash tracking.
* http://vodkabears.github.io/remodal/
*
* Made by Ilya Makarov
* Under MIT License
*/
/* ==========================================================================
Remodal's default mobile first theme
========================================================================== */
/* Default theme styles for the background */
.remodal-bg.remodal-is-opening,
.remodal-bg.remodal-is-opened {
-webkit-filter: blur(3px);
filter: blur(3px);
}
/* Default theme styles of the overlay */
.remodal-overlay {
background: rgba(43, 46, 56, 0.9);
}
.remodal-overlay.remodal-is-opening,
.remodal-overlay.remodal-is-closing {
-webkit-animation-duration: 0.3s;
animation-duration: 0.3s;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
.remodal-overlay.remodal-is-opening {
-webkit-animation-name: remodal-overlay-opening-keyframes;
animation-name: remodal-overlay-opening-keyframes;
}
.remodal-overlay.remodal-is-closing {
-webkit-animation-name: remodal-overlay-closing-keyframes;
animation-name: remodal-overlay-closing-keyframes;
}
/* Default theme styles of the wrapper */
.remodal-wrapper {
padding: 10px 10px 0;
}
/* Default theme styles of the modal dialog */
.remodal {
box-sizing: border-box;
width: 100%;
margin-bottom: 10px;
padding: 35px;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
color: #2b2e38;
background: #fff;
}
.remodal.remodal-is-opening,
.remodal.remodal-is-closing {
-webkit-animation-duration: 0.3s;
animation-duration: 0.3s;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
.remodal.remodal-is-opening {
-webkit-animation-name: remodal-opening-keyframes;
animation-name: remodal-opening-keyframes;
}
.remodal.remodal-is-closing {
-webkit-animation-name: remodal-closing-keyframes;
animation-name: remodal-closing-keyframes;
}
/* Vertical align of the modal dialog */
.remodal,
.remodal-wrapper:after {
vertical-align: middle;
}
/* Close button */
.remodal-close {
position: absolute;
top: 0;
left: 0;
display: block;
overflow: visible;
width: 35px;
height: 35px;
margin: 0;
padding: 0;
cursor: pointer;
-webkit-transition: color 0.2s;
transition: color 0.2s;
text-decoration: none;
color: #95979c;
border: 0;
outline: 0;
background: transparent;
}
.remodal-close:hover,
.remodal-close:focus {
color: #2b2e38;
}
.remodal-close:before {
font-family: Arial, "Helvetica CY", "Nimbus Sans L", sans-serif !important;
font-size: 25px;
line-height: 35px;
position: absolute;
top: 0;
left: 0;
display: block;
width: 35px;
content: "\00d7";
text-align: center;
}
/* Dialog buttons */
.remodal-confirm,
.remodal-cancel {
font: inherit;
display: inline-block;
overflow: visible;
min-width: 110px;
margin: 0;
padding: 12px 0;
cursor: pointer;
-webkit-transition: background 0.2s;
transition: background 0.2s;
text-align: center;
vertical-align: middle;
text-decoration: none;
border: 0;
outline: 0;
}
.remodal-confirm {
color: #fff;
background: #81c784;
}
.remodal-confirm:hover,
.remodal-confirm:focus {
background: #66bb6a;
}
.remodal-cancel {
color: #fff;
background: #e57373;
}
.remodal-cancel:hover,
.remodal-cancel:focus {
background: #ef5350;
}
/* Remove inner padding and border in Firefox 4+ for the button tag. */
.remodal-confirm::-moz-focus-inner,
.remodal-cancel::-moz-focus-inner,
.remodal-close::-moz-focus-inner {
padding: 0;
border: 0;
}
/* Keyframes
========================================================================== */
@-webkit-keyframes remodal-opening-keyframes {
from {
-webkit-transform: scale(1.05);
transform: scale(1.05);
opacity: 0;
}
to {
-webkit-transform: none;
transform: none;
opacity: 1;
-webkit-filter: blur(0);
filter: blur(0);
}
}
@keyframes remodal-opening-keyframes {
from {
-webkit-transform: scale(1.05);
transform: scale(1.05);
opacity: 0;
}
to {
-webkit-transform: none;
transform: none;
opacity: 1;
-webkit-filter: blur(0);
filter: blur(0);
}
}
@-webkit-keyframes remodal-closing-keyframes {
from {
-webkit-transform: scale(1);
transform: scale(1);
opacity: 1;
}
to {
-webkit-transform: scale(0.95);
transform: scale(0.95);
opacity: 0;
-webkit-filter: blur(0);
filter: blur(0);
}
}
@keyframes remodal-closing-keyframes {
from {
-webkit-transform: scale(1);
transform: scale(1);
opacity: 1;
}
to {
-webkit-transform: scale(0.95);
transform: scale(0.95);
opacity: 0;
-webkit-filter: blur(0);
filter: blur(0);
}
}
@-webkit-keyframes remodal-overlay-opening-keyframes {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes remodal-overlay-opening-keyframes {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@-webkit-keyframes remodal-overlay-closing-keyframes {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@keyframes remodal-overlay-closing-keyframes {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
/* Media queries
========================================================================== */
@media only screen and (min-width: 641px) {
.remodal {
max-width: 700px;
}
}
/* IE8
========================================================================== */
.lt-ie9 .remodal-overlay {
background: #2b2e38;
}
.lt-ie9 .remodal {
width: 700px;
}
class.settings.php 0000666 00000006060 15176115772 0010243 0 ustar 00 <?php
namespace codecabin;
if(!defined('ABSPATH'))
return;
class Settings implements \ArrayAccess, \JsonSerializable, \IteratorAggregate
{
private $data;
private $overrides;
private $option_name;
public function __construct($option_name)
{
if(empty($option_name) || !is_string($option_name))
throw new \Exception('Invalid option name');
$this->option_name = $option_name;
$option_value = get_option($this->option_name);
if(empty($option_value))
$this->data = (object)array();
else if(!($this->data = json_decode($option_value)))
{
global $wpdb;
throw new \Exception("Option value is not valid JSON in {$wpdb->prefix}options - " . json_last_error_msg());
}
$this->overrides = (object)array();
}
public function __get($name)
{
if(isset($this->overrides->{$name}))
return $this->overrides->{$name};
if(!isset($this->data->{$name}))
return null;
return ($this->data->{$name});
}
public function __set($name, $value)
{
$this->data->{$name} = $value;
$this->update();
}
public function __isset($name)
{
return isset($this->data->{$name}) || isset($this->overrides->{$name});
}
public function __unset($name)
{
unset($this->data->{$name});
unset($this->overrides->{$name});
$this->update();
}
public function offsetExists($offset)
{
return isset($this->data->{$offset}) || isset($this->overrides->{$offset});
}
public function offsetGet($offset)
{
if(isset($this->overrides->{$offset}))
return $this->overrides->{$offset};
return $this->data->{$offset};
}
public function offsetSet($offset, $value)
{
$this->data->{$offset} = $value;
$this->update();
}
public function offsetUnset($offset)
{
unset($this->data->{$offset});
unset($this->overrides->{$offset});
$this->update();
}
public function jsonSerialize()
{
return (object)array_merge((array)$this->data, (array)$this->overrides);
}
public function getIterator()
{
return new \ArrayIterator(array_merge((array)$this->data, (array)$this->overrides));
}
/**
* Used to set values, optionally in bulk
* @param $arg (string|array) Either a string naming the setting to be set, or an object / array of settings to set in bulk
* @param $val (optional) Where a string is given as the first parameter, pass the value you want to assign here
* @return $this
*/
public function set($arg, $val=null, $override=false)
{
$dest = ($override ? $this->overrides : $this->data);
if(is_string($arg))
$dest->{$arg} = $val;
else if(is_object($arg) || is_array($arg))
{
if($val != null)
trigger_error("Settings::set called incorrectly, second argument will be ignored", E_USER_WARNING);
foreach($arg as $key => $val)
$dest->{$key} = $val;
}
if(!$override)
$this->update();
return $this;
}
public function override($arg, $val=null)
{
return $this->set($arg, $val, true);
}
public function toArray()
{
return (array)$this->data;
}
protected function update()
{
$str = json_encode($this->data);
update_option($this->option_name, $str);
}
}