(function (api) {
// Extends our custom "example-1" section.
api.sectionConstructor['onepress-plus'] = api.Section.extend({
// No events for this type of section.
attachEvents: function () {
},
// Always make the section active.
isContextuallyActive: function () {
return true;
}
});
})(wp.customize);
/*
jQuery deparam is an extraction of the deparam method from Ben Alman's jQuery BBQ
http://benalman.com/projects/jquery-bbq-plugin/
*/
(function ($) {
$.deparam = function (params, coerce) {
var obj = {},
coerce_types = {'true': !0, 'false': !1, 'null': null};
// Iterate over all name=value pairs.
$.each(params.replace(/\+/g, ' ').split('&'), function (j, v) {
var param = v.split('='),
key = decodeURIComponent(param[0]),
val,
cur = obj,
i = 0,
// If key is more complex than 'foo', like 'a[]' or 'a[b][c]', split it
// into its component parts.
keys = key.split(']['),
keys_last = keys.length - 1;
// If the first keys part contains [ and the last ends with ], then []
// are correctly balanced.
if (/\[/.test(keys[0]) && /\]$/.test(keys[keys_last])) {
// Remove the trailing ] from the last keys part.
keys[keys_last] = keys[keys_last].replace(/\]$/, '');
// Split first keys part into two parts on the [ and add them back onto
// the beginning of the keys array.
keys = keys.shift().split('[').concat(keys);
keys_last = keys.length - 1;
} else {
// Basic 'foo' style key.
keys_last = 0;
}
// Are we dealing with a name=value pair, or just a name?
if (param.length === 2) {
val = decodeURIComponent(param[1]);
// Coerce values.
if (coerce) {
val = val && !isNaN(val) ? +val // number
: val === 'undefined' ? undefined // undefined
: coerce_types[val] !== undefined ? coerce_types[val] // true, false, null
: val; // string
}
if (keys_last) {
// Complex key, build deep object structure based on a few rules:
// * The 'cur' pointer starts at the object top-level.
// * [] = array push (n is set to array length), [n] = array if n is
// numeric, otherwise object.
// * If at the last keys part, set the value.
// * For each keys part, if the current level is undefined create an
// object or array based on the type of the next keys part.
// * Move the 'cur' pointer to the next level.
// * Rinse & repeat.
for (; i <= keys_last; i++) {
key = keys[i] === '' ? cur.length : keys[i];
cur = cur[key] = i < keys_last
? cur[key] || (keys[i + 1] && isNaN(keys[i + 1]) ? {} : [])
: val;
}
} else {
// Simple key, even simpler rules, since only scalars and shallow
// arrays are allowed.
if ($.isArray(obj[key])) {
// val is already an array, so push on the next value.
obj[key].push(val);
} else if (obj[key] !== undefined) {
// val isn't an array, but since a second value has been specified,
// convert val into an array.
obj[key] = [obj[key], val];
} else {
// val is a scalar.
obj[key] = val;
}
}
} else if (key) {
// No value was defined, so set something meaningful.
obj[key] = coerce
? undefined
: '';
}
});
return obj;
};
})(jQuery);
// COLOR ALPHA -----------------------------
/**
* Alpha Color Picker JS
*/
(function ($) {
/**
* Override the stock color.js toString() method to add support for
* outputting RGBa or Hex.
*/
Color.prototype.toString = function (flag) {
// If our no-alpha flag has been passed in, output RGBa value with 100% opacity.
// This is used to set the background color on the opacity slider during color changes.
if ('no-alpha' == flag) {
return this.toCSS('rgba', '1').replace(/\s+/g, '');
}
// If we have a proper opacity value, output RGBa.
if (1 > this._alpha) {
return this.toCSS('rgba', this._alpha).replace(/\s+/g, '');
}
// Proceed with stock color.js hex output.
var hex = parseInt(this._color, 10).toString(16);
if (this.error) {
return '';
}
if (hex.length < 6) {
for (var i = 6 - hex.length - 1; i >= 0; i--) {
hex = '0' + hex;
}
}
return '#' + hex;
};
/**
* Given an RGBa, RGB, or hex color value, return the alpha channel value.
*/
function acp_get_alpha_value_from_color(value) {
var alphaVal;
// Remove all spaces from the passed in value to help our RGBa regex.
value = value.replace(/ /g, '');
if (value.match(/rgba\(\d+\,\d+\,\d+\,([^\)]+)\)/)) {
alphaVal = parseFloat(value.match(/rgba\(\d+\,\d+\,\d+\,([^\)]+)\)/)[1]).toFixed(2) * 100;
alphaVal = parseInt(alphaVal);
} else {
alphaVal = 100;
}
return alphaVal;
}
/**
* Force update the alpha value of the color picker object and maybe the alpha slider.
*/
function acp_update_alpha_value_on_color_input(alpha, $input, $alphaSlider, update_slider) {
var iris, colorPicker, color;
iris = $input.data('a8cIris');
colorPicker = $input.data('wpWpColorPicker');
// Set the alpha value on the Iris object.
iris._color._alpha = alpha;
// Store the new color value.
color = iris._color.toString();
// Set the value of the input.
$input.val(color);
$input.trigger('color_change');
// Update the background color of the color picker.
colorPicker.toggler.css({
'background-color': color
});
// Maybe update the alpha slider itself.
if (update_slider) {
acp_update_alpha_value_on_alpha_slider(alpha, $alphaSlider);
}
// Update the color value of the color picker object.
$input.wpColorPicker('color', color);
}
/**
* Update the slider handle position and label.
*/
function acp_update_alpha_value_on_alpha_slider(alpha, $alphaSlider) {
$alphaSlider.slider('value', alpha);
$alphaSlider.find('.ui-slider-handle').text(alpha.toString());
}
$.fn.alphaColorPicker = function () {
return this.each(function () {
// Scope the vars.
var $input, startingColor, paletteInput, showOpacity, defaultColor, palette,
colorPickerOptions, $container, $alphaSlider, alphaVal, sliderOptions;
// Store the input.
$input = $(this);
// We must wrap the input now in order to get our a top level class
// around the HTML added by wpColorPicker().
$input.wrap('
');
// Get some data off the input.
paletteInput = $input.attr('data-palette') || 'true';
showOpacity = $input.attr('data-show-opacity') || 'true';
defaultColor = $input.attr('data-default-color') || '';
// Process the palette.
if (paletteInput.indexOf('|') !== -1) {
palette = paletteInput.split('|');
} else if ('false' == paletteInput) {
palette = false;
} else {
palette = true;
}
// Get a clean starting value for the option.
startingColor = $input.val().replace(/\s+/g, '');
//startingColor = $input.val().replace( '#', '' );
//console.log( startingColor );
// If we don't yet have a value, use the default color.
if ('' == startingColor) {
startingColor = defaultColor;
}
// Set up the options that we'll pass to wpColorPicker().
colorPickerOptions = {
change: function (event, ui) {
var key, value, alpha, $transparency;
key = $input.attr('data-customize-setting-link');
value = $input.wpColorPicker('color');
// Set the opacity value on the slider handle when the default color button is clicked.
if (defaultColor == value) {
alpha = acp_get_alpha_value_from_color(value);
$alphaSlider.find('.ui-slider-handle').text(alpha);
}
// If we're in the Customizer, send an ajax request to wp.customize
// to trigger the Save action.
if (typeof wp.customize != 'undefined') {
wp.customize(key, function (obj) {
obj.set(value);
});
}
$transparency = $container.find('.transparency');
// Always show the background color of the opacity slider at 100% opacity.
$transparency.css('background-color', ui.color.toString('no-alpha'));
$input.trigger('color_change');
},
clear: function () {
var key = $input.attr('data-customize-setting-link') || '';
if (key && key !== '') {
if (typeof wp.customize != 'undefined') {
wp.customize(key, function (obj) {
obj.set('');
});
}
}
$input.val('');
$input.trigger('color_change');
},
palettes: palette // Use the passed in palette.
};
// Create the colorpicker.
$input.wpColorPicker(colorPickerOptions);
$container = $input.parents('.wp-picker-container:first');
// Insert our opacity slider.
$('
' +
'' +
'' +
'' +
'' +
'
').appendTo($container.find('.wp-picker-holder'));
$alphaSlider = $container.find('.alpha-slider');
// If starting value is in format RGBa, grab the alpha channel.
alphaVal = acp_get_alpha_value_from_color(startingColor);
// Set up jQuery UI slider() options.
sliderOptions = {
create: function (event, ui) {
var value = $(this).slider('value');
// Set up initial values.
$(this).find('.ui-slider-handle').text(value);
$(this).siblings('.transparency ').css('background-color', startingColor);
},
value: alphaVal,
range: 'max',
step: 1,
min: 0,
max: 100,
animate: 300
};
// Initialize jQuery UI slider with our options.
$alphaSlider.slider(sliderOptions);
// Maybe show the opacity on the handle.
if ('true' == showOpacity) {
$alphaSlider.find('.ui-slider-handle').addClass('show-opacity');
}
// Bind event handlers for the click zones.
$container.find('.min-click-zone').on('click', function () {
acp_update_alpha_value_on_color_input(0, $input, $alphaSlider, true);
});
$container.find('.max-click-zone').on('click', function () {
acp_update_alpha_value_on_color_input(100, $input, $alphaSlider, true);
});
// Bind event handler for clicking on a palette color.
$container.find('.iris-palette').on('click', function () {
var color, alpha;
color = $(this).css('background-color');
alpha = acp_get_alpha_value_from_color(color);
acp_update_alpha_value_on_alpha_slider(alpha, $alphaSlider);
// Sometimes Iris doesn't set a perfect background-color on the palette,
// for example rgba(20, 80, 100, 0.3) becomes rgba(20, 80, 100, 0.298039).
// To compensante for this we round the opacity value on RGBa colors here
// and save it a second time to the color picker object.
if (alpha != 100) {
color = color.replace(/[^,]+(?=\))/, (alpha / 100).toFixed(2));
}
$input.wpColorPicker('color', color);
});
// Bind event handler for clicking on the 'Default' button.
$container.find('.button.wp-picker-default').on('click', function () {
var alpha = acp_get_alpha_value_from_color(defaultColor);
acp_update_alpha_value_on_alpha_slider(alpha, $alphaSlider);
});
// Bind event handler for typing or pasting into the input.
$input.on('input', function () {
var value = $(this).val();
var alpha = acp_get_alpha_value_from_color(value);
acp_update_alpha_value_on_alpha_slider(alpha, $alphaSlider);
});
// Update all the things when the slider is interacted with.
$alphaSlider.slider().on('slide', function (event, ui) {
var alpha = parseFloat(ui.value) / 100.0;
acp_update_alpha_value_on_color_input(alpha, $input, $alphaSlider, false);
// Change value shown on slider handle.
$(this).find('.ui-slider-handle').text(ui.value);
});
});
}
}(jQuery));
// WP COLOR ALPHA customizer -----------------------------
(function (api, $) {
api.controlConstructor['alpha-color'] = api.Control.extend({
ready: function () {
var control = this;
$('.alpha-color-control', control.container).alphaColorPicker({
clear: function (event, ui) {
}
});
}
});
})(wp.customize, jQuery);
// WP REPEATERABLE Customizer -----------------------------
(function (api, $) {
api.controlConstructor['repeatable'] = api.Control.extend({
ready: function () {
var control = this;
setTimeout(function () {
control._init();
}, 2500);
},
eval: function (valueIs, valueShould, operator) {
switch (operator) {
case 'not_in':
valueShould = valueShould.split(',');
if ($.inArray(valueIs, valueShould) < 0) {
return true;
} else {
return false;
}
break;
case 'in':
valueShould = valueShould.split(',');
if ($.inArray(valueIs, valueShould) > -1) {
return true;
} else {
return false;
}
break;
case '!=':
return valueIs != valueShould;
case '<=':
return valueIs <= valueShould;
case '<':
return valueIs < valueShould;
case '>=':
return valueIs >= valueShould;
case '>':
return valueIs > valueShould;
case '==':
case '=':
return valueIs == valueShould;
break;
}
},
compare: function (value1, cond, value2) {
var equal = false;
var _v;
switch (cond) {
case '===':
equal = (value1 === value2) ? true : false;
break;
case 'in':
return value2.indexOf(value1) == -1 ? false : true;
break;
case '>':
equal = (value1 > value2) ? true : false;
break;
case '<':
equal = (value1 < value2) ? true : false;
break;
case '!=':
equal = (value1 != value2) ? true : false;
break;
case 'empty':
_v = _.clone(value1);
if (_.isObject(_v) || _.isArray(_v)) {
_.each(_v, function (v, i) {
if (_.isEmpty(v)) {
delete _v[i];
}
});
equal = _.isEmpty(_v) ? true : false;
} else {
equal = _.isNull(_v) || _v == '' ? true : false;
}
break;
case 'not_empty':
_v = _.clone(value1);
if (_.isObject(_v) || _.isArray(_v)) {
_.each(_v, function (v, i) {
if (_.isEmpty(v)) {
delete _v[i];
}
})
}
equal = _.isEmpty(_v) ? false : true;
break;
default:
equal = (value1 == value2) ? true : false;
}
return equal;
},
multiple_compare: function (list, values) {
var control = this;
var check = true;
try {
var test = list[0];
check = true;
if (_.isString(test)) {
check = false;
var cond = list[1];
var cond_val = list[2];
var value;
if (!_.isUndefined(values[test])) {
value = values[test];
check = control.compare(value, cond, cond_val);
}
} else if (_.isArray(test)) {
check = true;
_.each(list, function (req) {
var cond_key = req[0];
var cond_cond = req[1];
var cond_val = req[2];
var t_val = values[cond_key];
if (_.isUndefined(t_val)) {
t_val = '';
}
if (!control.compare(t_val, cond_cond, cond_val)) {
check = false;
}
});
}
} catch (e) {
check = false;
}
return check;
},
conditionize: function ($context) {
var control = this;
if ($context.hasClass('conditionized')) {
return;
}
$context.addClass('conditionized');
var $fields = $('.field--item', $context);
$context.on('change condition_check', 'input, select, textarea', function (e) {
var f = $('.form', $context);
var data = $('input, textarea, select', f).serialize();
data = jQuery.deparam(data);
var fieldData = {};
if (_.isObject(data)) {
_.each(data._items, function (value) {
fieldData = value;
});
}
$fields.each(function () {
var $field = $(this);
var check = true;
var req = $field.attr('data-cond') || false;
if (!_.isUndefined(req) && req) {
req = JSON.parse(req);
check = control.multiple_compare(req, fieldData);
if (!check) {
$field.hide().addClass('cond-hide').removeClass('cond-show');
} else {
$field.slideDown().removeClass('cond-hide').addClass('cond-show');
}
}
});
});
/**
* Current support one level only
*/
$('input, select, textarea', $context).eq(0).trigger('condition_check');
},
remove_editor: function ($context) {
},
editor: function ($textarea) {
},
_init: function () {
var control = this;
var default_data = control.params.fields;
var values;
try {
if (typeof control.params.value == 'string') {
values = JSON.parse(control.params.value);
} else {
values = control.params.value;
}
} catch (e) {
values = {};
}
var max_item = 0; // unlimited
var limited_mg = control.params.limited_msg || '';
if (!isNaN(parseInt(control.params.max_item))) {
max_item = parseInt(control.params.max_item);
}
if (control.params.changeable === 'no') {
// control.container.addClass( 'no-changeable' );
}
/**
* Toggle show/hide item
*/
control.container.on('click', '.widget .widget-action, .widget .repeat-control-close, .widget-title', function (e) {
e.preventDefault();
var p = $(this).closest('.widget');
if (p.hasClass('explained')) {
//console.log( 'has: explained' );
$('.widget-inside', p).slideUp(200, 'linear', function () {
$('.widget-inside', p).removeClass('show').addClass('hide');
p.removeClass('explained');
});
} else {
// console.log( 'No: explained' );
$('.widget-inside', p).slideDown(200, 'linear', function () {
$('.widget-inside', p).removeClass('hide').addClass('show');
p.addClass('explained');
});
}
});
/**
* Remove repeater item
*/
control.container.on('click', '.repeat-control-remove', function (e) {
e.preventDefault();
var $context = $(this).closest('.repeatable-customize-control');
$("body").trigger("repeat-control-remove-item", [$context]);
control.remove_editor($context);
$context.remove();
control.rename();
control.updateValue();
control._check_max_item();
});
/**
* Get customizer control data
*
* @returns {*}
*/
control.getData = function () {
var f = $('.form-data', control.container);
var data = $('input, textarea, select', f).serialize();
return JSON.stringify(data);
};
/**
* Update repeater value
*/
control.updateValue = function () {
var data = control.getData();
//$("[data-hidden-value]", control.container).val(data);
//$("[data-hidden-value]", control.container).trigger('change');
control.setting.set(data);
};
/**
* Rename repeater item
*/
control.rename = function () {
$('.list-repeatable li', control.container).each(function (index) {
var li = $(this);
$('input, textarea, select', li).each(function () {
var input = $(this);
var name = input.attr('data-repeat-name') || undefined;
if (typeof name !== "undefined") {
name = name.replace(/__i__/g, index);
input.attr('name', name);
}
});
});
};
if (!window._upload_fame) {
window._upload_fame = wp.media({
title: wp.media.view.l10n.addMedia,
multiple: false,
//library: {type: 'all' },
//button : { text : 'Insert' }
});
}
window._upload_fame.on('close', function () {
// get selections and save to hidden input plus other AJAX stuff etc.
var selection = window._upload_fame.state().get('selection');
// console.log(selection);
});
window.media_current = {};
window.media_btn = {};
window._upload_fame.on('select', function () {
// Grab our attachment selection and construct a JSON representation of the model.
var media_attachment = window._upload_fame.state().get('selection').first().toJSON();
$('.image_id', window.media_current).val(media_attachment.id);
var preview, img_url;
img_url = media_attachment.url;
$('.current', window.media_current).removeClass('hide').addClass('show');
$('.image_url', window.media_current).val(img_url);
if (media_attachment.type == 'image') {
preview = '';
$('.thumbnail-image', window.media_current).html(preview);
}
$('.remove-button', window.media_current).show();
$('.image_id', window.media_current).trigger('change');
try {
window.media_btn.text(window.media_btn.attr('data-change-txt'));
} catch (e) {
}
});
control.handleMedia = function ($context) {
$('.item-media', $context).each(function () {
var _item = $(this);
// when remove item
$('.remove-button', _item).on('click', function (e) {
e.preventDefault();
$('.image_id, .image_url', _item).val('');
$('.thumbnail-image', _item).html('');
$('.current', _item).removeClass('show').addClass('hide');
$(this).hide();
$('.upload-button', _item).text($('.upload-button', _item).attr('data-add-txt'));
$('.image_id', _item).trigger('change');
});
// when upload item
$('.upload-button, .attachment-media-view', _item).on('click', function (e) {
e.preventDefault();
window.media_current = _item;
window.media_btn = $(this);
window._upload_fame.open();
});
});
};
/**
* Init color picker
*
* @param $context
*/
control.colorPicker = function ($context) {
// Add Color Picker to all inputs that have 'color-field' class
$('.c-color', $context).wpColorPicker({
change: function (event, ui) {
control.updateValue();
},
clear: function (event, ui) {
control.updateValue();
}
});
$('.c-coloralpha', $context).each(function () {
var input = $(this);
var c = input.val();
c = c.replace('#', '');
input.removeAttr('value');
input.prop('value', c);
input.alphaColorPicker({
change: function (event, ui) {
control.updateValue();
},
clear: function (event, ui) {
control.updateValue();
},
});
});
};
/**
* Live title events
*
* @param $context
*/
control.actions = function ($context) {
if (control.params.live_title_id) {
if (!$context.attr('data-title-format')) {
$context.attr('data-title-format', control.params.title_format);
}
var format = $context.attr('data-title-format') || '';
// Custom for special ID
if (control.id === 'onepress_section_order_styling') {
if ($context.find('input.add_by').val() !== 'click') {
format = '[live_title]';
}
}
// Live title
if (control.params.live_title_id && $("[data-live-id='" + control.params.live_title_id + "']", $context).length > 0) {
var v = '';
if ($("[data-live-id='" + control.params.live_title_id + "']", $context).is('.select-one')) {
v = $("[data-live-id='" + control.params.live_title_id + "']", $context).find('option:selected').eq(0).text();
} else {
v = $("[data-live-id='" + control.params.live_title_id + "']", $context).eq(0).val();
}
if (v == '') {
v = control.params.default_empty_title;
}
if (format !== '') {
v = format.replace('[live_title]', v);
}
$('.widget-title .live-title', $context).text(v);
$context.on('keyup change', "[data-live-id='" + control.params.live_title_id + "']", function () {
var v = '';
var format = $context.attr('data-title-format') || '';
// custom for special ID
if (control.id === 'onepress_section_order_styling') {
if ($context.find('input.add_by').val() !== 'click') {
format = '[live_title]';
}
}
if ($(this).is('.select-one')) {
v = $(this).find('option:selected').eq(0).text();
} else {
v = $(this).val();
}
if (v == '') {
v = control.params.default_empty_title;
}
if (format !== '') {
v = format.replace('[live_title]', v);
}
$('.widget-title .live-title', $context).text(v);
});
} else {
}
} else {
//$('.widget-title .live-title', $context).text( control.params.title_format );
}
};
/**
* Check limit number item
*
* @private
*/
control._check_max_item = function () {
var n = $('.list-repeatable > li.repeatable-customize-control', control.container).length;
//console.log( n );
if (n >= max_item) {
$('.repeatable-actions', control.container).hide();
if ($('.limited-msg', control.container).length <= 0) {
if (limited_mg !== '') {
var msg = $('');
msg.html(limited_mg);
msg.insertAfter($('.repeatable-actions', control.container));
msg.show();
}
} else {
$('.limited-msg', control.container).show();
}
} else {
$('.repeatable-actions', control.container).show();
$('.limited-msg', control.container).hide();
}
};
/**
* Function that loads the Mustache template
*/
control.repeaterTemplate = _.memoize(function () {
var compiled,
/*
* Underscore's default ERB-style templates are incompatible with PHP
* when asp_tags is enabled, so WordPress uses Mustache-inspired templating syntax.
*
* @see trac ticket #22344.
*/
options = {
evaluate: /<#([\s\S]+?)#>/g,
interpolate: /\{\{\{([\s\S]+?)\}\}\}/g,
escape: /\{\{([^\}]+?)\}\}(?!\})/g,
variable: 'data'
};
return function (data) {
if (typeof window.repeater_item_tpl === "undefined") {
window.repeater_item_tpl = $('#repeatable-js-item-tpl').html();
}
compiled = _.template(window.repeater_item_tpl, null, options);
return compiled(data);
};
});
control.template = control.repeaterTemplate();
/**
* Init item events
*
* @param $context
*/
control.intItem = function ($context) {
control.rename();
control.conditionize($context);
control.colorPicker($context);
control.handleMedia($context);
//Special check element
$('[data-live-id="section_id"]', $context).each(function () {
$(this).closest('.repeatable-customize-control').addClass('section-' + $(this).val());
if ($(this).val() === 'map' || $(this).val() === 'slider' ) {
$context.addClass('show-display-field-only');
}
});
// Custom for special IDs
if (control.id === 'onepress_section_order_styling') {
if ($context.find('input.add_by').val() !== 'click') {
$context.addClass('no-changeable');
// Remove because we never use
$('.item-editor textarea', $context).remove();
} else {
$context.find('.item-title').removeClass('item-hidden ');
$context.find('.item-title input[type="hidden"]').attr('type', 'text');
$context.find('.item-section_id').removeClass('item-hidden ');
$context.find('.item-section_id input[type="hidden"]').attr('type', 'text');
}
}
// Setup editor
$('.item-editor textarea', $context).each(function () {
control.editor($(this));
});
// Setup editor
$('body').trigger('repeater-control-init-item', [$context]);
};
/**
* Drag to sort items
*/
$(".list-repeatable", control.container).sortable({
handle: ".widget-title",
//containment: ".customize-control-repeatable",
containment: control.container,
/// placeholder: "sortable-placeholder",
update: function (event, ui) {
control.rename();
control.updateValue();
}
});
/**
* Create existing items
* @changed 2.1.1
*/
$.each(values, function (i, _values) {
var _templateData = $.extend(true, {}, control.params.fields);
_values = values[i];
if (_values) {
for (var j in _values) {
if ( typeof _templateData[j] === "undefined" ) {
_templateData[j] = {};
}
_templateData[j].value = _values[j];
/*
if (_templateData.hasOwnProperty(j) && _values.hasOwnProperty(j)) {
_templateData[j].value = _values[j];
}
*/
}
}
var $html = $(control.template(_templateData));
if ( control.id === 'onepress_section_order_styling') {
if ( typeof _templateData.__visibility !== "undefined" ) {
if ( _templateData.__visibility.value === 'hidden' ) {
$html.addClass( 'visibility-hidden' );
}
}
}
$('.list-repeatable', control.container).append($html);
control.intItem($html);
control.actions($html);
});
/**
* Add new item
*/
control.container.on('click', '.add-new-repeat-item', function () {
var controlbox_id = control.id;
if ( "onepress_map_items_address" === controlbox_id ) {
var map_long = wp.customize( 'onepress_map_long' ).get();
var map_lat = wp.customize( 'onepress_map_lat' ).get();
if ( '' === map_long || '' === map_lat ) {
$('#customize-control-onepress_map_items_address').find('label').append( ''+ONEPRESS_CUSTOMIZER_DATA.multiple_map_notice+'' );
return;
} else {
$('#customize-control-onepress_map_items_address').find('.onepress-customizer-notice').remove();
}
}
var $html = $(control.template(default_data));
$('.list-repeatable', control.container).append($html);
// add unique ID for section if id_key is set
if (control.params.id_key !== '') {
$html.find('.item-' + control.params.id_key).find('input').val('sid' + (new Date().getTime()));
}
$html.find('input.add_by').val('click');
control.intItem($html);
control.actions($html);
control.updateValue();
control._check_max_item();
});
/**
* Update repeater data when any events fire.
*/
$('.list-repeatable', control.container).on('keyup change color_change', 'input, select, textarea', function (e) {
control.updateValue();
});
control._check_max_item();
}
});
})(wp.customize, jQuery);
/**
* WP EDITOR plugin
*/
(function ($) {
window._wpEditor = {
init: function (id, content, settings) {
var _id = '__wp_mce_editor__';
var _tpl = $('#_wp-mce-editor-tpl').html();
if (typeof content === "undefined") {
content = '';
}
if (typeof window.tinyMCEPreInit.mceInit[_id] !== "undefined") {
var tmceInit = _.clone(window.tinyMCEPreInit.mceInit[_id]);
var qtInit = _.clone(window.tinyMCEPreInit.qtInit[_id]);
tmceInit = $.extend(tmceInit, settings.tinymce);
qtInit = $.extend(qtInit, settings.qtag);
var tpl = _tpl.replace(new RegExp(_id, "g"), id);
var template = $(tpl);
template.find('textarea').removeAttr('rows').removeAttr('cols');
$("#" + id).replaceWith(template);
// set content
$('#' + id).val(content);
$wrap = tinymce.$('#wp-' + id + '-wrap');
tmceInit.body_class = tmceInit.body_class.replace(new RegExp(_id, "g"), id);
tmceInit.selector = tmceInit.selector.replace(new RegExp(_id, "g"), id);
tmceInit.cache_suffix = '';
$wrap.removeClass('html-active').addClass('tmce-active');
tmceInit.init_instance_callback = function (editor) {
if (typeof settings === 'object') {
if (typeof settings.mod === 'string' && settings.mod === 'html') {
//console.log( settings.mod );
try {
switchEditors.go(id, settings.mod);
} catch (e) {
}
}
// editor.theme.resizeTo('100%', 500);
if (typeof settings.init_instance_callback === "function") {
settings.init_instance_callback(editor);
}
if (settings.sync_id !== '') {
if (typeof settings.sync_id === 'string') {
editor.on('keyup change', function (e) {
var html = editor.getContent({format: 'raw'});
html = _wpEditor.removep(html);
$('#' + settings.sync_id).val(html).trigger('change');
});
} else {
editor.on('keyup change', function (e) {
var html = editor.getContent({format: 'raw'});
html = _wpEditor.removep(html);
settings.sync_id.val(html).trigger('change');
});
}
$('textarea#' + id).on('keyup change', function () {
var v = $(this).val();
if (typeof settings.sync_id === 'string') {
$('#' + settings.sync_id).val(v).trigger('change');
} else {
settings.sync_id.val(v).trigger('change');
}
});
}
}
};
tmceInit.plugins = tmceInit.plugins.replace('fullscreen,', '');
tinyMCEPreInit.mceInit[id] = tmceInit;
qtInit.id = id;
tinyMCEPreInit.qtInit[id] = qtInit;
if ($wrap.hasClass('tmce-active') || !tinyMCEPreInit.qtInit.hasOwnProperty(id)) {
tinymce.init(tmceInit);
if (!window.wpActiveEditor) {
window.wpActiveEditor = id;
}
}
if (typeof quicktags !== 'undefined') {
/**
* Reset quicktags
* This is crazy condition
* Maybe this is a bug ?
* see wp-includes/js/quicktags.js line 252
*/
if (QTags.instances['0']) {
QTags.instances['0'] = false;
}
quicktags(qtInit);
if (!window.wpActiveEditor) {
window.wpActiveEditor = id;
}
}
}
},
/**
* Replace paragraphs with double line breaks
* @see wp-admin/js/editor.js
*/
removep: function (html) {
return window.switchEditors._wp_Nop(html);
},
sync: function () {
//
},
remove: function (id) {
var content = '';
var editor = false;
if (editor = tinymce.get(id)) {
content = editor.getContent({format: 'raw'});
content = _wpEditor.removep(content);
editor.remove();
} else {
content = $('#' + id).val();
}
if ($('#wp-' + id + '-wrap').length > 0) {
window._wpEditorBackUp = window._wpEditorBackUp || {};
if (typeof window._wpEditorBackUp[id] !== "undefined") {
$('#wp-' + id + '-wrap').replaceWith(window._wpEditorBackUp[id]);
}
}
$('#' + id).val(content);
}
};
$.fn.wp_js_editor = function (options) {
// This is the easiest way to have default options.
if (options !== 'remove') {
options = $.extend({
sync_id: "", // sync to another text area
tinymce: {}, // tinymce setting
qtag: {}, // quick tag settings
mod: '', // quick tag settings
init_instance_callback: function () {
} // quick tag settings
}, options);
} else {
options = 'remove';
}
return this.each(function () {
var edit_area = $(this);
edit_area.uniqueId();
// Make sure edit area have a id attribute
var id = edit_area.attr('id') || '';
if (id === '') {
return;
}
if ('remove' !== options) {
if (!options.mod) {
options.mod = edit_area.attr('data-editor-mod') || '';
}
window._wpEditorBackUp = window._wpEditorBackUp || {};
window._wpEditorBackUp[id] = edit_area;
window._wpEditor.init(id, edit_area.val(), options);
} else {
window._wpEditor.remove(id);
}
});
};
}(jQuery));
(function (api, $) {
function _the_editor(container) {
var _editor = {
editor_added: false,
ready: function (container) {
var control = this;
control.container = container;
control.container.addClass('onepress-editor-added');
control.editing_area = $('textarea', control.container);
if (control.editing_area.hasClass('wp-editor-added')) {
return false;
}
control.editing_area.uniqueId();
control.editing_area.addClass('wp-editor-added');
control.editing_id = control.editing_area.attr('id') || false;
if (!control.editing_id) {
return false;
}
control.editor_id = 'wpe-for-' + control.editing_id;
control.preview = $('');
control.editing_editor = $('');
var content = control.editing_area.val();
// Load default value
$('textarea', control.editing_editor).val(content);
try {
control.preview.html(window.switchEditors._wp_Autop(content));
} catch (e) {
}
$('body').on('click', '#customize-controls, .customize-section-back', function (e) {
if (!$(e.target).is(control.preview)) {
/// e.preventDefault(); // Keep this AFTER the key filter above
control.editing_editor.removeClass('wpe-active');
$('.wp-js-editor-preview').removeClass('wpe-focus');
}
});
control.container.find('.wp-js-editor').addClass('wp-js-editor-active');
control.preview.insertBefore(control.editing_area);
control._init();
$(window).on('resize', function () {
control._resize();
});
},
_add_editor: function () {
var control = this;
if (!this.editor_added) {
this.editor_added = true;
$('body .wp-full-overlay').append(control.editing_editor);
$('textarea', control.editing_editor).attr('data-editor-mod', (control.editing_area.attr('data-editor-mod') || '')).wp_js_editor({
sync_id: control.editing_area,
init_instance_callback: function (editor) {
var w = $('#wp-' + control.editor_id + '-wrap');
$('.wp-editor-tabs', w).append('');
$('.wp-editor-tabs', w).append('');
$('.wp-editor-tabs', w).append('');
w.on('click', '.close-wp-editor', function (e) {
e.preventDefault();
control.editing_editor.removeClass('wpe-active');
$('.wp-js-editor-preview').removeClass('wpe-focus');
});
$('.preview-wp-editor', w).hover(function () {
w.closest('.modal-wp-js-editor').css({opacity: 0});
}, function () {
w.closest('.modal-wp-js-editor').css({opacity: 1});
});
w.on('click', '.fullscreen-wp-editor', function (e) {
e.preventDefault();
w.closest('.modal-wp-js-editor').toggleClass('fullscreen');
setTimeout(function () {
$(window).resize();
}, 600);
});
}
});
}
},
_init: function () {
var control = this;
control.editing_area.on('change', function () {
control.preview.html(window.switchEditors._wp_Autop($(this).val()));
});
control.preview.on('click', function (e) {
control._add_editor();
$('.modal-wp-js-editor').removeClass('wpe-active');
control.editing_editor.toggleClass('wpe-active');
tinyMCE.get(control.editor_id).focus();
control.preview.addClass('wpe-focus');
control._resize();
return false;
});
control.container.on('click', '.wp-js-editor-preview', function (e) {
e.preventDefault();
});
},
_resize: function () {
var control = this;
var w = $('#wp-' + control.editor_id + '-wrap');
var height = w.innerHeight();
var tb_h = w.find('.mce-toolbar-grp').eq(0).height();
tb_h += w.find('.wp-editor-tools').eq(0).height();
tb_h += 50;
//var width = $( window ).width();
var editor = tinymce.get(control.editor_id);
if (editor) {
control.editing_editor.width('');
editor.theme.resizeTo('100%', height - tb_h);
w.find('textarea.wp-editor-area').height(height - tb_h);
}
}
};
_editor.ready(container);
}
function _remove_editor($context) {
$('textarea', $context).each(function () {
var id = $(this).attr('id') || '';
var editor_id = 'wpe-for-' + id;
try {
var editor = tinymce.get(editor_id);
if (editor) {
editor.remove();
}
$('#wrap-' + editor_id).remove();
$('#wrap-' + id).remove();
if (typeof tinyMCEPreInit.mceInit[editor_id] !== "undefined") {
delete tinyMCEPreInit.mceInit[editor_id];
}
if (typeof tinyMCEPreInit.qtInit[editor_id] !== "undefined") {
delete tinyMCEPreInit.qtInit[editor_id];
}
} catch (e) {
}
});
}
var _is_init_editors = {};
// jQuery( document ).ready( function( $ ){
api.bind('ready', function (e, b) {
$('#customize-theme-controls .accordion-section').each(function () {
var section = $(this);
var id = section.attr('id') || '';
if (id) {
if (typeof _is_init_editors[id] === "undefined") {
_is_init_editors[id] = true;
setTimeout(function () {
if ($('.wp-js-editor', section).length > 0) {
$('.wp-js-editor', section).each(function () {
_the_editor($(this));
});
}
if ($('.repeatable-customize-control:not(.no-changeable) .item-editor', section).length > 0) {
$('.repeatable-customize-control:not(.no-changeable) .item-editor', section).each(function () {
_the_editor($(this));
});
}
}, 10);
}
}
});
// Check section when focus
if (_wpCustomizeSettings.autofocus) {
if (_wpCustomizeSettings.autofocus.section) {
var id = "sub-accordion-section-" + _wpCustomizeSettings.autofocus.section;
_is_init_editors[id] = true;
var section = $('#' + id);
setTimeout(function () {
if ($('.wp-js-editor', section).length > 0) {
$('.wp-js-editor', section).each(function () {
_the_editor($(this));
});
}
if ($('.repeatable-customize-control:not(.no-changeable) .item-editor', section).length > 0) {
$('.repeatable-customize-control:not(.no-changeable) .item-editor', section).each(function () {
_the_editor($(this));
});
}
}, 1000);
} else if (_wpCustomizeSettings.autofocus.panel) {
}
}
$('body').on('repeater-control-init-item', function (e, container) {
$('.item-editor', container).each(function () {
_the_editor($(this));
});
});
$('body').on('repeat-control-remove-item', function (e, container) {
_remove_editor(container);
});
});
})(wp.customize, jQuery);
jQuery(window).ready(function ($) {
if (typeof onepress_customizer_settings !== "undefined") {
if (onepress_customizer_settings.number_action > 0) {
$('.control-section-themes h3.accordion-section-title').append('' + onepress_customizer_settings.number_action + '');
}
}
/**
* For Hero layout content settings
*/
$('select[data-customize-setting-link="onepress_hero_layout"]').on('change on_custom_load', function () {
var v = $(this).val() || '';
$("li[id^='customize-control-onepress_hcl']").hide();
$("li[id^='customize-control-onepress_hcl" + v + "']").show();
});
$('select[data-customize-setting-link="onepress_hero_layout"]').trigger('on_custom_load');
/**
* For Gallery content settings
*/
$('select[data-customize-setting-link="onepress_gallery_source"]').on('change on_custom_load', function () {
var v = $(this).val() || '';
$("li[id^='customize-control-onepress_gallery_source_']").hide();
$("li[id^='customize-control-onepress_gallery_api_']").hide();
$("li[id^='customize-control-onepress_gallery_settings_']").hide();
$("li[id^='customize-control-onepress_gallery_source_" + v + "']").show();
$("li[id^='customize-control-onepress_gallery_api_" + v + "']").show();
$("li[id^='customize-control-onepress_gallery_settings_" + v + "']").show();
});
$('select[data-customize-setting-link="onepress_gallery_source"]').trigger('on_custom_load');
/**
* For Gallery display settings
*/
$('select[data-customize-setting-link="onepress_gallery_display"]').on('change on_custom_load', function () {
var v = $(this).val() || '';
switch (v) {
case 'slider':
$("#customize-control-onepress_g_row_height, #customize-control-onepress_g_col, #customize-control-onepress_g_spacing").hide();
break;
case 'justified':
$("#customize-control-onepress_g_col, #customize-control-onepress_g_spacing").hide();
$("#customize-control-onepress_g_row_height").show();
break;
case 'carousel':
$("#customize-control-onepress_g_row_height, #customize-control-onepress_g_col").hide();
$("#customize-control-onepress_g_col, #customize-control-onepress_g_spacing").show();
break;
case 'masonry':
$("#customize-control-onepress_g_row_height").hide();
$("#customize-control-onepress_g_col, #customize-control-onepress_g_spacing").show();
break;
default:
$("#customize-control-onepress_g_row_height").hide();
$("#customize-control-onepress_g_col, #customize-control-onepress_g_spacing").show();
}
});
$('select[data-customize-setting-link="onepress_gallery_display"]').trigger('on_custom_load');
});
/**
* Icon picker
*/
jQuery(document).ready(function ($) {
window.editing_icon = false;
var icon_picker = $('