function doDisplaySkinColorset(colorset) { var skin = jQuery('select[name=skin]').val(); if(!skin) { doHideSkinColorset(); return; } function completeGetSkinColorset(ret_obj) { /*jshint -W004*/ var sel = jQuery("select[name=colorset]").get(0); var length = sel.options.length; var selected_colorset = colorset; for(var i = 0; i < length; i++) sel.remove(0); if(!ret_obj.colorset_list) return; var colorset_list = ret_obj.colorset_list.split("\n"); var selected_index = 0; for(var i = 0; i < colorset_list.length; i++) { var tmp = colorset_list[i].split("|@|"); if(selected_colorset && selected_colorset==tmp[0]) selected_index = i; var opt = new Option(tmp[1], tmp[0], false, false); sel.options.add(opt); } sel.selectedIndex = selected_index; doShowSkinColorset(); } var params = []; params.selected_widget = jQuery('input[name=selected_widget]').val(); params.skin = skin; params.colorset = colorset; var response_tags = ["error", "message", "colorset_list"]; exec_xml("widget", "procWidgetGetColorsetList", params, completeGetSkinColorset, response_tags, params); } function doHideSkinColorset() { jQuery('select[name=colorset]').closest('.x_control-group').hide(); } function doShowSkinColorset() { jQuery('select[name=colorset]').closest('.x_control-group').show(); } function completeGenerateCodeInPage(widget_code) { if(!opener || !widget_code) { window.close(); return; } opener.doAddWidgetCode(widget_code); window.close(); } var selected_node = null; function getWidgetVars() { if(!opener || !opener.selectedWidget || !opener.selectedWidget.getAttribute("widget")) return; selected_node = opener.selectedWidget; if(!xGetElementById('fo_widget').widgetstyle.value) { xGetElementById('fo_widget').widgetstyle.value = selected_node.getAttribute('widgetstyle'); } doFillWidgetVars(); } function doFillWidgetVars() { if(!opener || !opener.selectedWidget || !opener.selectedWidget.getAttribute("widget")) return; selected_node = opener.selectedWidget; // 스킨과 컬러셋은 기본 var skin = selected_node.getAttribute("skin"); var colorset = selected_node.getAttribute("colorset"); var widget_sequence = parseInt(selected_node.getAttribute("widget_sequence"),10); var fo_widget = jQuery("#fo_widget"); var fo_obj = xGetElementById("fo_widget"); jQuery('#widget_skin').val(skin); // 위젯 스타일 유지를 위한 hidden input 추가하고 값을 저장 var attrs = selected_node.attributes; // IE7에서 발생하는 jQuery 용 attribute를 걸러내기 위해 추가 var attrFilters = ['style', 'sizset', 'draggable', 'class']; for(var i = 0; i < attrs.length ; i++){ var name = attrs[i].name; var value = jQuery(selected_node).attr(name); if(value == 'Array') continue; if(jQuery("[name="+name+"]", fo_widget).size() > 0 || !value) continue; if(name.indexOf('sizcache') === 0) continue; if(jQuery.inArray(name, attrFilters) > -1) continue; var dummy = jQuery('').val(value).appendTo("#fo_widget").get(0); } // 위젯의 속성 설정 var obj_list = []; jQuery('input,select,textarea','#fo_widget').each(function() { obj_list.push(this); }); for(var j = 0; j < obj_list.length; j++) { /*jshint -W004*/ var node = obj_list[j]; if(node.name.indexOf('_') === 0) continue; if(node.name == 'widgetstyle') continue; if(node.type == 'button') continue; if(node.name === '') continue; var length = node.length; var type = node.type; if((typeof(type) == 'undefined' || !type) && typeof(length) != 'undefined' && typeof(node[0]) != 'undefined' && length > 0) { type = node[0].type; } else { length = 0; } var name = node.name; switch(type) { case "hidden" : case "number" : case "text" : case "textarea" : var val = selected_node.getAttribute(name); if(!val) continue; var unescaped_val = unescape(val); if(!unescaped_val) node.value = val; else node.value = unescaped_val; jQuery('#'+name).val(node.value); break; case "radio" : case "checkbox" : if(selected_node.getAttribute(name)) { var val = selected_node.getAttribute(name).split(','); if(fo_obj[name].length) { for(var i = 0; i < fo_obj[name].length; i++) { var v = fo_obj[name][i].value; for(var k = 0; k '; if(i === 0) { $(this).siblings('input').val(src[i].id); } else { var aux = $(this).siblings('input').val(); $(this).siblings('input').val(aux+","+src[i].id); } } else { if(src[i]) { htmlCode += ' '; if(i === 0) { $(this).siblings('input').val(src[i]); } else { var aux = $(this).siblings('input').val(); $(this).siblings('input').val(aux+","+src[i]); } } } } } else { htmlCode = ' '; $(this).siblings('input').val(src); } $(this).before(htmlCode); $('.filebox_del').bind('click', function(){ var filename = $(this).prev('img').attr("src"); var files = $(this).siblings('input').val().split(","); var newInput = ""; for(var i = 0; i < files.length; i++){ if(files[i] != filename) { if(!newInput.length) newInput = files[i]; else newInput += "," +files[i]; } } $(this).siblings('input').val(newInput); $(this).prev('img').remove(); $(this).remove(); }); }); $('.filebox').click(function(){ $current_filebox = $(this); }); $('#filebox_upload').find('input[type=submit]').click(function(){ if($('iframe[name=iframeTarget]').length < 1){ var $iframe = $(document.createElement('iframe')); $iframe.css('display', 'none'); $iframe.attr('src', '#'); $iframe.attr('name', 'iframeTarget'); $iframe.load(function() { /*jshint -W061*/ var data = eval('(' + $(window.iframeTarget.document.getElementsByTagName("body")[0]).html() + ')'); if(data.error) { alert(data.message); return; } $current_filebox.trigger('filebox.selected', [data.save_filename]); $current_filebox.trigger('close.mw'); }); $('body').append($iframe.get(0)); $(this).parents('form').attr('target', 'iframeTarget'); } }); $('#widget_code_form').bind('submit', function(){ function on_complete(data){ if(data.error) { alert(data.message); return; } $('#widget_code').val(data.widget_code); } var datas = $(this).serializeArray(); var params = {}; for(var i in datas) { var data = datas[i]; if(/\[\]$/.test(data.name)) { data.name = data.name.replace(/\[\]$/, ''); } if(params[data.name]) { params[data.name] += '|@|' + data.value; } else { params[data.name] = data.value; } } $.exec_json('widget.procWidgetGenerateCode', params, on_complete); return false; }); $('#fo_widget').bind('submit', function(){ function on_complete(data){ if(data.error != '0'){ alert(data.message); return; } completeGenerateCodeInPage(data.widget_code); } var datas = $(this).serializeArray(); var params = {}; for(var i in datas) { var data = datas[i]; if(/\[\]$/.test(data.name)) { data.name = data.name.replace(/\[\]$/, ''); } if(params[data.name]) { params[data.name] += '|@|' + data.value; } else { params[data.name] = data.value; } } exec_xml('widget', 'procWidgetGenerateCodeInPage', params, on_complete, ['error', 'message', 'widget_code']); return false; }); });