/** * @package WordPress Plugin * @subpackage CMSMasters Content Composer * @version 1.6.9 * * Visual Content Composer Lightbox jQuery Plugin * Created by CMSMasters * */ (function ($) { var ComposerLightbox = function (element, parameters) { var defaults = { closeButtons : true, backdropClose : false, closeButtonText : cmsmasters_lightbox.cancel, saveButtonText : cmsmasters_lightbox.update, mediaButtonText : cmsmasters_lightbox.add_media, boxTitle : false, loadURL : false, loadData : false }, obj = this, privateMethods = {}; // Global Methods obj.methods = { init : function () { obj.methods.options = $.extend({}, defaults, parameters); obj.methods.setVars(); }, setVars : function () { obj.methods.el = $(element); obj.methods.body = $('body'); obj.methods.lbHTML = '
/g, ']
').replace(/<\/p>\s+<([^\/])/g, '
<$1')); obj.methods.body.find('.cmsmastersBoxOut').eq(-2).find('.cmsmasters_multiple_fields > div').eq(idx).find('> .innerContent').html(content); obj.methods.closeLightbox('cmsmastersBox_' + id); privateMethods.multiUpdate(obj.methods.body.find('.cmsmastersBoxOut').eq(-2).data('id')); }, loadLink : function (data, content, id) { var idx = obj.methods.body.find('#cmsmastersBox_' + id).data('index'); obj.methods.body.find('.cmsmastersBoxOut').eq(-2).find('.cmsmasters_link_fields > li').eq(idx).find('> .cmsmasters_link_field').val(data); obj.methods.body.find('.cmsmastersBoxOut').eq(-2).find('.cmsmasters_link_fields > li').eq(idx).find('> .cmsmasters_link_wrap').html(content); obj.methods.closeLightbox('cmsmastersBox_' + id); privateMethods.linkUpdate(obj.methods.body.find('.cmsmastersBoxOut').eq(-2).data('id')); }, destroyLightbox : function (id) { obj.methods.body.find('#' + id).find('.cmsmastersBoxContInMid > div').remove(); obj.methods.body.find('#' + id).remove(); }, attachDependenceEvents : function () { var id = '_' + obj.methods.uniqID, shcd = obj.methods.body.find('#cmsmastersBox' + id).data('shortcode'), multi = obj.methods.body.find('#cmsmastersBox' + id).data('multiple'), for_editor = obj.methods.body.find('#cmsmastersBox' + id).data('for_editor'), link = obj.methods.body.find('#cmsmastersBox' + id).data('link'), newFields = [], dependField = [], dependFields = {}; if (shcd !== 'cmsmasters_row' && shcd !== 'cmsmasters_column') { if (multi) { newFields = cmsmastersMultipleShortcodes[shcd].fields; } else if (for_editor) { newFields = cmsmastersEditorShortcodes[shcd].fields; } else if (link) { newFields = cmsmastersLinkShortcode.fields; } else { newFields = cmsmastersShortcodes[shcd].fields; } } else if (shcd === 'cmsmasters_row') { newFields = cmsmastersRow.fields; } else { newFields = cmsmastersColumn.fields; } for (var key in newFields) { if (typeof newFields[key].depend === 'string') { dependField = newFields[key].depend.split(':'); if (typeof dependFields[dependField[0] + id] === 'object') { if (typeof dependFields[dependField[0] + id][dependField[1]] === 'undefined') { dependFields[dependField[0] + id][dependField[1]] = new Array(key + id); } else { dependFields[dependField[0] + id][dependField[1]].push(key + id); } } else { dependFields[dependField[0] + id] = {}; dependFields[dependField[0] + id][dependField[1]] = new Array(key + id); } } } for (var k in dependFields) { var lightbox = obj.methods.body.find('#cmsmastersBox' + id), fieldParent = lightbox.find('div[data-id="' + k + '"]'), fieldType = fieldParent.data('type'); if (fieldType === 'select') { for (var x in dependFields[k]) { if (fieldParent.find('select#' + k).val() === x) { for (var i = 0, ilength = dependFields[k][x].length; i < ilength; i += 1) { lightbox.find('div[data-id="' + dependFields[k][x][i] + '"]').slideDown('fast'); } } } fieldParent.find('select#' + k).bind('change', function (e) { var newK = $(e.target).attr('id'); for (var y in dependFields[newK]) { if ($(this).val() === y) { for (var j = 0, jlength = dependFields[newK][y].length; j < jlength; j += 1) { lightbox.find('div[data-id="' + dependFields[newK][y][j] + '"]').slideDown('fast'); } } else { for (var l = 0, llength = dependFields[newK][y].length; l < llength; l += 1) { lightbox.find('div[data-id="' + dependFields[newK][y][l] + '"]').slideUp('fast'); } } } } ); } else if (fieldType === 'radio') { for (var x in dependFields[k]) { if (fieldParent.find('input[name="' + k + '"]:checked').val() === x) { for (var i = 0, ilength = dependFields[k][x].length; i < ilength; i += 1) { lightbox.find('div[data-id="' + dependFields[k][x][i] + '"]').slideDown('fast'); } } } fieldParent.find('input[name="' + k + '"]').bind('change', function (e) { var newK = $(e.target).attr('name'); for (var y in dependFields[newK]) { if ($(this).val() === y) { for (var j = 0, jlength = dependFields[newK][y].length; j < jlength; j += 1) { lightbox.find('div[data-id="' + dependFields[newK][y][j] + '"]').slideDown('fast'); } } else { for (var l = 0, llength = dependFields[newK][y].length; l < llength; l += 1) { lightbox.find('div[data-id="' + dependFields[newK][y][l] + '"]').slideUp('fast'); } } } } ); } else if (fieldType === 'checkbox') { for (var w in dependFields[k]) { if (fieldParent.find('input[type="checkbox"]:checked').val() === w) { for (var m = 0, mlength = dependFields[k][w].length; m < mlength; m += 1) { lightbox.find('div[data-id="' + dependFields[k][w][m] + '"]').slideDown('fast'); } } } fieldParent.find('input[type="checkbox"]').bind('change', function (e) { var newK = $(e.target).parents('div[data-id]').data('id'); for (var y in dependFields[newK]) { if ($(this).is(':checked') && $(this).val() === y) { for (var j = 0, jlength = dependFields[newK][y].length; j < jlength; j += 1) { lightbox.find('div[data-id="' + dependFields[newK][y][j] + '"]').slideDown('fast'); } } else { for (var l = 0, llength = dependFields[newK][y].length; l < llength; l += 1) { lightbox.find('div[data-id="' + dependFields[newK][y][l] + '"]').slideUp('fast'); } } } } ); } else if (fieldType === 'upload' || fieldType === 'input') { for (var s in dependFields[k]) { if (fieldParent.find('input#' + k).val() !== '') { for (var n = 0, nlength = dependFields[k][s].length; n < nlength; n += 1) { lightbox.find('div[data-id="' + dependFields[k][s][n] + '"]').slideDown('fast'); } } } fieldParent.find('input#' + k).bind('change', function (e) { var newK = $(e.target).attr('id'); for (var y in dependFields[newK]) { if ($(this).val() !== '') { for (var j = 0, jlength = dependFields[newK][y].length; j < jlength; j += 1) { lightbox.find('div[data-id="' + dependFields[newK][y][j] + '"]').slideDown('fast'); } } else { for (var l = 0, llength = dependFields[newK][y].length; l < llength; l += 1) { lightbox.find('div[data-id="' + dependFields[newK][y][l] + '"]').slideUp('fast'); } } } } ); } } }, attachGeneratedEvents : function () { // Type Shortcodes if ($.inArray('shortcodes', obj.methods.eventsArray) !== -1) { // Shortcode Choose $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_shortcodes ul li a').bind('click', function () { var shcd = $(this).data('shortcode'), prepend = $(this).parents('.cmsmasters_shortcodes').data('prepend'), cmsmasters_editor = $(this).data('editor'); if (obj.methods.colIndex) { cmsmastersContentComposer.methods.addShortcode(shcd, obj.methods.colIndex, prepend); obj.methods.closeLightbox('cmsmastersBox_' + obj.methods.uniqID); } else { var attrs = '', contentPart = '', elObj = {}; if (cmsmasters_editor) { for (var k in cmsmastersEditorShortcodes[shcd].fields) { if ( k !== cmsmastersEditorShortcodes[shcd].content && cmsmastersEditorShortcodes[shcd].fields[k].def !== '' ) { attrs += ' ' + k + '="' + cmsmastersEditorShortcodes[shcd].fields[k].def + '"'; } } contentPart = cmsmastersEditorShortcodes[shcd].pair ? cmsmastersEditorShortcodes[shcd].def + '[/' + shcd + ']' : ''; } else { for (var k in cmsmastersShortcodes[shcd].fields) { if ( k !== cmsmastersShortcodes[shcd].content && cmsmastersShortcodes[shcd].fields[k].def !== '' ) { attrs += ' ' + k + '="' + cmsmastersShortcodes[shcd].fields[k].def + '"'; } } contentPart = cmsmastersShortcodes[shcd].pair ? cmsmastersShortcodes[shcd].def + '[/' + shcd + ']' : ''; } elObj = { type : shcd, index : obj.methods.colIndex, content : '[' + shcd + attrs + ']' + contentPart, editor : window.tinyMCE.activeEditor.id, for_editor : (cmsmasters_editor ? true : false) }; obj.methods.closeLightbox('cmsmastersBox_' + obj.methods.uniqID); setTimeout(function () { obj.methods.openLightbox(elObj); }, 150); } return false; } ); } // Type Select Multiple if ($.inArray('select_multiple', obj.methods.eventsArray) !== -1) { // Select Change $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_field_select_multiple select').bind('change', function () { $(this).parents('.cmsmasters_field_select_multiple').find('.cmsmasters_cat_cancel').fadeIn('fast'); } ); // Cancel Select Choises $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_cat_cancel').bind('click', function () { $(this).parents('.cmsmasters_field_select_multiple').find('select > option').removeProp('selected'); $(this).fadeOut('fast'); return false; } ); } // Type Color if ($.inArray('color', obj.methods.eventsArray) !== -1) { // Color Picker if (cmsmasters_lightbox.palettes !== '') { $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_color_field').wpColorPicker( { palettes : cmsmasters_lightbox.palettes.split(',') } ); } else { $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_color_field').wpColorPicker(); } } // Type Range if ($.inArray('range', obj.methods.eventsArray) !== -1) { // Range Number Change $('#cmsmastersBox_' + obj.methods.uniqID + ' input[type="range"]').bind('change', function () { $(this).next('input[type=text]').val($(this).val()); } ); } // Type Upload if ($.inArray('upload', obj.methods.eventsArray) !== -1) { // Uploaded Image Remove $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_upload_cancel').bind('click', function () { $(this).parent().fadeOut(500, function () { $(this).removeAttr('style').find('.cmsmasters_preview_image').attr('src', ''); $(this).next().val('').trigger('change'); } ); return false; } ); } // Type Gallery if ($.inArray('gallery', obj.methods.eventsArray) !== -1) { // Gallery Image Remove $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_gallery').on('click', '.cmsmasters_gallery_cancel', function () { $(this).parents('li').fadeOut(500, function () { if ($(this).parents('ul').find('li').length < 2) { $(this).parents('ul').parent().find('.cmsmasters_upload_button').data( { state : 'gallery-library', editing : false } ).val(cmsmasters_lightbox.create_gallery); } $(this).remove(); privateMethods.galUpdate(obj.methods.uniqID); } ); return false; } ); // Sort Gallery Images $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_gallery').sortable( { items : '> li', handle : '> img', tolerance : 'pointer', opacity : 0.85, cursor : 'move', update : function () { privateMethods.galUpdate(obj.methods.uniqID); } } ); } // Type Multiple if ($.inArray('multiple', obj.methods.eventsArray) !== -1) { // Add Controls $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_multiple_fields > div').each(function () { privateMethods.multiAddControls($(this)); } ); // Add New Element $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_multiple_parent > .cmsmasters_multi_add').bind('click', function () { var shcd = $('#cmsmastersBox_' + obj.methods.uniqID).data('shortcode').slice(0, -1), multiFields = $(this).parents('.cmsmasters_multiple_parent').find('.cmsmasters_multiple_fields'), attrs = '', val = '', html = undefined; for (var k in cmsmastersMultipleShortcodes[shcd].fields) { if ( cmsmastersMultipleShortcodes[shcd].content !== k && cmsmastersMultipleShortcodes[shcd].fields[k].def !== '' ) { attrs += ' ' + k + '="' + cmsmastersMultipleShortcodes[shcd].fields[k].def + '"'; } } val = '[' + shcd + attrs + ']' + (cmsmastersMultipleShortcodes[shcd].pair ? cmsmastersMultipleShortcodes[shcd].def + '[/' + shcd + ']' : ''); html = $(cmsmastersContentComposer.methods.convertShortcodes(val, shcd)).hide(); multiFields.append(html); multiFields.find('> div:eq(-1)').slideDown('fast'); privateMethods.multiAddControls(multiFields.find('> div:eq(-1)')); privateMethods.multiUpdate(obj.methods.uniqID); return false; } ); // Edit Element $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_multiple_fields').on('click', '> div > .innerContent', function () { var shcd = $('#cmsmastersBox_' + obj.methods.uniqID).data('shortcode').slice(0, -1), elObj = {}; elObj = { type : shcd, index : $(this).parent().index(), content : $(this).parent().find('.innerCode').html(), multiple : true }; setTimeout(function () { obj.methods.openLightbox(elObj); }, 150); return false; } ); // Copy Element $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_multiple_fields').on('click', '> div > .cmsmasters_multi_copy', function () { var el = $(this).parent(), elClone = el.clone(); el.after(elClone.hide()); el.next().slideDown('fast', function () { privateMethods.multiUpdate(obj.methods.uniqID); } ); return false; } ); // Delete Element $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_multiple_fields').on('click', '> div > .cmsmasters_multi_del', function () { $(this).parent().slideUp('fast', function () { $(this).remove(); privateMethods.multiUpdate(obj.methods.uniqID); } ); return false; } ); // Sort Elements $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_multiple_fields').sortable( { items : '> div', handle : '> .cmsmasters_multi_handle', containment : 'parent', tolerance : 'pointer', axis : 'y', opacity : 0.85, cursor : 'move', update : function () { privateMethods.multiUpdate(obj.methods.uniqID); } } ); } // Type Table if ($.inArray('table', obj.methods.eventsArray) !== -1) { // Apply Column Text Align privateMethods.applyColAlign(); // Apply Row Type $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_table .cmsmasters_table_row').each(function () { if ($(this).is(':not(.cmsmasters_table_row_top)') && $(this).is(':not(.cmsmasters_table_row_bot)')) { var rowType = $(this).find('.cmsmasters_table_cell:eq(0) .cmsmasters_row_select').val(); if (rowType !== '') { $(this).addClass('cmsmasters_table_row_' + rowType); } $(this).find('.cmsmasters_table_cell').filter(':not(:eq(0))').filter(':not(:eq(-1))').each(function () { if (rowType === 'header') { $(this).addClass('.cmsmasters_table_cell_haeder'); } } ); } } ); // Change Column Text Align $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_table').on('change', '.cmsmasters_column_select', function () { var index = $(this).parents('.cmsmasters_table_cell').index(), colAlign = $(this).val(); $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_table .cmsmasters_table_row').each(function () { if ($(this).is(':not(.cmsmasters_table_row_top)') && $(this).is(':not(.cmsmasters_table_row_bot)')) { $(this).find('.cmsmasters_table_cell').eq(index).removeClass('cmsmasters_table_cell_aligncenter cmsmasters_table_cell_alignright').addClass('cmsmasters_table_cell_align' + colAlign); } } ); setTimeout(function () { privateMethods.tableUpdate(obj.methods.uniqID); }, 150); } ); // Change Row Type $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_table').on('change', '.cmsmasters_row_select', function () { var row = $(this).parents('.cmsmasters_table_row'), rowType = $(this).val(); row.removeClass('cmsmasters_table_row_header cmsmasters_table_row_footer').addClass('cmsmasters_table_row_' + rowType); row.find('.cmsmasters_table_cell').filter(':not(:eq(0))').filter(':not(:eq(-1))').each(function () { if (rowType === 'header') { $(this).addClass('.cmsmasters_table_cell_haeder'); } } ); setTimeout(function () { privateMethods.tableUpdate(obj.methods.uniqID); }, 150); } ); // Edit Table Cell Text $('#cmsmastersBox_' + obj.methods.uniqID + ' .cmsmasters_table').on('click', '.cmsmasters_table_cell.cmsmasters_change_cell', function () { var cellText = $(this).html().replace(/