Files
szkoleniauryzaj.pl/wp-content/plugins/popups/admin/assets/js/admin.js
2024-11-10 21:08:49 +01:00

362 lines
9.8 KiB
JavaScript

var spu = {
// module
rules : null
};
SPU_ADMIN = (function ( $ ) {
var spu_editor = '';
$(document).ready(function(){
spu.rules.init();
var color_field = $('#spu-appearance input.spu-color-field'),
spu_optin = $('#spu_optin');
// Only run if there is no optin being used in premium version
if( color_field.length && ( ! spu_optin.length || spu_optin.val() == '' ) ){
color_field.wpColorPicker({ change: applyStyles, clear: applyStyles });
}
$("#spu-appearance input,#spu-appearance select").not(".spu-color-field").change(applyStyles);
//Toogle trigger boxes on init
checkTriggerMethod( $("#spu_trigger").val() );
//Toogle trigger boxes on change
$("#spu_trigger").change(function(){
checkTriggerMethod( $(this).val() );
})
/**
* Updates on position change
*/
$('#spu_position').on('change', function(){
var $editor = SPU_ADMIN.spu_editor,
val = $(this).val();
//update editor
$editor.alterClass('spu-position-*', 'spu-position-'+ val )
if( val == 'top-bar' || val == 'bottom-bar') {
$editor.find('.spu-box-container *:not("p, .spu-fields-container, .spu-fields-container *")').remove();
}
});
});
/**
* When tinyMcr loads
*/
function TinyMceOptin() {
SPU_ADMIN.spu_editor = $("#content_ifr").contents().find('html #tinymce');
// add position class
SPU_ADMIN.spu_editor.addClass(' spu-position-' + spu_js.opts.css.position).removeClass('wp-autoresize');
applyStyles();
}
function checkTriggerMethod( val ) {
if( val == 'pixels' || val == 'percentage' || val == 'visible') {
$('tr.auto_hide').fadeIn('fast');
} else {
$('tr.auto_hide').fadeOut('fast');
}/*TODO I should fix premium so these values are not even considered here*/
if( val == 'manual' || val == 'trigger-click' || val == 'visible' || val == 'exit-intent') {
$('.spu-trigger-number').fadeOut('fast');
} else {
$('.spu-trigger-number').fadeIn('fast');
}
}
// functions
function getPxValue($el, retval) {
if($el.val()) {
return parseInt($el.val());
} else {
return (retval !== undefined) ? retval + "px" : 0;
}
}
function getColor($el, retval) {
if($el.val().length > 0) {
return $el.wpColorPicker('color');
} else {
return (retval !== undefined) ? retval : '';
}
}
function applyStyles() {
var $editor = $("#content_ifr").contents().find('html');
$editor.trigger('spu_tinymce_init');
$editor.css({
'background': spu_hexToRgb(getColor($("#spu_bgcolor")),$("#spu_bgopacity").val())
});
// if there is no optin mode load defaults
if (typeof spup_js == "undefined" || $('#spu_optin').val() == '') {
// remove any field that could be there after deactivating premium version
$editor.find(".spu-fields-container").remove();
$editor.find("#tinymce").attr('style', 'padding: ' + getPxValue($("#spu-padding")) + 'px !important');
$editor.find("#tinymce").css({
'background-color': spu_hexToRgb(getColor($("#spu-background-color")),$("#spu_background_opacity").val()),
'border-color': getColor($("#spu-border-color")),
'border-width': getPxValue($("#spu-border-width")),
'border-style': $("#spu-border-type").val(),
'width': $("#spu-width").val(),
'color': getColor($("#spu-color")),
'height': 'auto',
'min-width': '200px',
'max-width': '100%',
'margin': '8px auto 0;',
'box-shadow': ($("#spu-shadow-type").val() == 'inset' ? 'inset' : '') +' '+ $("#spu-shadow-x").val() + 'px ' + $("#spu-shadow-y").val() + 'px ' + $("#spu-shadow-blur").val() + 'px ' + $("#spu-shadow-spread").val() + 'px ' + getColor($("#spu-shadow-color"))
});
var img_src = $('#spu_bgimage').val();
$editor.find("#tinymce").css({
'background-image': 'url("'+img_src+'")',
'background-size' : 'cover'
});
}
}
/*
* Rules
*
* Js for needed for rules
*
* @since: 1.0.0
* Thanks to advanced custom fields plugin for part of this code
*/
spu.rules = {
$el : null,
init : function(){
// vars
var _this = this;
// $el
_this.$el = $('#spu-rules');
// add rule
_this.$el.on('click', '.rules-add-rule', function(){
_this.add_rule( $(this).closest('tr') );
return false;
});
// remove rule
_this.$el.on('click', '.rules-remove-rule', function(){
_this.remove_rule( $(this).closest('tr') );
return false;
});
// add rule
_this.$el.on('click', '.rules-add-group', function(){
_this.add_group();
return false;
});
// change rule
_this.$el.on('change', '.param select', function(){
// vars
var $tr = $(this).closest('tr'),
rule_id = $tr.attr('data-id'),
$group = $tr.closest('.rules-group'),
group_id = $group.attr('data-id'),
val_td = $tr.find('td.value'),
ajax_data = {
'action' : "spu/field_group/render_rules",
'nonce' : spu_js.nonce,
'rule_id' : rule_id,
'group_id' : group_id,
'value' : '',
'param' : $(this).val()
};
// add loading gif
var div = $('<div class="spu-loading"><img src="'+spu_js.admin_url+'/images/wpspin_light.gif"/> </div>');
val_td.html( div );
// load rules html
$.ajax({
url: ajaxurl,
data: ajax_data,
type: 'post',
dataType: 'html',
success: function(html){
val_td.html(html);
}
});
// Operators Rules
var operator_td = $tr.find('td.operator'),
ajax_data = {
'action' : "spu/field_group/render_operator",
'nonce' : spu_js.nonce,
'rule_id' : rule_id,
'group_id' : group_id,
'value' : '',
'param' : $(this).val()
};
operator_td.html( div );
$.ajax({
url: ajaxurl,
data: ajax_data,
type: 'post',
dataType: 'html',
success: function(html){
operator_td.html(html);
}
});
});
},
add_rule : function( $tr ){
// vars
var $tr2 = $tr.clone(),
old_id = $tr2.attr('data-id'),
new_id = 'rule_' + ( parseInt( old_id.replace('rule_', ''), 10 ) + 1);
// update names
$tr2.find('[name]').each(function(){
$(this).attr('name', $(this).attr('name').replace( old_id, new_id ));
$(this).attr('id', $(this).attr('id').replace( old_id, new_id ));
});
// update data-i
$tr2.attr( 'data-id', new_id );
// add tr
$tr.after( $tr2 );
return false;
},
remove_rule : function( $tr ){
// vars
var siblings = $tr.siblings('tr').length;
if( siblings == 0 ) {
// remove group
this.remove_group( $tr.closest('.rules-group') );
} else {
// remove tr
$tr.remove();
}
},
add_group : function(){
// vars
var $group = this.$el.find('.rules-group:last'),
$group2 = $group.clone(),
old_id = $group2.attr('data-id'),
new_id = 'group_' + ( parseInt( old_id.replace('group_', ''), 10 ) + 1);
// update names
$group2.find('[name]').each(function(){
$(this).attr('name', $(this).attr('name').replace( old_id, new_id ));
$(this).attr('id', $(this).attr('id').replace( old_id, new_id ));
});
// update data-i
$group2.attr( 'data-id', new_id );
// update h4
$group2.find('h4').html( spu_js.l10n.or ).addClass('rules-or');
// remove all tr's except the first one
$group2.find('tr:not(:first)').remove();
// add tr
$group.after( $group2 );
},
remove_group : function( $group ){
$group.remove();
}
};
return {
onTinyMceInit: function() {
TinyMceOptin();
}
}
}(jQuery));
( function( global, $ ) {
var editor,
syncCSS = function() {
$( '#spu-custom-css' ).val( editor.getSession().getValue() );
},
loadAce = function() {
if(! $('#custom_css').length )
return;
editor = ace.edit( 'custom_css' );
global.safecss_editor = editor;
editor.getSession().setUseWrapMode( true );
editor.setShowPrintMargin( false );
editor.getSession().setValue( $( '#spu-custom-css' ).val() );
editor.getSession().setMode( "ace/mode/css" );
jQuery.fn.spin&&$( '#custom_css_container' ).spin( false );
$( '#post' ).submit( syncCSS );
};
if ( $.browser.msie&&parseInt( $.browser.version, 10 ) <= 7 ) {
$( '#custom_css_container' ).hide();
$( '#spu-custom-css' ).show();
return false;
} else {
$( global ).load( loadAce );
}
global.aceSyncCSS = syncCSS;
} )( this, jQuery );
function spu_hexToRgb(hex, alpha) {
hex = hex.replace('#', '');
var r = parseInt(hex.length == 3 ? hex.slice(0, 1).repeat(2) : hex.slice(0, 2), 16);
var g = parseInt(hex.length == 3 ? hex.slice(1, 2).repeat(2) : hex.slice(2, 4), 16);
var b = parseInt(hex.length == 3 ? hex.slice(2, 3).repeat(2) : hex.slice(4, 6), 16);
if ( alpha ) {
return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + alpha + ')';
}
else {
return 'rgb(' + r + ', ' + g + ', ' + b + ')';
}
}
/**
* jQuery alterClass plugin
*
* Remove element classes with wildcard matching. Optionally add classes:
* $( '#foo' ).alterClass( 'foo-* bar-*', 'foobar' )
*
* Copyright (c) 2011 Pete Boere (the-echoplex.net)
* Free under terms of the MIT license: http://www.opensource.org/licenses/mit-license.php
*
*/
(function ( $ ) {
$.fn.alterClass = function ( removals, additions ) {
var self = this;
if ( removals.indexOf( '*' ) === -1 ) {
// Use native jQuery methods if there is no wildcard matching
self.removeClass( removals );
return !additions ? self : self.addClass( additions );
}
var patt = new RegExp( '\\s' +
removals.
replace( /\*/g, '[A-Za-z0-9-_]+' ).
split( ' ' ).
join( '\\s|\\s' ) +
'\\s', 'g' );
self.each( function ( i, it ) {
var cn = ' ' + it.className + ' ';
while ( patt.test( cn ) ) {
cn = cn.replace( patt, ' ' );
}
it.className = $.trim( cn );
});
return !additions ? self : self.addClass( additions );
};
})( jQuery );