페이지 모듈에서 위젯 선택방법 변경

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@5327 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ngleader 2009-01-12 07:25:52 +00:00
parent b8d8d88a8c
commit 30970b69c8
5 changed files with 51 additions and 28 deletions

View file

@ -88,7 +88,7 @@ function removeAllWidget() {
exec_xml('widget',"procWidgetRemoveContents",params,function() { restoreWidgetButtons(); xInnerHtml(zonePageObj,'') });
}
/**
/**
* 특정 영역에 편집된 위젯들을 약속된 태그로 변환하여 return
**/
function getWidgetContent(obj) {
@ -266,6 +266,8 @@ function doAddWidget(fo) {
popopen(url,'GenerateWidgetCode');
}
// widgetBorder에 height를 widgetOutput와 맞춰줌
function doFitBorderSize() {
var obj_list = xGetElementsByClassName('widgetBorder', zonePageObj);
@ -325,7 +327,7 @@ function doAddWidgetCode(widget_code) {
// 클릭 이벤트시 위젯의 수정/제거/이벤트 무효화 처리
function doCheckWidget(e) {
var evt = new xEvent(e); if(!evt.target) return;
var obj = evt.target;
var obj = evt.target;
selectedWidget = null;
@ -459,7 +461,7 @@ function completeDeleteWidgetContent(ret_obj, response_tags, params, p_obj) {
// 마우스 다운 이벤트 발생시 위젯의 이동을 처리
function doCheckWidgetDrag(e) {
var evt = new xEvent(e); if(!evt.target) return;
var obj = evt.target;
var obj = evt.target;
var pObj = obj.parentNode;
while(pObj) {
@ -588,7 +590,7 @@ function _getBorderStyle(fld_color, fld_thick, fld_type) {
else color = '#'+color;
var width = fld_thick.value;
if(!width) width = '0px';
else width = parseInt(width,10)+'px';
else width = parseInt(width,10)+'px';
var style = fld_type.options[fld_type.selectedIndex].value;
if(!style) style = 'solid';
@ -706,7 +708,7 @@ function doApplyWidgetSize(fo_obj) {
selectedSizeWidget = null;
doFitBorderSize();
}
doHideWidgetSizeSetup();
}
@ -821,7 +823,7 @@ function widgetGetTmpObject(obj) {
return tmpObj;
}
// 메뉴에 마우스 클릭이 일어난 시점에 드래그를 위한 제일 첫 동작 (해당 object에 각종 함수나 상태변수 설정)
// 메뉴에 마우스 클릭이 일어난 시점에 드래그를 위한 제일 첫 동작 (해당 object에 각종 함수나 상태변수 설정)
function widgetDragEnable(obj, funcDragStart, funcDrag, funcDragEnd) {
// 상위 object에 드래그 가능하다는 상태와 각 드래그 관련 함수를 설정
@ -834,11 +836,11 @@ function widgetDragEnable(obj, funcDragStart, funcDrag, funcDragEnd) {
if (!widgetDragManager.isDrag) {
widgetDragManager.isDrag = true;
xAddEventListener(document, 'mousemove', widgetDragMouseMove, false);
}
}
}
}
// 드래그를 시작할때 호출되는 함수 (이동되는 형태를 보여주기 위한 작업을 함)
function widgetDragStart(tobj, px, py) {
function widgetDragStart(tobj, px, py) {
if(tobj.className == 'widgetResize' || tobj.className == 'widgetResizeLeft' || tobj.className == 'widgetBoxResize' || tobj.className == 'widgetBoxResizeLeft') return;
var obj = widgetGetTmpObject(tobj);
@ -986,7 +988,7 @@ function widgetDrag(tobj, dx, dy) {
// 이동을 멈춤
widgetManualEnd();
doFitBorderSize();
boxList = null;
return;
@ -1030,8 +1032,8 @@ function widgetDrag(tobj, dx, dy) {
widgetList = null;
}
}
}
}
// 드래그 종료 (이동되는 object가 이동할 곳에 서서히 이동되는 것처럼 보이는 효과)
function widgetDragEnd(tobj, px, py) {
var obj = widgetGetTmpObject(tobj);
@ -1092,7 +1094,7 @@ function widgetMouseDown(e) {
}
// 마우스 버튼을 놓았을때 동작될 함수 (각종 이벤트 해제 및 변수 설정 초기화)
function widgetMouseUp(e) {
function widgetMouseUp(e) {
if (widgetDragManager.obj) {
xPreventDefault(e);
xRemoveEventListener(document, 'mouseup', widgetMouseUp, false);
@ -1100,14 +1102,14 @@ function widgetMouseUp(e) {
if (widgetDragManager.obj.dragEnd) {
var evt = new xEvent(e);
widgetDragManager.obj.dragEnd(widgetDragManager.obj, evt.pageX, evt.pageY);
}
}
widgetDragManager.obj = null;
widgetDragManager.isDrag = false;
}
}
}
}
// 드래그할때의 object이동등을 담당
// 드래그할때의 object이동등을 담당
function widgetDragMouseMove(e) {
var evt = new xEvent(e);
if(widgetDragManager.obj) {

View file

@ -10,20 +10,20 @@ function completeGenerateCode(ret_obj) {
var zone = xGetElementById("widget_code");
zone.value = widget_code;
}
}
/* 생성된 코드를 페이지 zone에 출력 */
function completeGenerateCodeInPage(ret_obj,response_tags,params,fo_obj) {
var widget_code = ret_obj["widget_code"];
if(!opener || !widget_code) {
window.close();
window.close();
return;
}
opener.doAddWidgetCode(widget_code);
window.close();
}
}
/* 위젯 코드 생성시 스킨을 고르면 컬러셋의 정보를 표시 */
function doDisplaySkinColorset(sel, colorset) {
@ -153,7 +153,7 @@ function doFillWidgetVars() {
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").options.length<1 && colorset) {
doDisplaySkinColorset(xGetElementById("widget_skin"), colorset);
@ -178,7 +178,7 @@ function insertSelectedModule(id, module_srl, mid, browser_title) {
var sObj = xGetElementById(id);
sObj.value = module_srl;
obj.value = browser_title+' ('+mid+')';
}
// 위젯의 대상 모듈 입력기 (다중 선택)
@ -188,7 +188,7 @@ function insertSelectedModules(id, module_srl, mid, browser_title) {
var opt = new Option(browser_title+' ('+mid+')', module_srl, false, false);
sel_obj.options[sel_obj.options.length] = opt;
if(sel_obj.options.length>8) sel_obj.size = sel_obj.options.length;
syncMid(id);
}
@ -208,7 +208,7 @@ function midMoveUp(id) {
t_obj.value = value;
t_obj.text = text;
sel_obj.selectedIndex = idx-1;
syncMid(id);
}
@ -319,3 +319,9 @@ function excuteWindowLoadEvent() {
}
}
xAddEventListener(window,'load',excuteWindowLoadEvent);
function selectWidget(val){
var url =current_url.setQuery('selected_widget', val);
document.location.href = url;
}

View file

@ -3,7 +3,14 @@
<tr>
<th scope="row"><div>{$lang->widget}</div></th>
<td>
{$widget_info->title} ver {$widget_info->version}
<select name="selected_widget">
<!--@foreach($widget_list as $widget)-->
<option value="{$widget->widget}" <!--@if($widget_info->widget == $widget->widget)--> selected="selected" <!--@end-->>{$widget->title} ver {$widget_info->version}</option>
<!--@end-->
</select>
<a href="#" class="button small" onclick="selectWidget(jQuery('select[name=selected_widget]').val())"><span>{$lang->cmd_move}</span></a>
<!--@if($widget_info->author->description)-->
<div class="widget_description">{nl2br(trim($widget_info->author->description))}</div>
<!--@end-->
@ -13,13 +20,13 @@
<tr>
<th scope="row"><div>{$lang->skin}</div></th>
<td>
<select name="skin" onchange="doDisplaySkinColorset(this);return false;" id="widget_skin">
<select name="skin" id="widget_skin">
<option value="">&nbsp;</option>
<!--@foreach($skin_list as $key => $val)-->
<option value="{$key}">{$val->title} ({$key})</option>
<!--@end-->
</select>
<a href="#" class="button small" onclick="doDisplaySkinColorset(jQuery('#widget_skin').get(0))"><span>{$lang->cmd_move}</span></a>
<div id="colorset_area" style="display:none">
<div class="header">{$lang->colorset}</div>
<div class="footer">

View file

@ -8,7 +8,6 @@
</script>
<form action="./" method="get" onsubmit="return procFilter(this, generate_code_in_page);" id="fo_widget">
<input type="hidden" name="selected_widget" value="{$selected_widget}" />
<input type="hidden" name="module_srl" value="{$module_srl}" />
<input type="hidden" name="widget_sequence" value="" />
<input type="hidden" name="style" value="float:left;width:100%;margin:none;padding:none;" />

View file

@ -36,6 +36,7 @@
function dispWidgetGenerateCode() {
// 선택된 위젯 정보를 구함
$oWidgetModel = &getModel('widget');
$widget_info = $oWidgetModel->getWidgetInfo(Context::get('selected_widget'));
Context::set('widget_info', $widget_info);
@ -75,6 +76,14 @@
* @brief 페이지 관리에서 사용될 코드 생성 팝업
**/
function dispWidgetGenerateCodeInPage() {
$oWidgetModel = &getModel('widget');
$widget_list = $oWidgetModel->getDownloadedWidgetList();
Context::set('widget_list',$widget_list);
// 선택된 위젯이 없을경우 첫 위젯으로
if(!Context::get('selected_widget')) Context::set('selected_widget',$widget_list[0]->widget);
$this->dispWidgetGenerateCode();
$this->setTemplateFile('widget_generate_code_in_page');
}