$(function(){ var iframe_name = 'k-iframe-' + Math.floor(Math.random()*1000001); var form = $('
', { id: 'k-relation-form', action: '', method: 'POST', style: 'display:none' }); var input = $('', { id: '__k_relation_ids__', name: '__k_relation_ids__', type: 'hidden' }); form.append(input).appendTo($('body')); $( ".k-relation-ex" ).each(function(index){ var field = $(this); var list = field.find('select'); var btn_remove = field.find('.btn.remove'); var btn_add = field.find('.btn.add'); var label_add = btn_add.find('span'); var input_ids = field.find('.k-relation-ids'); var has_one = field.hasClass( 'has-one' ); if( has_one ){ list.mousedown(function(e){ e.preventDefault(); }); } else{ list.change(function(){ if( $(this).find('option:selected').length ){ btn_remove.removeClass("disabled"); } else{ btn_remove.addClass("disabled"); } }); } list.bind( '_refresh', function(){ var str_ids = ''; var sep = ''; $(this).find('option').each(function(i, selected) { str_ids += sep + $(this).val(); sep = ','; }); input_ids.val( str_ids ); if( has_one ){ if(str_ids.length){ btn_remove.css('display', 'inline-block'); btn_add.css('display', 'none'); } else{ btn_add.css('display', 'inline-block'); btn_remove.css('display', 'none'); } } }); btn_remove.click(function(){ if( has_one ){ list.empty(); } else{ list.find('option:selected').each(function(i, selected) { $(this).remove(); }); } list.trigger('change'); list.trigger('_refresh'); return false; }); // modal callbacks var modal_before_open = function() { window.KRelation = { callBack: function( content, exit_code ){ if( exit_code=='exit_save' ){ var arr = jQuery.parseJSON(content); if(arr.length){ if( has_one && arr.length>1 ) arr.splice(1); var html = ''; $.each(arr, function( key, val ){ html += ''; }); if( has_one ) list.empty(); list.append(html); list.trigger('_refresh'); } } // close modal modal_after_close(); } }; // prep form form.attr( "action", btn_add.attr('data_relation_src') ); form.attr( "target", iframe_name ); input.val( input_ids.val() ); }; var modal_open = function() { form.submit(); }; var modal_after_close = function() { window.KRelation = null; $.magnificPopup.close(); }; LADON.bindPopupIframe( btn_add, modal_before_open, modal_after_close, "mosaic-iframe", true, iframe_name, modal_open ); }); });