var ve_iframe = { scripts_to_wait: 0, time_to_call: false, ajax: false, activities_list: [], scripts_to_load: false, loaded_script: {}, loaded_styles: {}, inline_scripts: [], inline_scripts_body: [] }; var ve=ve||parent.ve; var md5=md5||ve.php.md5; (function(iframe,$) { iframe.init=function(){ var excludeScripts=['jquery-core','jquery-migrate'],ls_rc,i; for(i in excludeScripts) { ls_rc = 'load-script:' + excludeScripts[i]; if(!iframe.loaded_script[window.md5(ls_rc)]) { iframe.loaded_script[window.md5(ls_rc)] = ls_rc; } } }; iframe.startSorting = function() { $('html').addClass('ve_sorting'); }; iframe.stopSorting = function() { $('html').removeClass('ve_sorting') }; iframe.initDroppable = function() { $('html').addClass('ve_dragging'); $drop=$('.ve_element-ve_col'); $drop.addClass('ui-state-default'); $drop.bind('mouseover.vcDraggable', function(){ $(this).addClass('ui-state-hover'); }).bind('mouseout.vcDraggable', function(){ $(this).removeClass('ui-state-hover'); }); }; iframe.killDroppable = function() { $('body').removeClass('ve_dragging'); $('.ve_container-block').unbind('mouseover.vcDraggable mouseleave.vcDraggable'); }; iframe.addActivity = function(callback) { this.activities_list.push(callback); }; iframe.renderPlaceholder = function(event, element) { var tag = $(element).data('id-base'), $helper = $('
' + parent.ve.getElementSetting(tag).name + '
').prependTo('body'); return $helper; }; iframe.setResizeAble = function(){ $.widget("ui.resizable", $.ui.resizable, { resizeTo: function(newSize) { var start = new $.Event("mousedown", { pageX: 0, pageY: 0 }); this._mouseStart(start); this.axis = 'se'; var end = new $.Event("mouseup", { pageX: newSize.width - this.originalSize.width, pageY: newSize.height - this.originalSize.height }); this._mouseDrag(end); this._mouseStop(end); } }); $(".ve-editor-view").resizable({ handles: "w", minWidth: 360, maxWidth:1170, resize: function( event, ui ) { ui.position.left=0; parent.ve.onScreenResize(event, ui); }, stop:function(event,ui){ ve.saveScreenSize(event,ui); }, create: function( event, ui ) { $(this).css('width',ve.topbar.getScreenWidth()); //ui.size.width=ve.topbar.getScreenWidth(); } }); }; iframe.resizeTo=function(width){ $(".ve-editor-view").resizable("resizeTo", { width: width }); }; iframe.setSortable = function(){ $('[data-id-base="ve_row"]').first().parent().sortable({ forcePlaceholderSize: false, items: '[data-id-base=ve_row]', handle: '.row-controls', cursor: 'move', cursorAt: {top: 20, left: 200}, placeholder: "ve_placeholder-row", helper: this.renderPlaceholder, start: function(event, ui){ ve_iframe.startSorting(); var height=ui.item.height(); ui.placeholder.height(height); }, stop: this.stopSorting, tolerance: "pointer", update: parent.ve.view.saveRowOrder }); $('.ve_element-ve_row>.ve_element_container').sortable({ forcePlaceholderSize: false, items: '> div', handle: '.col-controls', cursor: 'move', cursorAt: {top: 20, left: 200}, placeholder: "ve_placeholder-col", helper: this.renderPlaceholder, start: function(event, ui){ ve_iframe.startSorting(); var id = ui.item.data('element-id'), model = parent.ve.getElementById(id), css_class = model.view.convertSize(model.getParam('width')); // ui.item.removeClass(css_class).data('removedClass', css_class); var height=ui.item.height(); ui.item.appendTo(ui.item.parent().parent()); ui.placeholder.addClass(css_class); ui.placeholder.width(ui.placeholder.width()-4); ui.placeholder.height(height); }, stop: this.stopSorting, tolerance: "pointer", update: parent.ve.view.saveColumnOrder }); $('.ve_element-ve_col>.ve_element_container').sortable({ forcePlaceholderSize: true, helper: this.renderPlaceholder, distance: 3, scroll: true, scrollSensitivity: 70, cursor: 'move', cursorAt: {top: 20, left: 200}, connectWith:'.ve_element-ve_col>.ve_element_container', items: '> div', handle: '.element-controls', placeholder: "ve_placeholder-element", start: this.startSorting, update: parent.ve.view.saveElementOrder, change: function(event, ui) { var height=ui.item.height(); if(height>200){ height=200; } ui.placeholder.height(height); ui.placeholder.width(ui.placeholder.parent().width()); }, tolerance: "pointer", over:function (event, ui) { }, out: function(event, ui) { ui.placeholder.removeClass('ve_hidden-placeholder'); }, stop:function (event, ui) { ve_iframe.stopSorting(); } }); $('.ve_element-ve_form>.ve_element_wrapper>.ve_element_container').sortable({ forcePlaceholderSize: true, helper: this.renderPlaceholder, distance: 3, scroll: true, scrollSensitivity: 70, cursor: 'move', cursorAt: {top: 20, left: 200}, items: '> div', handle: '.form-inputs-controls', placeholder: "ve_placeholder-element", start: this.startSorting, update: parent.ve.view.saveElementOrder, change: function(event, ui) { var height=ui.item.height(); if(height>200){ height=200; } ui.placeholder.height(height); ui.placeholder.width(ui.placeholder.parent().width()); }, tolerance: "pointer", over:function (event, ui) { }, out: function(event, ui) { ui.placeholder.removeClass('ve_hidden-placeholder'); }, stop:function (event, ui) { ve_iframe.stopSorting(); } }); }; iframe.allowedLoadScript = function(src) { var script_url, i, scripts_string, scripts = [], scripts_to_add = [], ls_rc; if(src.match(/load\-scripts\.php/)) { scripts_string = src.match(/load%5B%5D=([^&]+)/)[1]; if(scripts_string) scripts = scripts_string.split(','); for(i in scripts) { ls_rc = 'load-script:' + scripts[i]; if(!iframe.loaded_script[window.md5(ls_rc)]) { iframe.loaded_script[window.md5(ls_rc)] = ls_rc; scripts_to_add.push(scripts[i]); } } return !scripts_to_add.length ? false : src.replace(/load%5B%5D=[^&]+/, 'load%5B%5D=' + scripts_to_add.join(',')); } else if(!iframe.loaded_script[window.md5(src)]) { iframe.loaded_script[window.md5(src)] = src; return src; } return false; }; iframe.addScripts = function($elements) { iframe.scripts_to_wait = $elements.length; iframe.scripts_to_load = $elements; }; iframe.addElementCustomStyle=function(style,custom_class){ if(!custom_class) { if (!iframe.$elementStyle) { iframe.$elementStyle = $('#ve_element_custom_css'); if (!iframe.$elementStyle.length) { iframe.$elementStyle = $(''); $('head').append(iframe.$elementStyle); } } style && iframe.$elementStyle.append(style); }else{ var style_id='ve_custom_style_'+custom_class; var $style=$('#'+style_id); if(!$style.length){ $style=$(''); $('head').append($style); } style&&$style.html(style); } }; iframe.loadScripts = function() { console.log('load script'); if(!iframe.scripts_to_wait || !iframe.scripts_to_load) { iframe.reload(); return; } var scripts=iframe.scripts_to_load.filter('script'); var styles=iframe.scripts_to_load.filter(':not(script)'); //console.log(scripts); if(styles.length) { styles.each(function () { var $element = $(this); var href = $element.attr('href'); if(!iframe.loaded_styles[window.md5(href)]) { $('', { rel: 'stylesheet', type: 'text/css', href: href }).appendTo('body'); } }); } if(scripts.length){ var total=scripts.length; scripts.each(function(){ var $element = $(this); //console.log($element); var src = $element.attr('src'); src = iframe.allowedLoadScript(src); if(src) { $.getScript(src, function() { total -=1; total < 1 && iframe.reload(); }); } else { total -=1; total < 1 && iframe.reload() } }); } iframe.scripts_to_wait=false; }; iframe.reload=function(){ console.log('ready'); ve.do_action('ready',$); }; iframe.doScripts=function(code){ $.globalEval(code); }; window.ve_iframe_load=function (){ if(parent.ve&&!parent.ve.loaded){ try{ parent.ve.load(); }catch(e){ setTimeout(function(){window.ve_iframe_load();},200); } ve_iframe_control_init(); }else{ setTimeout('ve_iframe_load();',200); } }; window.ve_iframe_control_init=function(){ ve.row_controls=$.contextMenu({ selector: '.row-controls .move', callback: function(key, options) { $e=options.$trigger.closest('[data-id-base]'); parent.ve.command.set({command:key,element:$e.data('element-id')}); }, items: { "edit": {name: "Edit", icon: "edit"}, "paste": {name: "Paste", icon: "paste",disabled:ve.controller.commandDisabled.row.paste}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", "quit": {name: "Cancel", icon: "quit"} } }); ve.col_controls= $.contextMenu({ selector: '.col-controls .move', callback: function(key, options) { $e=options.$trigger.closest('[data-id-base]'); parent.ve.command.set({command:key,element:$e.data('element-id')}); }, items: { "edit": {name: "Edit", icon: "edit"}, "cut": {name: "Cut", icon: "cut"}, "copy": {name: "Copy", icon: "copy"}, "paste": {name: "Paste", icon: "paste", disabled:ve.controller.commandDisabled.col.paste}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", "quit": {name: "Cancel", icon: "quit"} } }); ve.element_controls=$.contextMenu({ selector: '.element-controls .move', callback: function(key, options) { $e=options.$trigger.closest('[data-id-base]'); parent.ve.command.set({command:key,element:$e.data('element-id')}); }, items: { "cut": {name: "Cut", icon: "cut"}, "copy": {name: "Copy", icon: "copy"}, "save": {name: "Save", icon: "save"}, "delete": {name: "Delete", icon: "delete"}, "sep1": "---------", "quit": {name: "Cancel", icon: "quit"} } }); $.contextMenu({ selector: '.ve_multiple_selected', callback: function(key, options) { parent.ve.command.set({command:key,is_multi:true,element:''}); }, items: { "delete": {name: "Delete Selected Elements", icon: "delete"}, "sep1": "---------", "quit": {name: "Cancel", icon: "quit"} } }); }; $(window).load(function(){ ve_iframe_load(); }); iframe.init(); })(ve_iframe,window.jQuery);