widget module

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9031 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
flyskyko 2011-09-05 10:01:33 +00:00
parent 249ba8c7f5
commit 2a8c16d4f9
13 changed files with 550 additions and 557 deletions

View file

@ -1,4 +1,4 @@
function doDisplaySkinColorset()
function doDisplaySkinColorset(colorset)
{
var skin = jQuery('select[name=skin]').val();
if(!skin) {
@ -6,39 +6,39 @@ function doDisplaySkinColorset()
return;
}
function completeGetSkinColorset(ret_obj)
{
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 = new Array();
params["selected_widget"] = jQuery('input[name=selected_widget]').val();
params["skin"] = skin;
params["colorset"] = jQuery('select[name=colorset]').val();
params["colorset"] = colorset;
var response_tags = new Array("error","message","colorset_list");
exec_xml("widget", "procWidgetGetColorsetList", params, completeGetSkinColorset, response_tags, params);
}
function completeGetSkinColorset(ret_obj)
{
var sel = jQuery("select[name=colorset]").get(0);
var length = sel.options.length;
var selected_colorset = jQuery('select[name=colorset]').val();
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();
}
function doHideSkinColorset()
{
jQuery('select[name=colorset]').parents('li').hide();
@ -49,6 +49,141 @@ function doShowSkinColorset()
jQuery('select[name=colorset]').parents('li').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;
for (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 || name == 'style') continue;
var dummy = jQuery('<input type="hidden" name="'+name+'" >').val(value).appendTo("#fo_widget").get(0);
}
// 위젯의 속성 설정
var obj_list = new Array();
jQuery('input,select,textarea','#fo_widget').each( function() {
obj_list.push(this);
});
for(var j=0;j<obj_list.length;j++) {
var node = obj_list[j];
if(node.name.indexOf('_')==0) continue;
if(node.name == 'widgetstyle') 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 "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;
break;
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<val.length;k++) {
if(v == val[k]) {
fo_obj[name][i].checked=true;
break;
}
}
}
} else {
if(fo_obj[name].value == val) fo_obj[name].checked =true;
}
}
break;
case "select" :
case "select-one" :
var val = selected_node.getAttribute(name);
var sel = fo_obj[name];
if(!val) break;
for(var i=0;i<sel.options.length;i++) {
if(sel.options[i].value == val) sel.options[i].selected = true;
else sel.options[i].selected = false;
}
break;
}
}
var style = selected_node.getAttribute("style");
if(typeof(style)=="object") style = style["cssText"];
fo_obj.style.value = style;
fo_obj.widget_padding_left.value = selected_node.getAttribute("widget_padding_left");
fo_obj.widget_padding_right.value = selected_node.getAttribute("widget_padding_right");
fo_obj.widget_padding_bottom.value = selected_node.getAttribute("widget_padding_bottom");
fo_obj.widget_padding_top.value = selected_node.getAttribute("widget_padding_top");
// 컬러셋 설정
if(skin && xGetElementById("widget_colorset") && xGetElementById("widget_colorset").options.length<1 && colorset) {
doDisplaySkinColorset(colorset);
}
// widget sequence 설정
fo_obj.widget_sequence.value = widget_sequence;
xe.broadcast('MULTIORDER_SYNC');
xe.broadcast('MODULELIST_SYNC');
jQuery('.filebox')
.each(function(){
var $this = jQuery(this);
var src = $this.siblings('input').eq(0).val();
if (src) $this.trigger('filebox.selected', [src]);
})
}
var $current_filebox;
jQuery(document).ready(function($){
@ -69,7 +204,7 @@ jQuery(document).ready(function($){
})
.remove();
$(this).before('<img src="'+src+'" alt="" style="border: 1px solid #ccc; padding: 5px; max-height: 200px;"> <button class="filebox_del text" type="button">'+xe.lang.cmd_delete+'</button>');
$(this).before('<img src="'+src+'" alt="" style="border: 1px solid #ccc; padding: 5px; max-height: 200px; max-width: 200px;"> <button class="filebox_del text" type="button">'+xe.lang.cmd_delete+'</button>');
$(this).siblings('input').val(src);
@ -133,4 +268,29 @@ jQuery(document).ready(function($){
return false;
});
$('#fo_widget').bind('submit', function(){
function on_complete(data){
if (data.error){
alert(data.message);
return;
}
completeGenerateCodeInPage(data.widget_code);
}
var datas = $(this).serializeArray();
var params = new Object();
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.procWidgetGenerateCodeInPage', params, on_complete);
return false;
});
});

View file

@ -23,6 +23,8 @@ xe.ModuleListManager = xe.createApp("ModuleListManager", {
.bind('show', function(){
$(this).nextAll().show();
});
this.cast('MODULELIST_SYNC');
},
API_MODULELIST_ADD: function(){
@ -54,6 +56,24 @@ xe.ModuleListManager = xe.createApp("ModuleListManager", {
this.refreshValue();
},
API_MODULELIST_SYNC: function(){
var values = this.$keyObj.val();
if (!values) return;
var self = this;
function on_complete(data){
if (data.error) return;
for(var i in data.module_list){
var module = data.module_list[i];
var obj = $(document.createElement('option'));
obj.val(module.module_srl).html(module.browser_title+' ('+module.module_name+')').appendTo(self.$selectedObj);
}
}
$.exec_json('module.getModuleAdminModuleList', {'module_srls': values}, on_complete);
},
removeDuplicated : function() {
var selected = {};
this.$selectedObj.find('>option').each(function(){

View file

@ -17,6 +17,8 @@ xe.MultiOrderManager = xe.createApp("MultiOrderManager", {
.filter('.multiorder_del').bind('click', function(){ self.cast('MULTIORDER_DEL'); return false; }).end()
.filter('.multiorder_up').bind('click', function(){ self.cast('MULTIORDER_UP'); return false; }).end()
.filter('.multiorder_down').bind('click', function(){ self.cast('MULTIORDER_DOWN'); return false; }).end()
this.cast('MULTIORDER_SYNC');
},
API_MULTIORDER_ADD: function(){
@ -47,6 +49,18 @@ xe.MultiOrderManager = xe.createApp("MultiOrderManager", {
this.refreshValue();
},
API_MULTIORDER_SYNC: function(){
var values = this.$keyObj.val().split(',');
this.$selectedObj.find('>option').appendTo(this.$showObj);
var targets = [];
for(var i in values){
var target = this.$showObj.find('>option[value='+values[i]+']').get(0);
if (target != undefined) targets.push(target);
}
$(targets).appendTo(this.$selectedObj);
},
refreshValue : function() {
var values = [];

View file

@ -64,7 +64,7 @@ function doStartPageModify(zoneID, module_srl) {
// 내용 모두 삭제
function removeAllWidget() {
if(!confirm(confirm_delete_msg)) return;
restoreWidgetButtons();
restoreWidgetButtons();
xInnerHtml(zonePageObj,'');
}
@ -215,7 +215,7 @@ function getWidgetCode(childObj, widget) {
// 팝업 띄움
function doAddContent(mid) {
var url = request_uri.setQuery('module','widget').setQuery('act','dispWidgetAdminAddContent').setQuery('module_srl',zoneModuleSrl).setQuery('mid',mid);
popopen(url, "addContent");
window.open(url,'addContent', 'location=0, menubar=0, toolbar=0, scrollbars=1');
}
// 직접 내용을 입력하기 위한 에디터 활성화 작업 및 form 데이터 입력
@ -250,7 +250,7 @@ function doSyncPageContent() {
if(typeof(editorStart)!='undefined') editorStart(1, "module_srl", "content", false, 400 );
//editor_upload_start(1);
setFixedPopupSize();
//setFixedPopupSize();
}
// 부모창에 위젯을 추가
@ -332,7 +332,8 @@ function doAddWidget(fo) {
var module_srl = fo.module_srl.value;
var url = request_uri.setQuery('module','widget').setQuery('act','dispWidgetGenerateCodeInPage').setQuery('selected_widget', val).setQuery('module_srl', module_srl);
popopen(url,'GenerateWidgetCode');
//popopen(url,'GenerateWidgetCode');
window.open(url, 'GenerateWidgetCode', 'location=0, menubar=0, toolbar=0, scrollbars=1');
}
@ -492,8 +493,8 @@ function doCheckWidget(e) {
var widget = p_obj.getAttribute("widget");
if(!widget) return;
selectedWidget = p_obj;
if(widget == 'widgetContent') popopen(request_uri+"?module=widget&act=dispWidgetAdminAddContent&module_srl="+zoneModuleSrl+"&document_srl="+p_obj.getAttribute("document_srl")+'&mid='+current_mid, "addContent");
else popopen(request_uri+"?module=widget&act=dispWidgetGenerateCodeInPage&selected_widget="+widget+"&widgetstyle="+widgetstyle,'GenerateCodeInPage');
if(widget == 'widgetContent') window.open(request_uri+"?module=widget&act=dispWidgetAdminAddContent&module_srl="+zoneModuleSrl+"&document_srl="+p_obj.getAttribute("document_srl")+'&mid='+current_mid, "addContent", 'location=0, menubar=0, toolbar=0, scrollbars=1');
else window.open(request_uri+"?module=widget&act=dispWidgetGenerateCodeInPage&selected_widget="+widget+"&widgetstyle="+widgetstyle,'GenerateCodeInPage', 'location=0, menubar=0, toolbar=0, scrollbars=1');
return;
// 위젯 스타일
@ -503,7 +504,7 @@ function doCheckWidget(e) {
var widgetstyle = p_obj.getAttribute("widgetstyle");
if(!widget) return;
selectedWidget = p_obj;
popopen(request_uri+"?module=widget&act=dispWidgetStyleGenerateCodeInPage&selected_widget="+widget+"&widgetstyle="+widgetstyle,'GenerateCodeInPage');
window.open(request_uri+"?module=widget&act=dispWidgetStyleGenerateCodeInPage&selected_widget="+widget+"&widgetstyle="+widgetstyle,'GenerateCodeInPage', 'location=0, menubar=0, toolbar=0, scrollbars=1');
return;
// 위젯 복사
@ -651,21 +652,21 @@ function doShowWidgetSizeSetup(px, py, obj) {
width : obj[0].style.width,
height : obj[0].style.height,
padding_left : _getInt(obj.attr('widget_padding_left')),
padding_right : _getInt(obj.attr('widget_padding_right')),
padding_top : _getInt(obj.attr('widget_padding_top')),
padding_bottom : _getInt(obj.attr('widget_padding_bottom')),
margin_left : _getInt(obj[0].style.marginLeft),
margin_right : _getInt(obj[0].style.marginRight),
margin_top : _getInt(obj[0].style.marginTop),
margin_bottom : _getInt(obj[0].style.marginBottom),
border_top_color : transRGB2Hex(obj[0].style.borderTopColor),
border_top_thick : obj[0].style.borderTopWidth.replace(/px$/i, ''),
border_top_type : obj[0].style.borderTopStyle,
border_bottom_color : transRGB2Hex(obj[0].style.borderBottomColor),
border_bottom_thick : obj[0].style.borderBottomWidth.replace(/px$/i, ''),
border_bottom_type : obj[0].style.borderBottomStyle,
@ -708,7 +709,7 @@ function doShowWidgetSizeSetup(px, py, obj) {
var el = form[0].elements[key];
if (el) el.value = val;
if (el.tagName.toLowerCase() == "select")
{
{
if(el.selectedIndex == -1) {
el.selectedIndex = 0;
}