1261 lines
32 KiB
JavaScript
1261 lines
32 KiB
JavaScript
/*
|
|
* KingComposer Page Builder
|
|
*
|
|
* (c) Copyright king-theme.com
|
|
*
|
|
*
|
|
* kc.builder.js
|
|
*
|
|
*/
|
|
|
|
( function($){
|
|
|
|
if( typeof( kc ) == 'undefined' )
|
|
window.kc = {};
|
|
|
|
$().extend( kc.views, {
|
|
|
|
builder : new kc.backbone.views('no-model').extend({
|
|
|
|
render : function(){
|
|
|
|
var el = $( kc.template('container'));
|
|
|
|
$('#kc-container').remove();
|
|
|
|
if ($('#postdivrich').length > 0) {
|
|
$('#postdivrich').hide().removeClass('first-load').after( el );
|
|
} else if ($('div.gutenberg').length > 0) {
|
|
$('div.gutenberg').hide().removeClass('first-load').after( el );
|
|
el.show();
|
|
} else if (wp.blocks !== undefined && $('#editor').length > -1) {
|
|
$('#kc-controls').remove();
|
|
$('#editor .editor-block-list__layout').after( el );
|
|
setTimeout(function() {
|
|
$('.edit-post-header').prepend($('#kc-controls'));
|
|
}, 100);
|
|
}
|
|
|
|
this.el = el;
|
|
|
|
return el;
|
|
|
|
},
|
|
|
|
events : {
|
|
'.classic-mode:click' : kc.switch,
|
|
'.basic-add:click' : kc.backbone.add,
|
|
'.kc-add-sections:click' : 'sections',
|
|
'.kc-online-presets:click' : 'online_sections',
|
|
'.post-settings:click' : 'post_settings',
|
|
'.optimized-page:click' : 'optimized',
|
|
'.quick-save:click' : 'quick_save',
|
|
'.save-page-content:click' : 'save_page',
|
|
'.collapse:click' : 'collapse',
|
|
'#kc-footers li.quickadd:click' : 'footer'
|
|
},
|
|
|
|
sections : function(e, opt){
|
|
|
|
var atts = {
|
|
title: kc.__.i61,
|
|
width: 1024,
|
|
float: true,
|
|
class: 'no-footer bg-blur-style section-manager-popup',
|
|
},
|
|
pop = kc.tools.popup.render( e.target, atts );
|
|
|
|
if( typeof opt != 'object' )
|
|
opt = {};
|
|
|
|
/*
|
|
* save content from row to section
|
|
*/
|
|
if( opt.save_row !== undefined ){
|
|
pop.data({ model: opt.save_row });
|
|
pop.addClass('kc-save-row-to-section');
|
|
}
|
|
|
|
/*
|
|
* select another section
|
|
*/
|
|
if( opt.current !== undefined && opt.model !== undefined ){
|
|
pop.data({ model: opt.model, 'current_item': opt.current });
|
|
}
|
|
|
|
if (kc.sections === undefined || kc.sections.items.length === 0){
|
|
|
|
pop.find('.m-p-body').append('<p class="align-center" style="height:200px;"></p>');
|
|
|
|
kc.ui.sections.reload( pop );
|
|
|
|
}else kc.ui.sections.render( pop );
|
|
|
|
return pop;
|
|
|
|
},
|
|
|
|
online_sections : function(e){
|
|
|
|
if ($('#kc-presets-library-pop').length > 0) {
|
|
$('#kc-presets-library-pop').show();
|
|
return;
|
|
};
|
|
|
|
var pop = $('<div id="kc-presets-library-pop" \
|
|
class="kc-params-popup wp-pointer-top kc-popup-float" \
|
|
style="width:90vw;height:95vh !important">\
|
|
<div class="m-p-wrap wp-pointer-content">\
|
|
<h3 class="m-p-header">\
|
|
<span data-st="label">Online Presets & Templates Library</span>\
|
|
<i data-prevent-drag="true" title="Hide popup" class="sl-close sl-func"></i>\
|
|
</h3>\
|
|
<div class="m-p-body" style="height:95vh;max-height:calc(95vh - 55px);padding: 0px;">\
|
|
<iframe src="https://presets.kingcomposer.com/presets/pricing" \
|
|
style="width:100%;height:100%;"></iframe>\
|
|
<div class="kc-popup-loading" style="display:block"><span class="kc-loader"></span></div>\
|
|
</div>\
|
|
</div>\
|
|
</div>');
|
|
|
|
$('body').append(pop);
|
|
|
|
pop.find('h3.m-p-header i.sl-close').on('click', function(e) {
|
|
pop.hide();
|
|
e.preventDefault();
|
|
});
|
|
|
|
pop.on('click', function(e) {
|
|
if (e.target.id == 'kc-presets-library-pop') {
|
|
pop.hide();
|
|
e.preventDefault();
|
|
}
|
|
});
|
|
|
|
pop.find('iframe').on('load', function(){
|
|
$(this).parent().find('.kc-popup-loading').remove();
|
|
if (kc_pdk[0] != 'developer-package' && kc_pdk[1] < new Date().getTime()/1000)
|
|
this.contentWindow.postMessage({pdk: 0}, '*');
|
|
else this.contentWindow.postMessage({pdk: '1'}, '*');
|
|
});
|
|
|
|
return;
|
|
|
|
var atts = {
|
|
title: kc.__.i69,
|
|
width: 1200,
|
|
float: true,
|
|
class: 'no-footer full-screen',
|
|
},
|
|
pop = kc.tools.popup.render( e.target, atts );
|
|
|
|
if( typeof opt != 'object' )
|
|
opt = {};
|
|
|
|
if (kc.cfg.preset_link === undefined)
|
|
kc.cfg.preset_link = 'https://kingcomposer.com/presets/pricing/?kc_action=presets';
|
|
|
|
kc.cfg.preset_link = kc.cfg.preset_link.replace( "http://features.kingcomposer.com/", "https://kingcomposer.com/presets/");
|
|
|
|
var src = kc.cfg.preset_link+'&ver=' + kc_version + '&client_site='+kc.tools.base64.encode(kc_ajax_url);
|
|
|
|
if (window.location.href.indexOf('https') === 0)
|
|
src = 'https://kingcomposer.com/redirect.php?url='+encodeURIComponent(src);
|
|
|
|
var ifr = $('<iframe src="'+src+'" style="width:100%;height:100%;"></iframe>'),
|
|
loading = '<div class="kc-popup-loading" style="display:block"><span class="kc-loader"></span></div>';
|
|
|
|
pop.find('.m-p-body').append(ifr).append(loading);
|
|
|
|
ifr.on('load', function(){
|
|
$(this).parent().find('.kc-popup-loading').remove();
|
|
});
|
|
|
|
return pop;
|
|
|
|
},
|
|
|
|
post_settings : function( e ){
|
|
|
|
var atts = { title: 'Content Settings', width: 800, class: 'no-footer bg-blur-style' },
|
|
pop = kc.tools.popup.render( e.target, atts );
|
|
|
|
var arg = kc.tools.reIndexForm($("input[name^='kc_post_meta']").serializeArray(), []).kc_post_meta;
|
|
|
|
var sections = $( kc.template( 'post-settings', arg ) );
|
|
|
|
pop.find('.m-p-body').append( sections );
|
|
|
|
if( typeof arg.callback == 'function' )
|
|
arg.callback( sections, $ );
|
|
|
|
return false;
|
|
|
|
},
|
|
|
|
optimized : function( e ){
|
|
|
|
var atts = { title: 'Optimize Settings', width: 800, class: 'no-footer bg-blur-style' },
|
|
pop = kc.tools.popup.render( e.target, atts );
|
|
|
|
var arg = kc.tools.reIndexForm($("input[name^='kc_post_meta']").serializeArray(), []).kc_post_meta;
|
|
|
|
var sections = $( kc.template( 'optimized-settings', arg ) );
|
|
|
|
pop.find('.m-p-body').append( sections );
|
|
|
|
if( typeof arg.callback == 'function' )
|
|
arg.callback( sections, $ );
|
|
|
|
return false;
|
|
|
|
},
|
|
|
|
collapse : function(e){
|
|
|
|
var ctn = $('#kc-container');
|
|
if (!ctn.hasClass('collapse'))
|
|
{
|
|
ctn.addClass('collapse');
|
|
$('#kc-page-cfg-collapsed').val('collapse');
|
|
}
|
|
else
|
|
{
|
|
ctn.removeClass('collapse');
|
|
$('#kc-page-cfg-collapsed').val('');
|
|
}
|
|
|
|
e.preventDefault();
|
|
return false;
|
|
|
|
},
|
|
|
|
footer : function(){
|
|
|
|
var content = $(this).data('content');
|
|
|
|
if( content == 'custom' ){
|
|
|
|
var atts = {
|
|
title: kc.__.i36,
|
|
width: 750,
|
|
float: true,
|
|
class: 'push-custom-content',
|
|
save_text: 'Push to builder'
|
|
},
|
|
pop = kc.tools.popup.render( this, atts );
|
|
|
|
var copied = kc.backbone.stack.get('KC_RowClipboard');
|
|
if( copied === undefined || copied == '' )
|
|
copied = '';
|
|
pop.find('.m-p-body').html( kc.__.i37+'<p></p><textarea style="width: 100%;height: 300px;">'+copied+'</textarea>');
|
|
|
|
pop.data({
|
|
callback : function( pop ){
|
|
|
|
var content = pop.find('textarea').val();
|
|
if( content !== '' )
|
|
kc.backbone.push( content );
|
|
}
|
|
});
|
|
|
|
return;
|
|
|
|
}else if( content == 'paste' ){
|
|
content = kc.backbone.stack.get('KC_RowClipboard');
|
|
if( content === undefined || content == '' ){
|
|
content = '[kc_column_text]<p>'+kc.__.i38+'</p>[/kc_column_text]';
|
|
}
|
|
}
|
|
|
|
if( content != '' )
|
|
kc.backbone.push( content );
|
|
|
|
},
|
|
|
|
quick_save: function(e) {
|
|
kc.instant_submit();
|
|
e.preventDefault();
|
|
},
|
|
|
|
save_page : function(e){
|
|
|
|
kc.views.builder.sections( e, {save_row: 'all'} );
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
} ),
|
|
|
|
views_sections : new kc.backbone.views().extend({
|
|
|
|
render : function( params ){
|
|
|
|
var el = new $( kc.template( 'views-sections', params ) );
|
|
kc.params.process_all( params.args.content, el.find('> .kc-views-sections-wrap'), 'views_section' );
|
|
|
|
this.el = el;
|
|
|
|
return el;
|
|
|
|
},
|
|
|
|
events : {
|
|
'>.kc-views-sections-control .edit:click' : 'settings',
|
|
'>.kc-views-sections-control .delete:click' : 'remove',
|
|
'>.kc-views-sections-control .double:click' : 'double',
|
|
'>.kc-views-sections-wrap .add-section:click' : 'add_section',
|
|
'>.kc-views-sections-control .more:click' : 'more',
|
|
'>.kc-views-sections-control .copy:click' : 'copy',
|
|
'>.kc-views-sections-control .cut:click' : 'cut',
|
|
'>.kc-views-sections-control:click' : function( e ){
|
|
var tar = $(e.target);
|
|
if( tar.hasClass('more') || tar.parent().hasClass('more') )
|
|
return;
|
|
$(this).find('.active').removeClass('active');
|
|
},
|
|
},
|
|
|
|
add_section : function(e) {
|
|
|
|
e.data.do_add_section(this);
|
|
|
|
},
|
|
|
|
do_add_section : function(el) {
|
|
|
|
var wrp = $(el).closest('.kc-views-sections-wrap'),
|
|
maps = kc.get.maps(el),
|
|
smaps = kc.maps[maps.views.sections],
|
|
content = '['+maps.views.sections+' title="New '+smaps.name+'"][/'+maps.views.sections+']';
|
|
|
|
wrp.find('> .kc-views-sections-label .sl-active').removeClass('sl-active');
|
|
wrp.find('> .kc-section-active').removeClass('kc-section-active');
|
|
|
|
kc.params.process_all( content, wrp, 'views_section' );
|
|
|
|
}
|
|
|
|
} ),
|
|
|
|
views_section : new kc.backbone.views().extend({
|
|
|
|
render : function( params ){
|
|
|
|
var el = $( kc.template( 'views-section', params ) );
|
|
|
|
this.el = el;
|
|
|
|
return el;
|
|
|
|
},
|
|
|
|
init : function( params, el ){
|
|
|
|
var id = el.data('model'),
|
|
btn = params.parent_wrp.find('>.kc-views-sections-label .add-section'),
|
|
title = kc.tools.esc( params.args.title ),
|
|
icon = '';
|
|
if( params.args.icon != undefined )
|
|
icon = '<i class="'+params.args.icon+'"></i> ';
|
|
|
|
kc.ui.sortInit();
|
|
|
|
var label = '<div class="section-label';
|
|
if( params.first == true )
|
|
label += ' sl-active';
|
|
label += '" id="kc-pmodel-'+id+'" data-pmodel="'+id+'">'+icon+title+'</div>';
|
|
|
|
btn.before( label );
|
|
|
|
return btn;
|
|
|
|
},
|
|
|
|
events : {
|
|
'>.kc-vs-control .settings:click' : 'settings',
|
|
'>.kc-vs-control .double:click' : 'double',
|
|
'>.kc-vs-control .add:click' : 'add',
|
|
'>.kc-vs-control .delete:click' : 'remove',
|
|
|
|
},
|
|
|
|
settings : function(){
|
|
|
|
var pop = kc.backbone.settings( this );
|
|
if( !pop ){
|
|
alert( kc.__.i39 );
|
|
return;
|
|
}
|
|
pop.data({
|
|
after_callback : function( pop ){
|
|
|
|
var id = kc.get.model( pop.data('button') ),
|
|
storage = kc.storage[ id ],
|
|
el = $('#model-'+id),
|
|
icon = '';
|
|
if( storage.args.icon != undefined )
|
|
icon = '<i class="'+storage.args.icon+'"></i> ';
|
|
|
|
$('#kc-pmodel-'+id).html( icon+kc.tools.esc( storage.args.title ) );
|
|
el.find('.kc-vertical-label').html( icon+kc.tools.esc( storage.args.title ) );
|
|
}
|
|
});
|
|
},
|
|
|
|
double : function(el){
|
|
|
|
var id = kc.get.model(this),
|
|
exp = kc.backbone.export( id ),
|
|
wrp = $(this).closest('.kc-views-sections-wrap');
|
|
|
|
wrp.find('> .kc-views-sections-label .sl-active').removeClass('sl-active');
|
|
wrp.find('> .kc-section-active').removeClass('kc-section-active');
|
|
|
|
kc.params.process_all( exp.begin+exp.content+exp.end, wrp, 'views_section' );
|
|
|
|
},
|
|
|
|
remove : function(){
|
|
|
|
var id = kc.get.model( this ),
|
|
lwrp = $('#kc-pmodel-'+id).parent();
|
|
|
|
if( confirm('Are you sure?') ){
|
|
$('#kc-pmodel-'+id).remove();
|
|
lwrp.find('.section-label').first().trigger('click');
|
|
delete kc.storage[ id ];
|
|
$('#model-'+id).remove();
|
|
}
|
|
}
|
|
|
|
|
|
} ),
|
|
|
|
row : new kc.backbone.views().extend({
|
|
|
|
render : function( params, _return ){
|
|
|
|
params.name = 'kc_row';
|
|
params.end = '[/kc_row]';
|
|
|
|
var el = $( kc.template( 'row', params.args ) ),
|
|
atts = ' width="12/12"';
|
|
|
|
if( params.args !== undefined && params.args.__section_link !== undefined ){
|
|
|
|
// do stuff
|
|
|
|
}else{
|
|
|
|
var content = (params.args.content !== undefined) ? params.args.content.toString().trim() : '';
|
|
|
|
if( content.indexOf('[kc_column') !== 0 ){
|
|
|
|
content = content.replace(/kc_column#/g,'kc_column##');
|
|
content = content.replace(/kc_column /g,'kc_column# ').replace(/kc_column\]/g,'kc_column#]');
|
|
|
|
var params = kc.params.merge( 'kc_column' );
|
|
|
|
for( var i in params ){
|
|
if( typeof( params[i] ) != 'undefined' && typeof( params[i].value ) != 'undefined' )
|
|
atts += ' '+params[i].name
|
|
+'="'+kc.tools.esc_attr( params[i].value )+'"';
|
|
}
|
|
|
|
content = '[kc_column'+atts+']'+content+'[/kc_column]';
|
|
|
|
delete params;
|
|
|
|
}
|
|
|
|
kc.params.process_columns( content, el.find('.kc-row-wrap') );
|
|
|
|
}
|
|
if( _.isUndefined(_return) )
|
|
$('#kc-container>#kc-rows').append( el );
|
|
|
|
this.el = el;
|
|
|
|
return el;
|
|
|
|
},
|
|
|
|
events : {
|
|
'.row-container-control .close:click' : 'remove',
|
|
'.row-container-control .settings:click' : 'edit',
|
|
'.row-container-control .double:click' : 'double',
|
|
'.row-container-control .copy:click' : 'copy',
|
|
'.row-container-control .columns:click' : 'columns',
|
|
'.row-container-control .collapse:click' : 'collapse',
|
|
'.row-container-control .addToSections:click' : 'sections',
|
|
'.row-container-control .rowStatus:click' : 'status',
|
|
'.row-container-control .order-row input:mouseover' : 'get_order',
|
|
'.row-container-control .order-row button:click' : 'order',
|
|
'.row-container-control .order-row input:keydown' : 'order_enter',
|
|
|
|
'.kc-row-section-preview .select-another-section:click' : 'select_section',
|
|
|
|
},
|
|
|
|
columns : function(){
|
|
|
|
var columns = $(this).closest('.kc-row').find('>.kc-row-wrap>.kc-column.kc-model');
|
|
|
|
var pop = kc.tools.popup.render(
|
|
this,
|
|
{
|
|
title: 'Row Layout',
|
|
class: 'no-footer',
|
|
width: 341,
|
|
content: kc.template( 'row-columns', {current:columns.length} ),
|
|
help: 'http://kingcomposer.com/documentation/resize-sortable-columns/?source=client_installed'
|
|
}
|
|
);
|
|
|
|
pop.find('.button').on( 'click',
|
|
{
|
|
model: kc.get.model( this ),
|
|
columns: columns,
|
|
pop: pop
|
|
},
|
|
kc.views.row.set_columns
|
|
);
|
|
|
|
pop.find('input[type=checkbox]').on('change',function(){
|
|
|
|
var name = $(this).data('name');
|
|
if( name == undefined )
|
|
return;
|
|
|
|
if( this.checked == true )
|
|
kc.cfg[ name ] = 'checked';
|
|
else kc.cfg[ name ] = '';
|
|
|
|
kc.backbone.stack.set( 'KC_Configs', kc.cfg );
|
|
|
|
});
|
|
|
|
},
|
|
|
|
set_columns : function(e){
|
|
|
|
var newcols = $(this).data('column'),
|
|
columns = e.data.columns,
|
|
wrow = $( '#model-'+e.data.model+' > .kc-row-wrap' ),
|
|
colWidths = [], i = 0;
|
|
|
|
if( newcols == 'custom' ){
|
|
|
|
newcols = $(this).parent().find('input').val();
|
|
if( newcols === '' || ( newcols.indexOf('%') === -1 && newcols.indexOf('/') === -1 ) ){
|
|
alert('Invalid value');
|
|
return;
|
|
}
|
|
|
|
newcols = newcols.split('+');
|
|
if( newcols.length > 10 ){
|
|
alert('Maximum 10 columns, you entered '+newcols.length+' columns');
|
|
return;
|
|
}
|
|
var totalcols = 0;
|
|
for( i=0; i<newcols.length; i++ ){
|
|
|
|
colWidths[i] = newcols[i].trim();
|
|
|
|
if( colWidths[i].indexOf('/') > -1 ){
|
|
colWidths[i] = colWidths[i].split('/');
|
|
colWidths[i] = kc.tools.nfloat( (parseFloat( colWidths[i][0] )/parseFloat( colWidths[i][1] ))*100 );
|
|
}else if( colWidths[i].indexOf('%') > -1 ){
|
|
colWidths[i] = parseFloat( colWidths[i] );
|
|
}
|
|
|
|
totalcols += parseFloat( colWidths[i] );
|
|
|
|
}
|
|
|
|
if( totalcols > 100 || totalcols < 99 ){
|
|
alert("\nTotal is incorrect: "+totalcols+"%, it must be 100%\n");
|
|
return;
|
|
}
|
|
|
|
newcols = newcols.length;
|
|
|
|
}else{
|
|
|
|
newcols = parseInt( newcols );
|
|
|
|
for( i=0; i<newcols; i++ ){
|
|
colWidths[i] = kc.tools.nfloat( 100/newcols );
|
|
}
|
|
|
|
}
|
|
|
|
if( columns.length < newcols ){
|
|
|
|
/* Add new columns */
|
|
var reInit = false;
|
|
|
|
|
|
for( var i = 0; i < (newcols-columns.length) ; i++ ){
|
|
|
|
var dobl = kc.backbone.double( columns.last().get(0) );
|
|
|
|
if( $('#m-r-c-double-content').attr('checked') == undefined || columns.length === 0 ){
|
|
|
|
dobl.find('.kc-model').each(function(){
|
|
delete kc.storage[$(this).data('model')];
|
|
$(this).remove();
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if( reInit == true )
|
|
kc.ui.sortInit();
|
|
|
|
}else
|
|
{
|
|
/* Remove columns */
|
|
var remove = [];
|
|
|
|
for( var i = 0; i < (columns.length-newcols) ; i++ ){
|
|
|
|
var found_empty = false;
|
|
|
|
wrow.find('>.kc-column.kc-model,>.kc-column-inner.kc-model').each(function(){
|
|
if( $(this).find('>.kc-column-wrap>.kc-model').length == 0 ){
|
|
found_empty = this;
|
|
}
|
|
});
|
|
|
|
if( found_empty != false ){
|
|
|
|
$(found_empty).remove();
|
|
|
|
}else{
|
|
|
|
var last = wrow.find('>.kc-column.kc-model,>.kc-column-inner.kc-model').last(),
|
|
plast = last.prev();
|
|
|
|
if( $('#m-r-c-keep-content').attr('checked') != undefined && plast.get(0) != undefined ){
|
|
last.find('>.kc-column-wrap>.kc-model').each(function(){
|
|
plast.find('>.kc-column-wrap').append( this );
|
|
});
|
|
}else{
|
|
last.find('>.kc-column-wrap>.kc-model').each(function(){
|
|
delete kc.storage[$(this).data('model')];
|
|
});
|
|
}
|
|
|
|
|
|
last.remove();
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
i = 0;
|
|
columns.eq(0).parent().find('>.kc-model').each(function(){
|
|
kc.storage[$(this).data('model')].args.width = colWidths[i]+'%';
|
|
$(this).css({width: colWidths[i]+'%'}).find('>.kc-cols-info').html(Math.round(colWidths[i])+'%');
|
|
i++;
|
|
});
|
|
|
|
e.data.pop.remove();
|
|
|
|
},
|
|
|
|
collapse : function(){
|
|
|
|
var elm = $(this).closest('.kc-row'), model = kc.get.model(this);
|
|
|
|
if( !elm.hasClass('collapse') ){
|
|
elm.addClass('collapse');
|
|
kc.storage[model].args._collapse = '1';
|
|
}else{
|
|
elm.removeClass('collapse');
|
|
delete kc.storage[model].args._collapse;
|
|
}
|
|
|
|
},
|
|
|
|
sections : function( e ){
|
|
|
|
var model = kc.get.model(e.target);
|
|
kc.cfg.sectionsType = 'kc-section';
|
|
kc.sections = {'items': []};
|
|
kc.views.builder.sections( e, {save_row: model} );
|
|
|
|
},
|
|
|
|
copy : function( e ){
|
|
|
|
if( $(this).hasClass('copied') )
|
|
return;
|
|
|
|
var model = kc.get.model( this ),
|
|
expo = kc.backbone.export( model );
|
|
|
|
kc.backbone.stack.set( 'KC_RowClipboard', expo.begin+expo.content+expo.end );
|
|
|
|
kc.tools.toClipboard( expo.begin+expo.content+expo.end );
|
|
|
|
$(this).addClass('copied');
|
|
|
|
setTimeout( function( el ){
|
|
$(el).removeClass('copied');
|
|
}, 600, this );
|
|
|
|
return;
|
|
|
|
},
|
|
|
|
edit : function( e ){
|
|
|
|
var pop = kc.backbone.settings( this );
|
|
if( !pop ){
|
|
alert( kc.__.i41 );
|
|
return;
|
|
}
|
|
|
|
pop.data({ after_callback : function( pop ){
|
|
|
|
var id = kc.get.model( pop.data('button') ),
|
|
params = kc.storage[ id ].args,
|
|
html = '',
|
|
el = $('#model-'+id+'>.kc-row-admin-view');
|
|
|
|
if( params.row_id != undefined && params.row_id != '__empty__' )
|
|
html += '#'+params.row_id+' ';
|
|
|
|
el.html( html );
|
|
|
|
}});
|
|
|
|
},
|
|
|
|
status : function( e ){
|
|
|
|
var model = kc.get.model( this ), stt = '';
|
|
if( kc.storage[ model ] !== undefined && kc.storage[ model ].args !== undefined ){
|
|
|
|
if( $(this).hasClass('disabled') ){
|
|
|
|
$(this).removeClass('disabled').closest('.kc-model').removeClass('collapse');
|
|
delete kc.storage[ model ].args.disabled;
|
|
|
|
}else{
|
|
|
|
$(this).addClass('disabled').closest('.kc-model').addClass('collapse');
|
|
kc.storage[ model ].args.disabled = 'on';
|
|
|
|
}
|
|
|
|
kc.confirm( true );
|
|
|
|
}
|
|
|
|
},
|
|
|
|
get_order : function( e ){
|
|
$(this).val( $('#kc-rows>.kc-row').index( $(this).closest('.kc-row') )+1 );
|
|
},
|
|
|
|
order : function( e ){
|
|
|
|
var row = $(this).closest('.kc-row'),
|
|
rows = $('#kc-rows>.kc-row'),
|
|
index = $(this).parent().find('input').val();
|
|
|
|
if( index === '' || index < 0 || index > rows.length ){
|
|
|
|
$(this).prev().
|
|
animate({marginLeft:-20}, 150).
|
|
animate({marginLeft:15}, 150).
|
|
animate({marginLeft:-10}, 150).
|
|
animate({marginLeft:5}, 150).
|
|
animate({marginLeft:0}, 150);
|
|
|
|
}else if( index == 0 || index == 1 ){
|
|
|
|
rows.first().before( row );
|
|
kc.ui.scrollAssistive( row.get(0), true );
|
|
$(this).parent().find('input').val('');
|
|
|
|
}else{
|
|
|
|
if( rows.index(row) < index-1 )
|
|
rows.eq(index-1).after( row );
|
|
else rows.eq(index-1).before( row );
|
|
|
|
kc.ui.scrollAssistive( row.get(0), true );
|
|
$(this).parent().find('input').val('');
|
|
|
|
}
|
|
|
|
e.preventDefault();
|
|
return false;
|
|
|
|
},
|
|
|
|
order_enter : function( e ){
|
|
|
|
if( e.keyCode == 13 ){
|
|
$(this).next().trigger('click');
|
|
e.preventDefault();
|
|
return false;
|
|
}
|
|
},
|
|
|
|
select_section : function( e ){
|
|
|
|
var model = kc.get.model(e.target),
|
|
current = $(this).data('current');
|
|
|
|
kc.views.builder.sections( e, { current: current, model: model } );
|
|
|
|
e.preventDefault();
|
|
return false;
|
|
|
|
}
|
|
|
|
} ),
|
|
|
|
column : new kc.backbone.views().extend({
|
|
|
|
render : function( params ){
|
|
|
|
if( typeof params.name == 'undefined' || ['kc_column', 'kc_column_inner'].indexOf(params.name) === -1){
|
|
params.name = 'kc_column';
|
|
params.end = '[/kc_column]';
|
|
}
|
|
|
|
var _w = params.args['width'], el, tmp_name = 'column';
|
|
if( _w != undefined ){
|
|
if( _w.toString().indexOf('/') > -1 ){
|
|
_w = _w.split('/');
|
|
_w = parseFloat((_w[0]/_w[1])*100).toFixed(4)+'%';
|
|
}else if( _w.toString().indexOf('%') === -1 )
|
|
_w += '%';
|
|
}else{
|
|
_w = '100%';
|
|
}
|
|
|
|
if( params.name.indexOf('kc_column_inner') > -1)
|
|
tmp_name = 'column-inner';
|
|
else
|
|
tmp_name = 'column';
|
|
|
|
el = $( kc.template( tmp_name, { width: _w } ) );
|
|
kc.params.process_all( params.args.content, el.find('.kc-column-wrap') );
|
|
|
|
this.el = el;
|
|
|
|
return el;
|
|
|
|
},
|
|
|
|
events : {
|
|
'>.kc-column-control .edit:click' : 'settings',
|
|
'>.kc-column-control .add:click' : 'add',
|
|
'>.kc-column-control .delete:click' : 'delete',
|
|
'>.kc-column-control .double:click' : 'double',
|
|
'>.kc-column-control .insert:click' : 'insert',
|
|
},
|
|
|
|
|
|
delete : function( e, id ){
|
|
|
|
if( !confirm( kc.__.sure ) )
|
|
return;
|
|
|
|
if( id == undefined )
|
|
var id = kc.get.model( this );
|
|
|
|
var col = $( '#model-'+id ),
|
|
pco = col.parent();
|
|
|
|
col.find('.kc-model').each(function(){
|
|
delete kc.storage[ kc.get.model(this) ];
|
|
});
|
|
|
|
col.remove();
|
|
delete kc.storage[ id ];
|
|
|
|
kc.views.column.reset_view(pco);
|
|
|
|
},
|
|
|
|
insert : function( id ){
|
|
|
|
if (typeof id === 'object')
|
|
id = kc.get.model(this);
|
|
|
|
var el = $('#model-'+id),
|
|
data = kc.storage[id],
|
|
cdata = $().extend( true, {}, data );
|
|
|
|
if( el.parent().find('>.kc-model').length >= 10 ){
|
|
alert(kc.__.i54);
|
|
return;
|
|
}
|
|
|
|
cdata.args.content = '';
|
|
|
|
var cel = kc.views.column.render( cdata, true );
|
|
el.after(cel);
|
|
|
|
kc.views.column.reset_view(el.parent());
|
|
|
|
kc.ui.sortInit();
|
|
|
|
},
|
|
|
|
reset_view : function( el ){
|
|
|
|
var cols = el.find('>.kc-model'),
|
|
model,
|
|
wid = kc.tools.nfloat(100/cols.length);
|
|
|
|
if(cols.length === 0){
|
|
delete kc.storage[ el.closest('.kc-model').data('model') ];
|
|
el.closest('.kc-model').remove();
|
|
return;
|
|
}
|
|
|
|
cols.each(function(){
|
|
model = $(this).data('model');
|
|
kc.storage[model].args.width = wid+'%';
|
|
$(this).css({width: wid+'%'});
|
|
$(this).find('>.kc-cols-info').html(wid+'%');
|
|
});
|
|
|
|
},
|
|
|
|
apply_all : function( el, arg ){
|
|
|
|
var pop = kc.get.popup(el), model = pop.data('model');
|
|
pop.find('.sl-check.sl-func').trigger('click');
|
|
|
|
try{
|
|
var data = kc.storage[ model ].args[ arg ];
|
|
$('#model-'+model).parent().find('>div').each(function(){
|
|
|
|
model = $(this).data('model');
|
|
if( model !== undefined )
|
|
kc.storage[ model ].args[ arg ] = data;
|
|
|
|
});
|
|
}catch( ex ){}
|
|
|
|
event.preventDefault();
|
|
return false;
|
|
|
|
}
|
|
|
|
}),
|
|
|
|
kc_row_inner : new kc.backbone.views().extend({
|
|
|
|
render : function( params ){
|
|
|
|
params.name = 'kc_row_inner'; params.end = '[/kc_row_inner]';
|
|
|
|
var el = $( kc.template( 'row-inner' ) );
|
|
|
|
var content = params.args.content;
|
|
if( content !== undefined )
|
|
content = content.toString().trim();
|
|
else content = '';
|
|
|
|
if( content.indexOf('[kc_column') !== 0 ){
|
|
content = '[kc_column_inner width="12/12"]'+
|
|
content.replace(/kc_column_inner/g,'kc_column_inner#')+
|
|
'[/kc_column_inner]';
|
|
}
|
|
|
|
kc.params.process_all( content, el.find('.kc-row-wrap') );
|
|
|
|
this.el = el;
|
|
|
|
return el;
|
|
|
|
},
|
|
|
|
events : {
|
|
'.kc-row-inner-control > .settings:click' : 'settings',
|
|
'.kc-row-inner-control > .double:click' : 'double',
|
|
'.kc-row-inner-control > .delete:click' : 'remove',
|
|
'.kc-row-inner-control > .copyRowInner:click' : 'copy',
|
|
'.kc-row-inner-control > .columns:click' : 'columns',
|
|
'.kc-row-inner-control > .collapse:click' : 'collapse',
|
|
},
|
|
|
|
collapse : function(){
|
|
var elm = $('#model-'+kc.get.model(this));
|
|
if( !elm.hasClass('collapse') ){
|
|
elm.addClass('collapse');
|
|
}else{
|
|
elm.removeClass('collapse');
|
|
}
|
|
},
|
|
|
|
columns : function(){
|
|
|
|
var columns = $(this).closest('.kc-row-inner').find('>.kc-row-wrap>.kc-column-inner.kc-model');
|
|
|
|
var pop = kc.tools.popup.render(
|
|
this,
|
|
{
|
|
title: kc.__.i42,
|
|
class: 'no-footer',
|
|
width: 341,
|
|
content: kc.template( 'row-columns', {current:columns.length} ),
|
|
help: 'http://kingcomposer.com/documentation/resize-sortable-columns/?source=client_installed'
|
|
}
|
|
);
|
|
|
|
pop.find('.button').on( 'click',
|
|
{
|
|
model: kc.get.model( this ),
|
|
columns: columns,
|
|
pop: pop
|
|
},
|
|
kc.views.row.set_columns
|
|
);
|
|
|
|
pop.find('input[type=checkbox]').on('change',function(){
|
|
|
|
var name = $(this).data('name');
|
|
if( name == undefined )
|
|
return;
|
|
|
|
if( this.checked == true )
|
|
kc.cfg[ name ] = 'checked';
|
|
else kc.cfg[ name ] = '';
|
|
|
|
kc.backbone.stack.set( 'KC_Configs', kc.cfg );
|
|
|
|
});
|
|
|
|
},
|
|
|
|
copy : function(){
|
|
|
|
if( $(this).hasClass('copied') )
|
|
return;
|
|
|
|
$(this).addClass('copied');
|
|
setTimeout( function( el ){ el.removeClass('copied'); }, 1000, $(this) );
|
|
|
|
kc.backbone.copy( this );
|
|
|
|
}
|
|
|
|
}),
|
|
|
|
kc_column_inner : new kc.backbone.views().extend({
|
|
|
|
render : function( params ){
|
|
|
|
params.name = 'kc_column_inner'; params.end = '[/kc_column_inner]';
|
|
|
|
var _w = params.args['width'];
|
|
if( _w != undefined ){
|
|
if( _w.toString().indexOf('/') > -1 ){
|
|
_w = _w.split('/');
|
|
_w = ((_w[0]/_w[1])*100)+'%';
|
|
}else if( _w.toString().indexOf('%') === -1 )
|
|
_w += '%';
|
|
}else{
|
|
_w = '100%';
|
|
}
|
|
|
|
var el = $( kc.template( 'column-inner', { width: _w } ) );
|
|
|
|
if( params.args.content !== undefined && params.args.content != '' )
|
|
kc.params.process_all( params.args.content, el.find('.kc-column-wrap') );
|
|
|
|
this.el = el;
|
|
|
|
return el;
|
|
|
|
},
|
|
|
|
events : {
|
|
'>.kc-column-control .edit:click' : 'settings',
|
|
'>.kc-column-control .add:click' : 'add',
|
|
'>.kc-column-control .delete:click' : 'delete',
|
|
'>.kc-column-control .double:click' : 'double',
|
|
'>.kc-column-control .insert:click' : 'insert',
|
|
},
|
|
|
|
insert : function( e, id ){
|
|
|
|
var id = kc.get.model(this),
|
|
el = $('#model-'+id),
|
|
data = kc.storage[id],
|
|
cdata = $().extend( true, {}, data );
|
|
|
|
if( el.parent().find('>.kc-model').length >= 10 ){
|
|
alert(kc.__.i54);
|
|
return;
|
|
}
|
|
|
|
cdata.args.content = '';
|
|
|
|
var cel = kc.views.kc_column_inner.render( cdata, true );
|
|
el.after(cel);
|
|
|
|
kc.views.column.reset_view(el.parent());
|
|
|
|
kc.ui.sortInit();
|
|
|
|
},
|
|
|
|
delete : function( e ){
|
|
|
|
kc.views.column.delete( e, kc.get.model( this ) );
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
kc_element : new kc.backbone.views().extend({
|
|
|
|
render : function( params ){
|
|
|
|
var map = $().extend( {}, kc.maps._std );
|
|
map = $().extend( map, kc.maps[ params.name ] );
|
|
|
|
var el = $( kc.template( 'element', { map : map, params : params } ) );
|
|
|
|
setTimeout( function( params, map, el ){
|
|
el.append( kc.params.admin_label.render({map: map, params: params, el: el }));
|
|
}, parseInt(Math.random()*100)+100, params, map, el );
|
|
|
|
if (map.nested === true)
|
|
kc.params.process_all( params.args.content, el.find('.kc-column-wrap') );
|
|
|
|
this.el = el;
|
|
|
|
return el;
|
|
|
|
},
|
|
|
|
events : {
|
|
'>.kc-element-control .edit:click' : 'edit',
|
|
'>.kc-element-control .delete:click' : 'remove',
|
|
'>.kc-element-control .double:click' : 'double',
|
|
'>.kc-element-control .add:click' : 'add',
|
|
'>.kc-element-control .more:click' : 'more',
|
|
'>.kc-element-control .copy:click' : 'copy',
|
|
'>.kc-element-control .cut:click' : 'cut',
|
|
'>.kc-element-control:click' : function( e ){
|
|
var tar = $(e.target);
|
|
if( tar.hasClass('more') || tar.parent().hasClass('more') )
|
|
return;
|
|
$(this).find('.active').removeClass('active');
|
|
},
|
|
},
|
|
|
|
edit : function( e ){
|
|
|
|
var pop = kc.backbone.settings( this );
|
|
if( !pop ){
|
|
alert( kc.__.i43 );
|
|
return;
|
|
}
|
|
|
|
$(this).closest('.kc-element').addClass('editting');
|
|
pop.data({cancel: function(pop){
|
|
|
|
$( pop.data('button') ).closest('.kc-element').removeClass('editting');
|
|
|
|
},after_callback : function( pop ){
|
|
|
|
var id = kc.get.model( pop.data('button') ),
|
|
params = kc.storage[ id ],
|
|
map = $().extend( {}, kc.maps._std ),
|
|
el = $('#model-'+id);
|
|
|
|
map = $().extend( map, kc.maps[ params.name ] );
|
|
el.find('>.admin-view').remove();
|
|
el.append( kc.params.admin_label.render({map: map, params: params, el: el }));
|
|
|
|
}});
|
|
|
|
}
|
|
|
|
}),
|
|
|
|
kc_undefined : new kc.backbone.views().extend({
|
|
|
|
render : function( params ){
|
|
|
|
var map = $().extend( {}, kc.maps._std );
|
|
map = $().extend( map, kc.maps[ params.name ] );
|
|
|
|
var el = $( kc.template( 'undefined', { map : map, params : params } ) );
|
|
|
|
this.el = el;
|
|
|
|
return el;
|
|
|
|
},
|
|
|
|
events : {
|
|
'>.kc-element-control .edit:click' : 'edit',
|
|
'>.kc-element-control .delete:click' : 'remove',
|
|
'>.kc-element-control .double:click' : 'double'
|
|
},
|
|
|
|
edit : function( e ){
|
|
|
|
var pop = kc.backbone.settings( this );
|
|
if( !pop ){
|
|
alert( kc.__.i45 );
|
|
return;
|
|
}
|
|
|
|
$(this).closest('.kc-element').addClass('editting');
|
|
pop.data({cancel: function(pop){
|
|
|
|
$( pop.data('button') ).closest('.kc-element').removeClass('editting');
|
|
|
|
},after_callback : function( pop ){
|
|
|
|
$( pop.data('button') ).closest('.kc-element').removeClass('editting');
|
|
|
|
var id = kc.get.model( pop.data('button') ),
|
|
params = kc.storage[ id ],
|
|
map = $().extend( {}, kc.maps._std ),
|
|
el = $('#model-'+id);
|
|
|
|
map = $().extend( map, kc.maps[ params.name ] );
|
|
el.find('>.admin-view').remove();
|
|
el.append( kc.params.admin_label.render({map: map, params: params, el: el }));
|
|
|
|
}});
|
|
|
|
},
|
|
|
|
remove : function( e ){
|
|
if( confirm( kc.__.sure ) ){
|
|
var elm = $(this).closest('div.kc-element');
|
|
var mid = elm.data('model');
|
|
elm.remove();
|
|
delete kc.storage[mid];
|
|
}
|
|
}
|
|
|
|
}),
|
|
|
|
} );
|
|
|
|
} )( jQuery );
|