mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-03 01:03:28 +09:00
css 및 js 호출순서 조정기능 추가
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@5785 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
4f380d9c48
commit
61851f1dfe
2149 changed files with 109090 additions and 18689 deletions
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="0.2">
|
||||
<title xml:lang="ko">위젯</title>
|
||||
<title xml:lang="zh-CN">控件</title>
|
||||
<title xml:lang="zh-CN">控件管理</title>
|
||||
<title xml:lang="jp">ウィジェット</title>
|
||||
<title xml:lang="en">Widget</title>
|
||||
<title xml:lang="es">Widget</title>
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
<description xml:lang="zh-TW">控件管理模組。</description>
|
||||
<version>0.1</version>
|
||||
<date>2007-02-28</date>
|
||||
<category>manager</category>
|
||||
<category>construction</category>
|
||||
|
||||
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||
<name xml:lang="ko">zero</name>
|
||||
|
|
|
|||
|
|
@ -1,14 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module>
|
||||
<grants />
|
||||
<permissions />
|
||||
<actions>
|
||||
<action name="dispWidgetInfo" type="view" standalone="true" />
|
||||
<action name="dispWidgetGenerateCode" type="view" standalone="true" />
|
||||
<action name="dispWidgetGenerateCodeInPage" type="view" standalone="true" />
|
||||
|
||||
<action name="dispWidgetStyleGenerateCodeInPage" type="view" standalone="true" />
|
||||
<action name="dispWidgetAdminDownloadedList" type="view" standalone="true" admin_index="true" />
|
||||
<action name="dispWidgetAdminAddContent" type="view" standalone="true" />
|
||||
|
||||
<action name="procWidgetGenerateCode" type="controller" standalone="true" />
|
||||
<action name="procWidgetStyleExtraImageUpload" type="controller" standalone="true" />
|
||||
<action name="procWidgetStyleGenerateCodeInPage" type="controller" standalone="true" />
|
||||
<action name="procWidgetAddContent" type="controller" standalone="true" />
|
||||
<action name="procWidgetInsertDocument" type="controller" standalone="true" />
|
||||
<action name="procWidgetCopyDocument" type="controller" standalone="true" />
|
||||
|
|
@ -16,5 +19,8 @@
|
|||
<action name="procWidgetGenerateCodeInPage" type="controller" standalone="true" />
|
||||
<action name="procWidgetGetColorsetList" type="controller" standalone="true" />
|
||||
<action name="procWidgetRemoveContents" type="controller" standalone="true" />
|
||||
|
||||
<action name="procWidgetStyleExtraImageUpload" type="controller" standalone="true" />
|
||||
<action name="procWidgetStyleGenerateCodeInPage" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</module>
|
||||
</module>
|
||||
|
|
@ -33,6 +33,7 @@
|
|||
$lang->about_widget_cache = 'Cached data can be used during the time you have set.';
|
||||
|
||||
$lang->generated_code = 'Generated Code';
|
||||
$lang->widgetstyle= '위젯스타일';
|
||||
|
||||
$lang->msg_widget_is_not_exists = "'%s' does not exist.";
|
||||
$lang->msg_widget_object_is_null = "Object of '%s' could not be created.";
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
$lang->about_widget_cache = 'Se puede usar datos de caché creado durante el tiempo asignado.';
|
||||
|
||||
$lang->generated_code = 'Generar códigos';
|
||||
$lang->widgetstyle= '위젯스타일';
|
||||
|
||||
$lang->msg_widget_is_not_exists = 'No existe widget %s .';
|
||||
$lang->msg_widget_object_is_null = 'No puede ser creado el objeto de widget %s.';
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
$lang->about_widget_cache = 'Les données d\'antémémoire peuvent être utilisées pendant le temps que vous désignez.';
|
||||
|
||||
$lang->generated_code = 'Code généré';
|
||||
$lang->widgetstyle= '위젯스타일';
|
||||
|
||||
$lang->msg_widget_is_not_exists = "Le Gadget de(d') '%s' n'existe pas.";
|
||||
$lang->msg_widget_object_is_null = "L'Objet de '%s' n'a pas pu être créé.";
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
$lang->about_widget_cache = '指定された時間内にキャッシュされたデータが利用できます。';
|
||||
|
||||
$lang->generated_code = '生成コード';
|
||||
$lang->widgetstyle= '위젯스타일';
|
||||
|
||||
$lang->msg_widget_is_not_exists = '%s ウィジェットが見つかりません。';
|
||||
$lang->msg_widget_object_is_null = '%s ウィジェットのオブジェクトが生成できません。';
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
$lang->about_widget_cache = '지정된 시간동안 캐시된 데이터를 이용할 수 있습니다.';
|
||||
|
||||
$lang->generated_code = '생성된 코드';
|
||||
$lang->widgetstyle= '위젯스타일';
|
||||
|
||||
$lang->msg_widget_is_not_exists = '%s 위젯을 찾을 수 없습니다';
|
||||
$lang->msg_widget_object_is_null = '%s 위젯의 객체 생성을 할 수가 없습니다';
|
||||
|
|
@ -43,25 +44,25 @@
|
|||
$lang->about_widget_code_in_page = '아래 필요한 값들을 입력하신 후 추가 버튼을 누르시면 페이지 내에 위젯이 삽입이 됩니다';
|
||||
$lang->about_widget = "위젯은 레이아웃이나 페이지 모듈에서 사용되는 작은 구성요소입니다.\n내부 모듈 또는 외부 open api와 연동될 수도 있고 설정을 통해서 다양한 응용이 가능합니다.\nXE의 페이지 모듈이나 레이아웃 모듈을 사용하지 않더라도 [코드생성] 기능을 통해 직접 위젯 추가도 할 수 있습니다";
|
||||
|
||||
$lang->cmd_content_insert = "내용 직접 추가";
|
||||
$lang->cmd_box_widget_insert = "상자 위젯 추가";
|
||||
$lang->cmd_remove_all_widgets = "내용 모두 지우기";
|
||||
$lang->cmd_content_insert = '내용 직접 추가';
|
||||
$lang->cmd_box_widget_insert = '상자 위젯 추가';
|
||||
$lang->cmd_remove_all_widgets = '내용 모두 지우기';
|
||||
|
||||
$lang->cmd_widget_size = "위젯 크기";
|
||||
$lang->cmd_widget_align = "위젯 정렬";
|
||||
$lang->cmd_widget_align_left = "왼쪽";
|
||||
$lang->cmd_widget_align_right = "오른쪽";
|
||||
$lang->cmd_widget_margin = "외부 여백";
|
||||
$lang->cmd_widget_padding = "내부 여백";
|
||||
$lang->cmd_widget_border = "위젯 테두리";
|
||||
$lang->cmd_widget_border_solid = "실선";
|
||||
$lang->cmd_widget_border_dotted = "점선";
|
||||
$lang->cmd_widget_background_color = "배경색";
|
||||
$lang->cmd_widget_background_image_url = "배경 이미지";
|
||||
$lang->cmd_widget_background_image_repeat = "반복";
|
||||
$lang->cmd_widget_background_image_no_repeat = "고정";
|
||||
$lang->cmd_widget_background_image_x_repeat = "가로 반복";
|
||||
$lang->cmd_widget_background_image_y_repeat = "세로 반복";
|
||||
$lang->cmd_widget_background_image_x = "가로 위치";
|
||||
$lang->cmd_widget_background_image_y = "세로 위치";
|
||||
$lang->cmd_widget_size = '위젯 크기';
|
||||
$lang->cmd_widget_align = '위젯 정렬';
|
||||
$lang->cmd_widget_align_left = '왼쪽';
|
||||
$lang->cmd_widget_align_right = '오른쪽';
|
||||
$lang->cmd_widget_margin = '외부 여백';
|
||||
$lang->cmd_widget_padding = '내부 여백';
|
||||
$lang->cmd_widget_border = '위젯 테두리';
|
||||
$lang->cmd_widget_border_solid = '실선';
|
||||
$lang->cmd_widget_border_dotted = '점선';
|
||||
$lang->cmd_widget_background_color = '배경색';
|
||||
$lang->cmd_widget_background_image_url = '배경 이미지';
|
||||
$lang->cmd_widget_background_image_repeat = '반복';
|
||||
$lang->cmd_widget_background_image_no_repeat = '고정';
|
||||
$lang->cmd_widget_background_image_x_repeat = '가로 반복';
|
||||
$lang->cmd_widget_background_image_y_repeat = '세로 반복';
|
||||
$lang->cmd_widget_background_image_x = '가로 위치';
|
||||
$lang->cmd_widget_background_image_y = '세로 위치';
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
$lang->about_widget_cache = 'Кешированные данные будут использоваться на указанный срок.';
|
||||
|
||||
$lang->generated_code = 'Сгенерированный код';
|
||||
$lang->widgetstyle= '위젯스타일';
|
||||
|
||||
$lang->msg_widget_is_not_exists = '%s виджет не существует.';
|
||||
$lang->msg_widget_object_is_null = '%s объектов виджета не могут быть созданы.';
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
/**
|
||||
* @file modules/widget/lang/zh-CN.lang.php
|
||||
* @author zero <zero@nzeo.com>
|
||||
* @brief 控件(widget) 模块语言包
|
||||
* @author zero <zero@nzeo.com> 翻译:guny
|
||||
* @brief 控件(widget)模块简体中文语言包
|
||||
**/
|
||||
|
||||
$lang->cmd_generate_code = '生成代码';
|
||||
|
|
@ -33,13 +33,14 @@
|
|||
$lang->about_widget_cache = '指定的时间内可以利用已缓冲的数据。';
|
||||
|
||||
$lang->generated_code = '已生成的代码';
|
||||
$lang->widgetstyle= '控件样式';
|
||||
|
||||
$lang->msg_widget_is_not_exists = '找不到%s控件!';
|
||||
$lang->msg_widget_object_is_null = '无法生成%s控件对象!';
|
||||
$lang->msg_widget_proc_is_null = '不能执行%s控件的 proc()!';
|
||||
$lang->msg_widget_skin_is_null = '위젯의 스킨을 선택해 주셔야 정상적으로 동작할 수 있습니다';
|
||||
$lang->msg_widget_skin_is_null = '请选择控件皮肤!';
|
||||
|
||||
$lang->about_widget_code = '输入被选控件所需要的下列各项后,按『代码生成』按钮,即可在页面下方获得可以用在布局模版代码片断。';
|
||||
$lang->about_widget_code = '输入所选控件所需要的下列各项后,按『代码生成』按钮,即可在页面下方获得可以用在布局模版代码片断。';
|
||||
$lang->about_widget_code_in_page = '输入下列各项必要值后,按『生成代码』按钮,即可把控件插入到页面当中。';
|
||||
$lang->about_widget = "控件是在布局或页面模块中使用的一种小部件。\n不仅可以关联内部模块或外部open api,而且通过设置可以用在多种用途。\n即使不使用XE的页面模块或布局模块,也可以通过『代码生成』功能直接可以添加相应控件。";
|
||||
|
||||
|
|
|
|||
|
|
@ -33,11 +33,12 @@
|
|||
$lang->about_widget_cache = '指定的時間內可以利用已暫存的資料。';
|
||||
|
||||
$lang->generated_code = '已建立的原始碼';
|
||||
$lang->widgetstyle= '控件樣式';
|
||||
|
||||
$lang->msg_widget_is_not_exists = '找不到%s控件!';
|
||||
$lang->msg_widget_object_is_null = '無法建立%s控件目標!';
|
||||
$lang->msg_widget_proc_is_null = '無法執行%s控件的 proc()!';
|
||||
$lang->msg_widget_skin_is_null = '위젯의 스킨을 선택해 주셔야 정상적으로 동작할 수 있습니다';
|
||||
$lang->msg_widget_skin_is_null = '請選擇一個可正常使用的控件面板';
|
||||
|
||||
$lang->about_widget_code = '輸入所選控件所需要的各項資料後,按『建立原始碼』按鈕,即可在頁面下方獲得運用在版面設計中的部分原始碼。';
|
||||
$lang->about_widget_code_in_page = '輸入下列各項必要資料後,按『建立原始碼』按鈕,即可把控件插入到頁面當中。';
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
<!--%import("js/widget.js")-->
|
||||
<!--%import("css/widget.css")-->
|
||||
|
||||
<div class="pageAddContent"></div>
|
||||
<div id="popHeader" class="wide">
|
||||
<h3 class="xeAdmin">{$lang->cmd_content_insert}</h3>
|
||||
</div>
|
||||
|
||||
<form action="./" method="get" onsubmit="return addContentWidget(this); return false;" id="content_fo">
|
||||
<input type="hidden" name="content" value="{$oDocument->getContentText()}" />
|
||||
<input type="hidden" name="mid" value="{$module_info->mid}" />
|
||||
|
|
@ -13,17 +16,20 @@
|
|||
<input type="hidden" name="widget_padding_top" value="" />
|
||||
<input type="hidden" name="widget_padding_bottom" value="" />
|
||||
|
||||
<div class="editor">
|
||||
{$editor}
|
||||
</div>
|
||||
<div id="popBody">
|
||||
<div class="pageAddContent"></div>
|
||||
|
||||
<div class="tCenter help">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_insert}" class="editor_button" accesskey="s" /></span>
|
||||
<a href="#" onclick="window.close(); return false;" class="button"><span>{$lang->cmd_close}</span></a>
|
||||
</div>
|
||||
<div class="editor">
|
||||
{$editor}
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
xAddEventListener(window, 'load', doSyncPageContent);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div id="popFooter">
|
||||
<span class="button black strong"><input type="submit" value="{$lang->cmd_save}" class="editor_button" accesskey="s" /></span>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<script type="text/javascript">
|
||||
xAddEventListener(window, 'load', doSyncPageContent);
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
#widgetButton { background-color:#C7DBE9;left:0; top:0;}
|
||||
#widgetBoxButton { background-color:#D2E9C7; right:0; top:0;}
|
||||
.widgetButtons div { float:left; }
|
||||
.widgetButtons .widgetStyle { background:transparent url("../images/widgetstyle_setup.gif") no-repeat 1px 1px; width:14px; height:14px; cursor:pointer; z-index:1000;}
|
||||
.widgetButtons .widgetSetup { background:transparent url("../images/widget_setup.gif") no-repeat 1px 1px; width:14px; height:14px; cursor:pointer; z-index:1000;}
|
||||
.widgetButtons .widgetCopy { background:transparent url("../images/widget_copy.gif") no-repeat 1px 1px; width:14px; height:14px; cursor:pointer; z-index:1000;}
|
||||
.widgetButtons .widgetSize { background:transparent url("../images/widget_size.gif") no-repeat 1px 1px; width:14px; height:14px; cursor:pointer; z-index:1000;}
|
||||
|
|
@ -55,3 +56,7 @@ div.editor { width:700px; }
|
|||
ul.midCommand { float:left; margin:0 0 0 10px;; padding:0; *zoom:1; }
|
||||
ul.midCommand li { display:block; margin-bottom:5px; list-style:none;}
|
||||
|
||||
a.widgetStyle { float:left; margin-right:10px; border:1px solid #CCC; overflow:hidden; *zoom:1; }
|
||||
a.widgetStyle:hover { border:1px solid #444; }
|
||||
a.widgetStyle.selected { border:1px solid #000; }
|
||||
a.widgetStyle img {width:96px; height:96px; margin:1px; }
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<h3>{$lang->widget} <span class="gray">{$lang->cmd_management}</span></h3>
|
||||
<h3 class="xeAdmin">{$lang->widget} <span class="gray">{$lang->cmd_management}</span></h3>
|
||||
|
||||
<!-- 설명 -->
|
||||
<div class="infoText">{nl2br($lang->about_widget)}</div>
|
||||
|
||||
<!-- 위젯의 목록 -->
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<table cellspacing="0" class="crossTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col"><div>{$lang->widget_name}<div></th>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
<filter name="style_generate_code_in_page" module="widget" act="procWidgetGenerateCodeInPage">
|
||||
<response callback_func="completeGenerateCodeInPage">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="widget_code" />
|
||||
<tag name="tpl" />
|
||||
<tag name="css_header" />
|
||||
</response>
|
||||
</filter>
|
||||
BIN
modules/widget/tpl/images/widgetstyle_none.gif
Normal file
BIN
modules/widget/tpl/images/widgetstyle_none.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
BIN
modules/widget/tpl/images/widgetstyle_setup.gif
Normal file
BIN
modules/widget/tpl/images/widgetstyle_setup.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 143 B |
|
|
@ -6,19 +6,19 @@
|
|||
|
||||
/* document.write(ln)의 경우 ajax로 처리시 가로채기 위한 함수 */
|
||||
document.write = document.writeln = function(str){
|
||||
if ( str.match(/^<\//) ) return;
|
||||
if ( !window.opera ) str = str.replace(/&(?![#a-z0-9]+;)/g, "&");
|
||||
if ( str.match(/^<\//) ) return;
|
||||
if ( !window.opera ) str = str.replace(/&(?![#a-z0-9]+;)/g, "&");
|
||||
str = str.replace(/(<[a-z]+)/g, "$1 xmlns='http://www.w3.org/1999/xhtml'");
|
||||
var div = null;
|
||||
if(document.createElementNS) div = document.createElementNS("http://www.w3.org/1999/xhtml","div");
|
||||
else div = xCreateElement('div');
|
||||
xInnerHtml(div, str);
|
||||
var pos;
|
||||
var pos;
|
||||
pos = document.getElementsByTagName("*");
|
||||
pos = pos[pos.length - 1];
|
||||
var nodes = div.childNodes;
|
||||
while ( nodes.length ) {
|
||||
pos.parentNode.appendChild( nodes[0] );
|
||||
var nodes = div.childNodes;
|
||||
while ( nodes.length ) {
|
||||
pos.parentNode.appendChild( nodes[0] );
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -61,7 +61,9 @@ function doStartPageModify(zoneID, module_srl) {
|
|||
var dummy = xCreateElement("div");
|
||||
xInnerHtml(dummy, xInnerHtml(obj));
|
||||
dummy.id="pageSizeLayer";
|
||||
dummy.className=obj.className;
|
||||
dummy.style.visibility = "hidden";
|
||||
dummy.style.display = "block";
|
||||
dummy.style.position = "absolute";
|
||||
dummy.style.left = 0;
|
||||
dummy.style.top = 0;
|
||||
|
|
@ -115,21 +117,54 @@ function getWidgetContent(obj) {
|
|||
}
|
||||
childObj = childObj.nextSibling;
|
||||
}
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
// 컨텐츠 위젯 코드 구함
|
||||
function getContentWidgetCode(childObj, widget) {
|
||||
var cobj = childObj.firstChild;
|
||||
while(cobj) {
|
||||
if(cobj.nodeName == "DIV" && cobj.className == "widgetContent") {
|
||||
var body = xInnerHtml(cobj);
|
||||
var document_srl = childObj.getAttribute('document_srl');
|
||||
if(document_srl>0) body = '';
|
||||
return '<img src="./common/tpl/images/widget_bg.jpg" class="zbxe_widget_output" widget="widgetContent" style="'+getStyle(childObj)+'" body="'+body+'" document_srl="'+document_srl+'" widget_padding_left="'+getPadding(childObj,'left')+'" widget_padding_right="'+getPadding(childObj, 'right')+'" widget_padding_top="'+getPadding(childObj, 'top')+'" widget_padding_bottom="'+getPadding(childObj,'bottom')+'" />';
|
||||
|
||||
var widgetContent = jQuery('div.widgetContent',childObj);
|
||||
var body = '';
|
||||
var document_srl = 0;
|
||||
var attrs ='';
|
||||
|
||||
if(widgetContent.size() > 0){
|
||||
document_srl = jQuery(childObj).attr('document_srl');
|
||||
if(document_srl>0){
|
||||
body = '';
|
||||
}else{
|
||||
body = widgetContent.html();
|
||||
}
|
||||
cobj = cobj.nextSibling;
|
||||
|
||||
|
||||
for(var i=0;i<childObj.attributes.length;i++) {
|
||||
if(!childObj.attributes[i].nodeName || !childObj.attributes[i].nodeValue) continue;
|
||||
var name = childObj.attributes[i].nodeName.toLowerCase();
|
||||
if(name == "contenteditable"
|
||||
|| name == "id"
|
||||
|| name=="style"
|
||||
|| name=="src"
|
||||
|| name=="widget"
|
||||
|| name == "body"
|
||||
|| name == "class"
|
||||
|| name == "widget_width"
|
||||
|| name == "widget_width_type"
|
||||
|| name == "xdpx"
|
||||
|| name == "xdpy"
|
||||
|| name == "height"
|
||||
|| name == "document_srl"
|
||||
|| name == "widget_padding_left"
|
||||
|| name == "widget_padding_right"
|
||||
|| name == "widget_padding_top"
|
||||
|| name == "widget_padding_bottom") continue;
|
||||
var value = childObj.attributes[i].nodeValue;
|
||||
if(!value) continue;
|
||||
attrs += name+'="'+escape(value)+'" ';
|
||||
}
|
||||
return '<img src="./common/tpl/images/widget_bg.jpg" class="zbxe_widget_output" widget="widgetContent" style="'+getStyle(childObj)+'" body="'+body+'" document_srl="'+document_srl+'" widget_padding_left="'+getPadding(childObj,'left')+'" widget_padding_right="'+getPadding(childObj, 'right')+'" widget_padding_top="'+getPadding(childObj, 'top')+'" widget_padding_bottom="'+getPadding(childObj,'bottom')+'" '+attrs+' />';
|
||||
}else{
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -180,6 +215,7 @@ function doAddContent(mid) {
|
|||
// 직접 내용을 입력하기 위한 에디터 활성화 작업 및 form 데이터 입력
|
||||
function doSyncPageContent() {
|
||||
if(opener && opener.selectedWidget) {
|
||||
|
||||
var fo_obj = xGetElementById("content_fo");
|
||||
var sel_obj = opener.selectedWidget;
|
||||
fo_obj.style.value = getStyle(opener.selectedWidget);
|
||||
|
|
@ -211,7 +247,6 @@ function addContentWidget(fo_obj) {
|
|||
var module_srl = fo_obj.module_srl.value;
|
||||
var document_srl = fo_obj.document_srl.value;
|
||||
var content = editorGetContent(editor_sequence);
|
||||
|
||||
var response_tags = new Array('error','message','document_srl');
|
||||
var params = new Array();
|
||||
params['editor_sequence'] = editor_sequence;
|
||||
|
|
@ -219,12 +254,19 @@ function addContentWidget(fo_obj) {
|
|||
params['module_srl'] = module_srl;
|
||||
params['document_srl'] = document_srl;
|
||||
exec_xml('widget',"procWidgetInsertDocument",params,completeAddContent,response_tags,params,fo_obj);
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
function completeAddContent(ret_obj, response_tags, params, fo_obj) {
|
||||
var document_srl = ret_obj['document_srl'];
|
||||
|
||||
var contentWidget = opener.jQuery('div.widgetOutput[widget=widgetContent][document_srl='+document_srl+']');
|
||||
var attr = null;
|
||||
if(contentWidget.size()>0) {
|
||||
attr = contentWidget.get(0).attributes;
|
||||
}
|
||||
|
||||
var tpl = ''+
|
||||
'<div class="widgetOutput" style="'+fo_obj.style.value+'" widget_padding_left="'+fo_obj.widget_padding_left.value+'" widget_padding_right="'+fo_obj.widget_padding_right.value+'" widget_padding_top="'+fo_obj.widget_padding_top.value+'" widget_padding_bottom="'+fo_obj.widget_padding_bottom.value+'" document_srl="'+document_srl+'" widget="widgetContent">'+
|
||||
'<div class="widgetResize"></div>'+
|
||||
|
|
@ -235,6 +277,17 @@ function completeAddContent(ret_obj, response_tags, params, fo_obj) {
|
|||
'<div class="widgetContent" style="display:none;width:1px;height:1px;overflow:hidden;"></div>'+
|
||||
'</div>';
|
||||
|
||||
var oTpl = jQuery(tpl);
|
||||
if(attr) {
|
||||
jQuery.each(attr,function(i){
|
||||
if(!oTpl.attr(attr[i].name)){
|
||||
oTpl.attr(attr[i].name,attr[i].value);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
oTpl = jQuery('<div>').append(oTpl);
|
||||
tpl = oTpl.html();
|
||||
opener.doAddWidgetCode(tpl);
|
||||
window.close();
|
||||
}
|
||||
|
|
@ -345,7 +398,17 @@ function doCheckWidget(e) {
|
|||
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"), "addContent");
|
||||
else popopen(request_uri+"?module=widget&act=dispWidgetGenerateCodeInPage&selected_widget="+widget,'GenerateCodeInPage');
|
||||
else popopen(request_uri+"?module=widget&act=dispWidgetGenerateCodeInPage&selected_widget="+widget+"&widgetstyle="+widgetstyle,'GenerateCodeInPage');
|
||||
return;
|
||||
|
||||
// 위젯 스타일
|
||||
} else if(obj.className == 'widgetStyle') {
|
||||
var p_obj = obj.parentNode.parentNode;
|
||||
var widget = p_obj.getAttribute("widget");
|
||||
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');
|
||||
return;
|
||||
|
||||
// 위젯 복사
|
||||
|
|
@ -471,7 +534,7 @@ function doCheckWidgetDrag(e) {
|
|||
|
||||
doHideWidgetSizeSetup();
|
||||
|
||||
if(obj.className == 'widgetSetup' || obj.className == 'widgetCopy' || obj.className == 'widgetBoxCopy' || obj.className == 'widgetSize' || obj.className == 'widgetBoxSize' || obj.className == 'widgetRemove' || obj.className == 'widgetBoxRemove') return;
|
||||
if(obj.className == 'widgetSetup' || obj.className == 'widgetStyle' || obj.className == 'widgetCopy' || obj.className == 'widgetBoxCopy' || obj.className == 'widgetSize' || obj.className == 'widgetBoxSize' || obj.className == 'widgetRemove' || obj.className == 'widgetBoxRemove') return;
|
||||
|
||||
p_obj = obj;
|
||||
while(p_obj) {
|
||||
|
|
@ -733,20 +796,15 @@ function showWidgetButton(name, obj) {
|
|||
var widgetButton = xGetElementById(name);
|
||||
if(!widgetButton) return;
|
||||
widgetButton.style.visibility = 'visible';
|
||||
|
||||
obj.insertBefore(widgetButton, obj.firstChild);
|
||||
/*
|
||||
var cobj = obj.firstChild;
|
||||
while(cobj) {
|
||||
if(cobj.nodeName == "DIV" && cobj.className == "widgetBorder") {
|
||||
if(/embed/i.test(xInnerHtml(cobj))) {
|
||||
hideElements[hideElements.length] = cobj;
|
||||
cobj.style.paddingTop = '20px';
|
||||
}
|
||||
}
|
||||
cobj = cobj.nextSibling;
|
||||
}
|
||||
|
||||
obj.appendChild(widgetButton);
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
function widgetSetup(evt) {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@
|
|||
/* 생성된 코드를 textarea에 출력 */
|
||||
function completeGenerateCode(ret_obj) {
|
||||
var widget_code = ret_obj["widget_code"];
|
||||
|
||||
widget_code = widget_code.replace(/&/g, "&");
|
||||
widget_code = widget_code.replace(/\'/g, "'");
|
||||
var zone = xGetElementById("widget_code");
|
||||
zone.value = widget_code;
|
||||
}
|
||||
|
|
@ -21,7 +22,6 @@ function completeGenerateCodeInPage(ret_obj,response_tags,params,fo_obj) {
|
|||
}
|
||||
|
||||
opener.doAddWidgetCode(widget_code);
|
||||
|
||||
window.close();
|
||||
}
|
||||
|
||||
|
|
@ -68,9 +68,30 @@ function completeGetSkinColorset(ret_obj, response_tags, params, fo_obj) {
|
|||
setFixedPopupSize();
|
||||
}
|
||||
|
||||
/* 페이지 모듈에서 내용의 위젯을 더블클릭하여 수정하려고 할 경우 */
|
||||
|
||||
var selected_node = null;
|
||||
/* 페이지 모듈에서 위젯스타일 수정하려고 할 경우 */
|
||||
function getWidgetVars() {
|
||||
if(!opener || !opener.selectedWidget || !opener.selectedWidget.getAttribute("widget")) return;
|
||||
selected_node = opener.selectedWidget;
|
||||
|
||||
var fo_widget = jQuery('#fo_widget');
|
||||
var attrs = selected_node.attributes;
|
||||
for (i=0; i< attrs.length ; i++){
|
||||
var input = jQuery("[name='"+attrs[i].name+"']" ,'#fo_widget');
|
||||
if( input.size() == 0 && attrs[i].name != 'style'){
|
||||
fo_widget.prepend('<input type="hidden" name="'+attrs[i].name+'" value="'+attrs[i].value+'" />');
|
||||
}else{
|
||||
if(!input.val() && attrs[i].value ){
|
||||
input.val(attrs[i].value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 페이지 모듈에서 내용의 위젯을 더블클릭하여 수정하려고 할 경우 */
|
||||
function doFillWidgetVars() {
|
||||
|
||||
if(!opener || !opener.selectedWidget || !opener.selectedWidget.getAttribute("widget")) return;
|
||||
|
||||
selected_node = opener.selectedWidget;
|
||||
|
|
@ -80,12 +101,30 @@ function doFillWidgetVars() {
|
|||
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(jQuery("[name="+name+"]",fo_widget).size()>0 || !value || name == 'style') continue;
|
||||
|
||||
var dummy = xCreateElement("input");
|
||||
dummy.type = 'hidden';
|
||||
dummy.name = name;
|
||||
dummy.value = value;
|
||||
fo_obj.appendChild(dummy);
|
||||
}
|
||||
|
||||
// 위젯의 속성 설정
|
||||
var obj_list = new Array();
|
||||
jQuery('form input, form select, form textarea').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;
|
||||
|
|
@ -97,6 +136,8 @@ function doFillWidgetVars() {
|
|||
|
||||
switch(type) {
|
||||
case "hidden" :
|
||||
if(jQuery('[name=_' + node.name+']').size() == 0) continue;
|
||||
|
||||
case "text" :
|
||||
case "textarea" :
|
||||
var val = selected_node.getAttribute(name);
|
||||
|
|
@ -111,8 +152,8 @@ function doFillWidgetVars() {
|
|||
if(fo_obj[name].length) {
|
||||
for(var i=0;i<fo_obj[name].length;i++) {
|
||||
var v = fo_obj[name][i].value;
|
||||
for(var j=0;j<val.length;j++) {
|
||||
if(v == val[j]) {
|
||||
for(var k=0;k<val.length;k++) {
|
||||
if(v == val[k]) {
|
||||
fo_obj[name][i].checked=true;
|
||||
break;
|
||||
}
|
||||
|
|
@ -327,3 +368,126 @@ function selectWidget(val){
|
|||
var url =current_url.setQuery('selected_widget', val);
|
||||
document.location.href = url;
|
||||
}
|
||||
|
||||
function widgetstyle_extra_image_upload(f){
|
||||
f.act.value='procWidgetStyleExtraImageUpload';
|
||||
f.submit();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function MultiOrderSet(id){
|
||||
var selectedObj = jQuery("[name='selected_"+id+"']").get(0);
|
||||
|
||||
var value = [];
|
||||
for(i=0;i<selectedObj.options.length;i++){
|
||||
value.push(selectedObj.options[i].value);
|
||||
}
|
||||
jQuery("[name='"+id+"']").val(value.join(','));
|
||||
}
|
||||
|
||||
|
||||
function MultiOrderAdd(id){
|
||||
var showObj = jQuery("[name='show_"+id+"']").get(0);
|
||||
var selectedObj = jQuery("[name='selected_"+id+"']").get(0);
|
||||
var defaultObj = jQuery("[name='default_"+id+"']").val().split(',');
|
||||
|
||||
if(showObj.selectedIndex<0) return;
|
||||
var idx = showObj.selectedIndex;
|
||||
var svalue = showObj.options[idx].value;
|
||||
|
||||
|
||||
for(i=0;i<selectedObj.options.length;i++){
|
||||
if(selectedObj.options[i].value == svalue) return;
|
||||
}
|
||||
selectedObj.options.add(new Option(svalue, svalue, false, false));
|
||||
|
||||
MultiOrderSet(id);
|
||||
}
|
||||
|
||||
|
||||
function MultiOrderDelete(id){
|
||||
var showObj = jQuery("[name='show_"+id+"']").get(0);
|
||||
var selectedObj = jQuery("[name='selected_"+id+"']").get(0);
|
||||
var defaultObj = jQuery("[name='default_"+id+"']").val().split(',');
|
||||
|
||||
var idx = selectedObj.selectedIndex;
|
||||
if(idx<0) return;
|
||||
for(i=0;i<defaultObj.length;i++){
|
||||
if(jQuery.inArray(selectedObj.options[idx].value, defaultObj) > -1) return;
|
||||
}
|
||||
|
||||
selectedObj.remove(idx);
|
||||
idx = idx-1;
|
||||
if(idx < 0) idx = 0;
|
||||
if(selectedObj.options.length) selectedObj.selectedIndex = idx;
|
||||
|
||||
MultiOrderSet(id);
|
||||
}
|
||||
|
||||
function MultiOrderUp(id){
|
||||
var selectedObj = jQuery("[name='selected_"+id+"']").get(0);
|
||||
if(selectedObj.selectedIndex<0) return;
|
||||
var idx = selectedObj.selectedIndex;
|
||||
|
||||
if(idx < 1) return;
|
||||
|
||||
var s_obj = selectedObj.options[idx];
|
||||
var t_obj = selectedObj.options[idx-1];
|
||||
var value = s_obj.value;
|
||||
var text = s_obj.text;
|
||||
s_obj.value = t_obj.value;
|
||||
s_obj.text = t_obj.text;
|
||||
t_obj.value = value;
|
||||
t_obj.text = text;
|
||||
selectedObj.selectedIndex = idx-1;
|
||||
|
||||
MultiOrderSet(id);
|
||||
}
|
||||
|
||||
|
||||
function MultiOrderDown(id){
|
||||
var selectedObj = jQuery("[name='selected_"+id+"']").get(0);
|
||||
if(selectedObj.selectedIndex<0) return;
|
||||
var idx = selectedObj.selectedIndex;
|
||||
|
||||
if(idx == selectedObj.options.length-1) return;
|
||||
|
||||
var s_obj = selectedObj.options[idx];
|
||||
var t_obj = selectedObj.options[idx+1];
|
||||
var value = s_obj.value;
|
||||
var text = s_obj.text;
|
||||
s_obj.value = t_obj.value;
|
||||
s_obj.text = t_obj.text;
|
||||
t_obj.value = value;
|
||||
t_obj.text = text;
|
||||
selectedObj.selectedIndex = idx+1;
|
||||
|
||||
MultiOrderSet(id);
|
||||
}
|
||||
|
||||
function initMultiOrder(id){
|
||||
var selectedObj = jQuery("[name='selected_"+id+"']").get(0);
|
||||
var init_value = jQuery("[name='init_"+id+"']").val();
|
||||
var save_value = jQuery("[name='"+id+"']").val();
|
||||
if(save_value){
|
||||
var arr_save_value = save_value.split(',');
|
||||
for(i=0;i<arr_save_value.length;i++){
|
||||
if(arr_save_value[i].length>0){
|
||||
var opt = new Option(arr_save_value[i], arr_save_value[i]);
|
||||
selectedObj.options.add(opt);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
var arr_init_value = init_value.split(',');
|
||||
for(i=0;i<arr_init_value.length;i++){
|
||||
if(arr_init_value[i].length>0){
|
||||
var opt = new Option(arr_init_value[i], arr_init_value[i]);
|
||||
selectedObj.options.add(opt);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
MultiOrderSet(id);
|
||||
}
|
||||
|
|
|
|||
91
modules/widget/tpl/skin_info.html
Normal file
91
modules/widget/tpl/skin_info.html
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
<!--%import("../../admin/tpl/css/admin.css")-->
|
||||
<div id="popHeader" class="wide">
|
||||
<h3 class="xeAdmin">{$skin_info->title}</h3>
|
||||
</div>
|
||||
|
||||
<div id="popBody">
|
||||
<table cellspacing="0" class="rowTable">
|
||||
<col width="100" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row"><label for="textfield1">{$lang->title}</label></th>
|
||||
<td>{$skin_info->title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="textfield2">{$lang->author}</label></th>
|
||||
<td class="blue">
|
||||
<!--@foreach($skin_info->author as $author)-->
|
||||
{$author->name} <!--@if($author->homepage || $author->email_address)-->(<!--@if($author->homepage)--><a href="{$author->homepage}" onclick="window.open(this.href);return false;">{$author->homepage}</a><!--@end--><!--@if($author->homepage && $author->email_address)-->, <!--@end--><!--@if($author->email_address)--><a href="mailto:{$author->email_address}">{$author->email_address}</a><!--@end-->)<!--@end--><br />
|
||||
<!--@endforeach-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@if($skin_info->homepage)-->
|
||||
<tr>
|
||||
<th scope="row"><label for="textfield2">{$lang->homepage}</label></th>
|
||||
<td class="blue"><a href="{$skin_info->homepage}" onclick="window.open(this.href);return false;">{$skin_info->homepage}</a></td>
|
||||
</tr>
|
||||
<!--@endif-->
|
||||
<tr>
|
||||
<th scope="row"><label for="textfield2">{$lang->regdate}</label></th>
|
||||
<td>{zdate($skin_info->date, 'Y-m-d')}</td>
|
||||
</tr>
|
||||
<!--@if($skin_info->license || $skin_info->license_link)-->
|
||||
<tr>
|
||||
<th scope="row">{$lang->skin_license}</th>
|
||||
<td>
|
||||
{nl2br(trim($skin_info->license))}
|
||||
<!--@if($skin_info->license_link)-->
|
||||
<p><a href="{$skin_info->license_link}" onclick="window.close(); return false;">{$skin_info->license_link}</a></p>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<!--@if($skin_info->description)-->
|
||||
<tr>
|
||||
<th scope="row" class="borderBottomNone">{$lang->description}</th>
|
||||
<td class="borderBottomNone">{nl2br(trim($skin_info->description))}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!--@if($skin_info->history)-->
|
||||
<div id="popHistoryHeadder">
|
||||
<h3 class="xeAdmin">{$lang->skin_history}</h3>
|
||||
</div>
|
||||
|
||||
<div id="popHistoryBody">
|
||||
<table cellspacing="0" class="rowTable">
|
||||
<col width="100" />
|
||||
<col />
|
||||
|
||||
<!--@foreach($skin_info->history as $history)-->
|
||||
<tr>
|
||||
<th scope="row">
|
||||
{$history->version}<br />
|
||||
{$history->date}
|
||||
</th>
|
||||
<td>
|
||||
<!--@foreach($history->author as $author)-->
|
||||
<p>{$author->name} (<a href="{$author->homepage}" onclick="window.open(this.href);return false;">{$author->homepage}</a> / <a href="mailto:{$author->email_address}">{$author->email_address}</a>)</p>
|
||||
<!--@endforeach-->
|
||||
<!--@if($history->description)-->
|
||||
<p>{nl2br(trim($history->description))}</p>
|
||||
<!--@endif-->
|
||||
<!--@if($history->logs)-->
|
||||
<ul>
|
||||
<!--@foreach($history->logs as $log)-->
|
||||
<!--@if($log->link)-->
|
||||
<li><a href="{$log->link}">{$log->text}</a></li>
|
||||
<!--@else-->
|
||||
<li>{$log->text}</li>
|
||||
<!--@endif-->
|
||||
<!--@endforeach-->
|
||||
</ul>
|
||||
<!--@endif-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@endforeach-->
|
||||
</table>
|
||||
</div>
|
||||
<!--@endif-->
|
||||
|
|
@ -1,9 +1,13 @@
|
|||
<!--%import("css/widget.css")-->
|
||||
<!--%import("../../admin/tpl/css/admin.css")-->
|
||||
|
||||
<div id="popHeader" class="wide">
|
||||
<h3 class="xeAdmin">{$lang->widget}</h3>
|
||||
</div>
|
||||
|
||||
<div id="popBody">
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<caption>{$lang->widget_maker}</caption>
|
||||
<h4 class="xeAdmin">{$lang->widget_maker}</h4>
|
||||
<table cellspacing="0" class="rowTable">
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->title}</div></th>
|
||||
<td>{$widget_info->title} ver {$widget_info->version}</td>
|
||||
|
|
@ -45,12 +49,12 @@
|
|||
</div>
|
||||
|
||||
<!--@if($widget_info->history)-->
|
||||
<div id="popHistoryHeadder">
|
||||
<h3>{$lang->widget_history}</h3>
|
||||
<div id="popHistoryHeader">
|
||||
<h3 class="xeAdmin">{$lang->widget_history}</h3>
|
||||
</div>
|
||||
|
||||
<div id="popHistoryBody">
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<table cellspacing="0" class="rowTable">
|
||||
<!--@foreach($widget_info->history as $history)-->
|
||||
<tr>
|
||||
<th scope="row"><div>
|
||||
|
|
@ -79,7 +83,3 @@
|
|||
</table>
|
||||
</div>
|
||||
<!--@endif-->
|
||||
|
||||
<div id="popFooter" class="tCenter gap1">
|
||||
<a href="#" onclick="window.close(); return false;" class="button"><span>{$lang->cmd_close}</span></a>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -4,28 +4,23 @@
|
|||
<!--%import("../../admin/tpl/css/admin.css")-->
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, generate_code);" id="fo_widget">
|
||||
|
||||
|
||||
<div id="popHeadder">
|
||||
<h3>{$lang->cmd_generate_code}</h3>
|
||||
<div id="popHeader" class="wide">
|
||||
<h3 class="xeAdmin">{$lang->cmd_generate_code}</h3>
|
||||
</div>
|
||||
|
||||
<div id="popBody">
|
||||
{@ $_caption = $lang->about_widget_code}
|
||||
<!--#include("widget_generate_code.include.html")-->
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="100" />
|
||||
<col width="*" />
|
||||
<h3 class="xeAdmin">{$lang->widget_code}</h3>
|
||||
<table cellspacing="0" class="rowTable">
|
||||
<tr>
|
||||
<th><div>{$lang->widget_code}</div></th>
|
||||
<td><textarea readonly="true" id="widget_code" class="inputTypeTextArea w400"></textarea></td>
|
||||
<td class="wide"><textarea readonly="true" id="widget_code" class="inputTypeTextArea fullWidth"></textarea></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="popFooter" class="tCenter gap1">
|
||||
<span class="button green"><input type="submit" value="{$lang->cmd_generate_code}" /></span>
|
||||
<a href="#" onclick="window.close(); return false;" class="button red"><span>{$lang->cmd_close}</span></a>
|
||||
<div id="popFooter">
|
||||
<span class="button black strong"><input type="submit" value="{$lang->cmd_generate_code}" /></span>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -1,123 +1,183 @@
|
|||
<table cellspacing="0" class="adminTable">
|
||||
<caption>{nl2br($_caption)}</caption>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->widget}</div></th>
|
||||
<td>
|
||||
<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_select}</span></a>
|
||||
|
||||
|
||||
<!--@if($widget_info->author->description)-->
|
||||
<div class="widget_description">{nl2br(trim($widget_info->author->description))}</div>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@if(count($skin_list))-->
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->skin}</div></th>
|
||||
<td>
|
||||
<select name="skin" id="widget_skin">
|
||||
<option value=""> </option>
|
||||
<!--@foreach($skin_list as $key => $val)-->
|
||||
<option value="{$key}">{$val->title} ({$key})</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<p class="summary">{nl2br($_caption)}</p>
|
||||
<table cellspacing="0" class="rowTable">
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->widget}</div></th>
|
||||
<td>
|
||||
<select name="selected_widget" class="fullWidth">
|
||||
<!--@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_select}</span></a>
|
||||
<!--@if($widget_info->author->description)-->
|
||||
<div class="widget_description">{nl2br(trim($widget_info->author->description))}</div>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@if(count($skin_list))-->
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->skin}</div></th>
|
||||
<td>
|
||||
<select name="skin" id="widget_skin" class="fullWidth">
|
||||
<option value=""> </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_select}</span></a>
|
||||
<div id="colorset_area" style="display:none">
|
||||
<div class="header">{$lang->colorset}</div>
|
||||
<div class="footer">
|
||||
<select name="colorset" id="widget_colorset">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->widget_cache}</div></th>
|
||||
<td>
|
||||
<input type="text" name="widget_cache" value="0" class="inputTypeText" size="2" />{$lang->unit_min}
|
||||
<p>{$lang->about_widget_cache}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@foreach($widget_info->extra_var as $id => $var)-->
|
||||
|
||||
<!--@if($var->group && ((!$group) || $group != $var->group))-->
|
||||
{@$group = $var->group}
|
||||
</table>
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<caption>{$group}</caption>
|
||||
<!--@end-->
|
||||
|
||||
<tr class="row{$cycle_idx}">
|
||||
<th scope="row">
|
||||
<div>
|
||||
{$var->name}
|
||||
<!--@if($var->type == "mid_list")-->
|
||||
<input type="checkbox" onclick="XE.checkboxToggleAll('{$id}'); return false;" />
|
||||
<!--@end-->
|
||||
</div>
|
||||
</th>
|
||||
<td>
|
||||
<!--@if($var->type == "text")-->
|
||||
<input type="text" name="{$id}" value="" class="inputTypeText w400" />
|
||||
|
||||
<!--@elseif($var->type == "textarea")-->
|
||||
<textarea name="{$id}" class="inputTypeTextArea w400"></textarea>
|
||||
|
||||
<!--@elseif($var->type == "select")-->
|
||||
<select name="{$id}">
|
||||
<!--@foreach($var->options as $key => $val)-->
|
||||
<option value="{$key}">{$val}</option>
|
||||
<!--@end-->
|
||||
<div id="colorset_area" style="display:none">
|
||||
<div class="header">{$lang->colorset}</div>
|
||||
<div class="footer">
|
||||
<select name="colorset" id="widget_colorset">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->widget_cache}</div></th>
|
||||
<td>
|
||||
<input type="text" name="widget_cache" value="0" class="inputTypeText" size="2" />{$lang->unit_min}
|
||||
<p>{$lang->about_widget_cache}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@foreach($widget_info->extra_var as $id => $var)-->
|
||||
|
||||
<!--@elseif($var->type == "mid_list")-->
|
||||
<!--@if($var->group && ((!$group) || $group != $var->group))-->
|
||||
{@$group = $var->group}
|
||||
</table>
|
||||
|
||||
<!--@foreach($mid_list as $module_category_srl => $modules)-->
|
||||
<!--@if($modules->title)-->
|
||||
<div class="widget_title">{$modules->title}</div>
|
||||
<!--@else-->
|
||||
<div class="widget_title">{$lang->none_category}</div>
|
||||
<!--@end-->
|
||||
|
||||
<!--@foreach($modules->list as $key => $val)-->
|
||||
<div class="widget_mid_list">
|
||||
<input type="checkbox" value="{$key}" name="{$id}" id="chk_mid_list_{$key}" />
|
||||
<label for="chk_mid_list_{$key}">{$key} ({$val->browser_title})</label>
|
||||
</div>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<h3 class="xeAdmin">{$group}</h3>
|
||||
<table cellspacing="0" class="rowTable">
|
||||
<!--@end-->
|
||||
<tr class="row{$cycle_idx}">
|
||||
<th scope="row">
|
||||
<div>
|
||||
{$var->name}
|
||||
<!--@if($var->type == "mid_list")-->
|
||||
<input type="checkbox" onclick="XE.checkboxToggleAll('{$id}'); return false;" />
|
||||
<!--@end-->
|
||||
</div>
|
||||
</th>
|
||||
<td>
|
||||
<!--@if($var->type == "text")-->
|
||||
<input type="text" name="{$id}" value="" class="inputTypeText fullWidth" />
|
||||
|
||||
<!--@elseif($var->type == "module_srl_list")-->
|
||||
<input type="hidden" name="{$id}" id="{$id}" value="" />
|
||||
<select name="_{$id}" id="_{$id}" size="8" class="w300 fl"></select>
|
||||
<ul class="midCommand">
|
||||
<li><a href="{getUrl('','module','module','act','dispModuleAdminSelectList','id',$id)}" onclick="popopen(this.href, 'ModuleSelect');return false;" class="button blue"><span>{$lang->cmd_insert}</span></a></li>
|
||||
<li><a href="#" onclick="midMoveUp('{$id}');return false;" class="button black"><span>{$lang->cmd_move_up}</span></a></li>
|
||||
<li><a href="#" onclick="midMoveDown('{$id}');return false;" class="button black"><span>{$lang->cmd_move_down}</span></a></li>
|
||||
<li><a href="#" onclick="midRemove('{$id}');return false;" class="button red"><span>{$lang->cmd_delete}</span></a></li>
|
||||
</ul>
|
||||
<script type="text/javascript">
|
||||
if(typeof(getModuleSrlList)!=='undefined') {
|
||||
doAddWindowLoadEventLoader( function() { getModuleSrlList('{$id}'); } );
|
||||
}
|
||||
</script>
|
||||
<!--@elseif($var->type == "mid")-->
|
||||
<input type="hidden" name="{$id}" id="{$id}" value="" />
|
||||
<input type="text" name="_{$id}" id="_{$id}" value="" class="inputTypeText w300" readonly="readonly"/><a href="{getUrl('','module','module','act','dispModuleAdminSelectList','id',$id,'type','single')}" onclick="popopen(this.href, 'ModuleSelect');return false;" class="button blue"><span>{$lang->cmd_select}</span></a>
|
||||
<script type="text/javascript">
|
||||
if(typeof(getModuleSrlList)!=='undefined') {
|
||||
doAddWindowLoadEventLoader( function() { getModuleSrl('{$id}'); });
|
||||
}
|
||||
</script>
|
||||
<!--@elseif($var->type == "textarea")-->
|
||||
<textarea name="{$id}" class="inputTypeTextArea fullWidth"></textarea>
|
||||
|
||||
<!--@elseif($var->type == "select")-->
|
||||
<select name="{$id}">
|
||||
<!--@foreach($var->options as $key => $val)-->
|
||||
<option value="{$key}">{$val}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
<!--@elseif($var->type == "select-multi-order")-->
|
||||
<input type="hidden" name="{$id}" value="" />
|
||||
<input type="hidden" name="default_{$id}" value="" />
|
||||
<input type="hidden" name="init_{$id}" value="" />
|
||||
|
||||
<div style="float:left;margin-left:30px;">
|
||||
<select name="show_{$id}" size="8" class="w100">
|
||||
<!--@foreach($var->options as $key => $val)-->
|
||||
<option value="{$key}">{$key}</option>
|
||||
<!--@end-->
|
||||
<p class="clear">{nl2br($var->description)}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</select>
|
||||
</div>
|
||||
<div style="float:left;margin-left:30px;">
|
||||
<a class="buttonSet buttonRight" onclick="MultiOrderAdd('{$id}'); return false;" href="#"></a>
|
||||
<br/><br/>
|
||||
<a class="buttonSet buttonLeft" onclick="MultiOrderDelete('{$id}'); return false;" href="#"></a>
|
||||
<br/><br/>
|
||||
<a class="buttonSet buttonUp" onclick="MultiOrderUp('{$id}'); return false;" href="#"></a>
|
||||
<br/><br/>
|
||||
<a class="buttonSet buttonDown" onclick="MultiOrderDown('{$id}'); return false;" href="#"></a>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="float:left;margin-left:30px;">
|
||||
<select name="selected_{$id}" name="selected_{$id}" size="8" class="w100">
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
<!--@foreach($var->options as $key => $val)-->
|
||||
<!--@if($var->default_options[$key] == true)-->
|
||||
jQuery("[name='default_{$id}']").get(0).value += '{$key},';
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($var->init_options[$key] == true)-->
|
||||
jQuery("[name='init_{$id}']").get(0).value += ','+'{$key}';
|
||||
<!--@end-->
|
||||
|
||||
<!--@end-->
|
||||
|
||||
if(typeof(initMultiOrder)!=='undefined') {
|
||||
doAddWindowLoadEventLoader( function() { initMultiOrder('{$id}'); } );
|
||||
}
|
||||
// MultiOrderSet('{$id}');
|
||||
</script>
|
||||
<!--@elseif($var->type == "mid_list")-->
|
||||
|
||||
<!--@foreach($mid_list as $module_category_srl => $modules)-->
|
||||
<!--@if($modules->title)-->
|
||||
<div class="widget_title">{$modules->title}</div>
|
||||
<!--@else-->
|
||||
<div class="widget_title">{$lang->none_category}</div>
|
||||
<!--@end-->
|
||||
|
||||
<!--@foreach($modules->list as $key => $val)-->
|
||||
<div class="widget_mid_list">
|
||||
<input type="checkbox" value="{$key}" name="{$id}" id="chk_mid_list_{$key}" />
|
||||
<label for="chk_mid_list_{$key}">{$key} ({$val->browser_title})</label>
|
||||
</div>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<!--@elseif($var->type == "member_group")-->
|
||||
|
||||
<!--@foreach($group_list as $key => $val)-->
|
||||
<input type="checkbox" value="{$key}" name="{$id}" id="chk_member_gruop_{$id}_{$key}" />
|
||||
<label for="chk_member_gruop_{$id}_{$key}">{$val->title}</label>
|
||||
<!--@end-->
|
||||
|
||||
<!--@elseif($var->type == "module_srl_list")-->
|
||||
<input type="hidden" name="{$id}" id="{$id}" value="" />
|
||||
<select name="_{$id}" id="_{$id}" size="8" class="w300 fl"></select>
|
||||
<ul class="midCommand">
|
||||
<li><a href="{getUrl('','module','module','act','dispModuleSelectList','id',$id)}" onclick="popopen(this.href, 'ModuleSelect');return false;" class="button blue"><span>{$lang->cmd_insert}</span></a></li>
|
||||
<li><a href="#" onclick="midMoveUp('{$id}');return false;" class="button black"><span>{$lang->cmd_move_up}</span></a></li>
|
||||
<li><a href="#" onclick="midMoveDown('{$id}');return false;" class="button black"><span>{$lang->cmd_move_down}</span></a></li>
|
||||
<li><a href="#" onclick="midRemove('{$id}');return false;" class="button red"><span>{$lang->cmd_delete}</span></a></li>
|
||||
</ul>
|
||||
<script type="text/javascript">
|
||||
if(typeof(getModuleSrlList)!=='undefined') {
|
||||
doAddWindowLoadEventLoader( function() { getModuleSrlList('{$id}'); } );
|
||||
}
|
||||
</script>
|
||||
<!--@elseif($var->type == "mid")-->
|
||||
<input type="hidden" name="{$id}" id="{$id}" value="" />
|
||||
<input type="text" name="_{$id}" id="_{$id}" value="" class="inputTypeText w300" readonly="readonly"/><a href="{getUrl('','module','module','act','dispModuleSelectList','id',$id,'type','single')}" onclick="popopen(this.href, 'ModuleSelect');return false;" class="button blue"><span>{$lang->cmd_select}</span></a>
|
||||
<script type="text/javascript">
|
||||
if(typeof(getModuleSrlList)!=='undefined') {
|
||||
doAddWindowLoadEventLoader( function() { getModuleSrl('{$id}'); });
|
||||
}
|
||||
</script>
|
||||
<!--@elseif($var->type == "menu")-->
|
||||
<select name="{$id}" class="w300 fl">
|
||||
<option value="">-</option>
|
||||
<!--@foreach($menu_list as $key => $val)-->
|
||||
<option value="{$val->menu_srl}">{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<!--@end-->
|
||||
</table>
|
||||
<p class="clear">{nl2br($var->description)}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@
|
|||
<input type="hidden" name="widget_padding_top" value="" />
|
||||
<input type="hidden" name="widget_padding_bottom" value="" />
|
||||
|
||||
<div id="popHeadder">
|
||||
<h3>{$lang->cmd_generate_code}</h3>
|
||||
<div id="popHeader" class="wide">
|
||||
<h3 class="xeAdmin">{$lang->cmd_generate_code}</h3>
|
||||
</div>
|
||||
|
||||
<div id="popBody">
|
||||
|
|
@ -27,7 +27,6 @@
|
|||
|
||||
</div>
|
||||
<div id="popFooter" class="tCenter gap1">
|
||||
<span class="button green"><input type="submit" value="{$lang->cmd_generate_code}" /></span>
|
||||
<a href="#" onclick="window.close(); return false;" class="button red"><span>{$lang->cmd_close}</span></a>
|
||||
<span class="button black strong"><input type="submit" value="{$lang->cmd_generate_code}" /></span>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
<div id="tmpPageSizeLayer" style="visibility:hidden;">
|
||||
<form action="./" onsubmit="doApplyWidgetSize(this); return false;">
|
||||
<table cellspacing="0">
|
||||
<div id="tmpPageSizeLayer" class="layer boxModelController">
|
||||
<form action="./" onsubmit="doApplyWidgetSize(this); return false;">
|
||||
<h4 class="xeAdmin"> </h4>
|
||||
<!--button class="xButton" type="button" onclick="hideCategoryInfo();return false" ><span>{$lang->cmd_close}</span></button-->
|
||||
|
||||
<div class="layerBody">
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="140" />
|
||||
<col />
|
||||
<col />
|
||||
|
|
@ -103,10 +107,11 @@
|
|||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" class="buttonBox">
|
||||
<input type="submit" value="{$lang->cmd_save}" class="submit"/>
|
||||
</td>
|
||||
<th colspan="3">
|
||||
<span class="button black strong"><input type="submit" value="{$lang->cmd_save}" class="submit"/></span>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
|||
105
modules/widget/tpl/widget_style_generate_code_in_page.html
Normal file
105
modules/widget/tpl/widget_style_generate_code_in_page.html
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
<!--%import("filter/style_generate_code_in_page.xml")-->
|
||||
<!--%import("js/widget_admin.js")-->
|
||||
<!--%import("css/widget.css")-->
|
||||
<!--%import("../../admin/tpl/css/admin.css")-->
|
||||
<!--%load_js_plugin("filebox")-->
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
doAddWindowLoadEventLoader(getWidgetVars);
|
||||
</script>
|
||||
|
||||
<div id="popHeader" class="wide">
|
||||
<h3 class="xeAdmin">{$lang->widgetstyle}</h3>
|
||||
</div>
|
||||
|
||||
<form action="{getUrl('')}" method="post" enctype="multipart/form-data" target="hidden_iframe" onsubmit="return procFilter(this, style_generate_code_in_page);" id="fo_widget">
|
||||
<input type="hidden" name="module" value="widget" />
|
||||
<input type="hidden" name="act" value="" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
<input type="hidden" name="widgetstyle" value="{$widgetstyle}" />
|
||||
<input type="hidden" name="widget_sequence" value="" />
|
||||
<input type="hidden" name="style" value="float:left;width:100%;margin:none;padding:none;" />
|
||||
<input type="hidden" name="selected_widget" value="{$selected_widget}" />
|
||||
|
||||
|
||||
|
||||
<div id="popBody">
|
||||
|
||||
<a href="{getUrl('widgetstyle','none')}" class="widgetStyle"><img src="images/widgetstyle_none.gif" title="{$lang->notuse}" /></a>
|
||||
<!--@foreach($widgetStyle_list as $key => $widgetStyle)-->
|
||||
<!--@if($widgetStyle->preview)-->
|
||||
<a href="{getUrl('widgetstyle',$widgetStyle->widgetStyle)}" class="widgetStyle <!--@if($widgetStyle->widgetStyle==$widgetstyle)-->selected<!--@end-->"><img src="{getUrl()}{$widgetStyle->preview}" title="{$widgetStyle->title}" /></a>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<div class="clear"></div>
|
||||
|
||||
|
||||
<!--@if($widgetstyle_info)-->
|
||||
<h4 class="xeAdmin">{$widgetstyle_info->title} ver {$widgetstyle_info->version}</h4>
|
||||
<table cellspacing="0" class="rowTable">
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->description}</div></th>
|
||||
<td>{$widgetstyle_info->description}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->author}</div></th>
|
||||
<td>
|
||||
<!--@foreach($widgetstyle_info->author as $k => $author)-->
|
||||
{$author->name} ({$author->homepage})
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->regdate}</div></th>
|
||||
<td>{zdate($widgetstyle_info->date,'Y-m-d')}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h4 class="xeAdmin">{$lang->cmd_setup}</h4>
|
||||
<table cellspacing="0" class="rowTable">
|
||||
<!--@foreach($widgetstyle_info->extra_var as $id => $var)-->
|
||||
<tr>
|
||||
<th scope="row">
|
||||
<div>
|
||||
{$var->name}
|
||||
</div>
|
||||
</th>
|
||||
<td>
|
||||
<!--@if($var->type == "text")-->
|
||||
<input type="text" name="{$id}" value="" class="inputTypeText w400" />
|
||||
|
||||
<!--@elseif($var->type == "textarea")-->
|
||||
<textarea name="{$id}" class="inputTypeTextArea w400"></textarea>
|
||||
|
||||
<!--@elseif($var->type == "select")-->
|
||||
<select name="{$id}">
|
||||
<!--@foreach($var->options as $key => $val)-->
|
||||
<option value="{$key}">{$val}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<!--@elseif($var->type == "filebox")-->
|
||||
<div id="filebox_preview_{$id}" style="width:100px;height:100px;display:none" ></div>
|
||||
<input type="hidden" name="{$id}" value="" />
|
||||
<span class="button black"><button type="button" onclick="XE.filebox.open(jQuery('[name={$id}]', '#fo_widget').get(0), '{$var->filter}')">{$lang->cmd_select}</button></span>
|
||||
<span id="filebox_cancel_{$id}" class="button red" style="display:none" ><button type="button" onclick="XE.filebox.cancel('{$id}')">{$lang->cmd_delete}</button></span>
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
XE.filebox.init('{$id}');
|
||||
//]]></script>
|
||||
|
||||
|
||||
<!--@end-->
|
||||
<p class="clear">{nl2br($var->description)}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
<!--@end-->
|
||||
|
||||
</div>
|
||||
<div id="popFooter">
|
||||
<span class="button black strong"><input type="submit" value="{$lang->cmd_setup}" /></span>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<iframe name="hidden_iframe" frameborder="0" style="display:none"></iframe>
|
||||
|
|
@ -53,11 +53,14 @@
|
|||
$option->enable_default_component = true;
|
||||
$option->enable_component = true;
|
||||
$option->resizable = false;
|
||||
$option->height = 300;
|
||||
$option->height = 200;
|
||||
$editor = $oEditorModel->getEditor($module_srl, $option);
|
||||
Context::set('editor', $editor);
|
||||
|
||||
|
||||
|
||||
$this->setTemplateFile('add_content_widget');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -11,13 +11,6 @@
|
|||
* @brief 설치시 추가 작업이 필요할시 구현
|
||||
**/
|
||||
function moduleInstall() {
|
||||
// action forward에 등록 (관리자 모드에서 사용하기 위함)
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->insertActionForward('widget', 'view', 'dispWidgetInfo');
|
||||
$oModuleController->insertActionForward('widget', 'view', 'dispWidgetGenerateCode');
|
||||
$oModuleController->insertActionForward('widget', 'view', 'dispWidgetGenerateCodePage');
|
||||
$oModuleController->insertActionForward('widget', 'view', 'dispWidgetAdminDownloadedList');
|
||||
|
||||
// widget 에서 사용할 cache디렉토리 생성
|
||||
FileHandler::makeDir('./files/cache/widget');
|
||||
FileHandler::makeDir('./files/cache/widget_cache');
|
||||
|
|
@ -50,57 +43,5 @@
|
|||
FileHandler::removeFilesInDir("./files/cache/widget_cache");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Action중 Admin이 들어갔을 경우 권한 체크
|
||||
**/
|
||||
function checkAdminActionGrant() {
|
||||
if(!Context::get('is_logged')) return false;
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
if($logged_info->is_admin=='Y') return true;
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
if($oModuleModel->isSiteAdmin()) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 권한 체크를 실행하는 method
|
||||
* 모듈 객체가 생성된 경우는 직접 권한을 체크하지만 기능성 모듈등 스스로 객체를 생성하지 않는 모듈들의 경우에는
|
||||
* ModuleObject에서 직접 method를 호출하여 권한을 확인함
|
||||
*
|
||||
* isAdminGrant는 관리권한 이양시에만 사용되도록 하고 기본은 false로 return 되도록 하여 잘못된 권한 취약점이 생기지 않도록 주의하여야 함
|
||||
**/
|
||||
function isAdmin() {
|
||||
// 로그인이 되어 있지 않으면 무조건 return false
|
||||
$is_logged = Context::get('is_logged');
|
||||
if(!$is_logged) return false;
|
||||
|
||||
// 사용자 아이디를 구함
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 모듈 요청에 사용된 변수들을 가져옴
|
||||
$args = Context::getRequestVars();
|
||||
|
||||
// act의 값에 따라서 관리 권한 체크
|
||||
switch($args->act) {
|
||||
case 'dispWidgetAdminAddContent' :
|
||||
// 레이아웃 정보에 할당된 srl이 없으면 패스
|
||||
if(!$args->module_srl) return false;
|
||||
|
||||
// 모듈중 레이아웃이 해당 srl에 연결될 것이 있는지 확인
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl);
|
||||
|
||||
if($oModuleModel->isModuleAdmin($module_info,$logged_info)) $is_granted = true;
|
||||
else $is_granted = false;
|
||||
return $is_granted;
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@
|
|||
$widget_info = $oWidgetModel->getWidgetInfo($widget);
|
||||
|
||||
$widget = $vars->selected_widget;
|
||||
$vars->widgetstyle = $request_vars->widgetstyle;
|
||||
|
||||
$vars->skin = trim($request_vars->skin);
|
||||
$vars->colorset = trim($request_vars->colorset);
|
||||
$vars->widget_sequence = (int)($request_vars->widget_sequence);
|
||||
|
|
@ -30,12 +32,29 @@
|
|||
$vars->widget_padding_right = trim($request_vars->widget_padding_right);
|
||||
$vars->widget_padding_top = trim($request_vars->widget_padding_top);
|
||||
$vars->widget_padding_bottom = trim($request_vars->widget_padding_bottom);
|
||||
$vars->document_srl= trim($request_vars->document_srl);
|
||||
|
||||
|
||||
if(count($widget_info->extra_var)) {
|
||||
foreach($widget_info->extra_var as $key=>$val) {
|
||||
$vars->{$key} = trim($request_vars->{$key});
|
||||
$vars->{$key} = trim($request_vars->{$key});
|
||||
}
|
||||
}
|
||||
|
||||
// 위젯 스타일이 있는 경우
|
||||
if($request_vars->widgetstyle){
|
||||
$widgetStyle_info = $oWidgetModel->getWidgetStyleInfo($request_vars->widgetstyle);
|
||||
if(count($widgetStyle_info->extra_var)) {
|
||||
foreach($widgetStyle_info->extra_var as $key=>$val) {
|
||||
if($val->type =='text' || $val->type =='select' || $val->type =='filebox'){
|
||||
$vars->{$key} = trim($request_vars->{$key});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if($vars->widget_sequence) {
|
||||
$cache_path = './files/cache/widget_cache/';
|
||||
$cache_file = sprintf('%s%d.%s.cache', $cache_path, $vars->widget_sequence, Context::getLangType());
|
||||
|
|
@ -51,8 +70,8 @@
|
|||
continue;
|
||||
}
|
||||
if(strpos($val,'|@|') > 0) $val = str_replace('|@|', ',', $val);
|
||||
$vars->{$key} = htmlspecialchars($val);
|
||||
$attribute[] = sprintf('%s="%s"', $key, $val);
|
||||
$vars->{$key} = htmlspecialchars(Context::convertEncodingStr($val));
|
||||
$attribute[] = sprintf('%s="%s"', $key, Context::convertEncodingStr($val));
|
||||
}
|
||||
|
||||
return $attribute;
|
||||
|
|
@ -80,8 +99,7 @@
|
|||
function procWidgetGenerateCodeInPage() {
|
||||
$widget = Context::get('selected_widget');
|
||||
if(!$widget) return new Object(-1,'msg_invalid_request');
|
||||
if(!Context::get('skin')) return new Object(-1,Context::getLang('msg_widget_skin_is_null'));
|
||||
|
||||
// if(!Context::get('skin')) return new Object(-1,Context::getLang('msg_widget_skin_is_null'));
|
||||
$attribute = $this->arrangeWidgetVars($widget, Context::getRequestVars(), $vars);
|
||||
|
||||
// 결과물을 구함
|
||||
|
|
@ -91,6 +109,17 @@
|
|||
$this->add('widget_code', $widget_code);
|
||||
}
|
||||
|
||||
function procWidgetStyleExtraImageUpload(){
|
||||
$attribute = $this->arrangeWidgetVars($widget, Context::getRequestVars(), $vars);
|
||||
|
||||
$this->setLayoutPath('./common/tpl');
|
||||
$this->setLayoutFile('default_layout.html');
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
$this->setTemplateFile("top_refresh.html");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief 선택된 위젯 - 스킨의 컬러셋을 return
|
||||
**/
|
||||
|
|
@ -115,7 +144,11 @@
|
|||
* @breif 특정 content의 위젯 태그들을 변환하여 return
|
||||
**/
|
||||
function transWidgetCode($content, $include_info = false) {
|
||||
// 사용자 정의 언어 변경
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->replaceDefinedLangCode($content);
|
||||
|
||||
// 편집 정보 포함 여부 체크
|
||||
$this->include_info = $include_info;
|
||||
|
||||
// 내용중 위젯을 또다시 구함 (기존 버전에서 페이지 수정해 놓은것과의 호환을 위해서)
|
||||
|
|
@ -214,16 +247,24 @@
|
|||
* @brief 컨텐츠 위젯 추가
|
||||
**/
|
||||
function procWidgetInsertDocument() {
|
||||
|
||||
// 변수 구함
|
||||
$module_srl = Context::get('module_srl');
|
||||
$document_srl = Context::get('document_srl');
|
||||
$content = Context::get('content');
|
||||
$editor_sequence = Context::get('editor_sequence');
|
||||
|
||||
$err = 0;
|
||||
$oLayoutModel = &getModel('layout');
|
||||
$layout_info = $oLayoutModel->getLayout($module_srl);
|
||||
if(!$layout_info || $layout_info->type != 'faceoff') $err++;
|
||||
|
||||
// 대상 페이지 모듈 정보 구함
|
||||
$oModuleModel = &getModel('module');
|
||||
$page_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
if(!$page_info->module_srl || $page_info->module != 'page') return new Object(-1,'msg_invalid_request');
|
||||
if(!$page_info->module_srl || $page_info->module != 'page') $err++;
|
||||
|
||||
if($err > 1) return new Object(-1,'msg_invalid_request');
|
||||
|
||||
// 권한 체크
|
||||
$is_logged = Context::get('is_logged');
|
||||
|
|
@ -235,14 +276,14 @@
|
|||
foreach($user_group as $group_srl => $group_info) {
|
||||
if(in_array($group_srl, $manager_group)) $is_admin = true;
|
||||
}
|
||||
}
|
||||
if(!$is_admin && !$is_logged && $logged_info->is_admin != 'Y' && !$oModuleModel->isSiteAdmin() && !(is_array($page_info->admin_id) && in_array($logged_infoi->user_id, $page_info->admin_id))) return new Object(-1,'msg_not_permitted');
|
||||
}
|
||||
if(!$is_admin && !$is_logged && $logged_info->is_admin != 'Y' && !$oModuleModel->isSiteAdmin($logged_info) && !(is_array($page_info->admin_id) && in_array($logged_infoi->user_id, $page_info->admin_id))) return new Object(-1,'msg_not_permitted');
|
||||
|
||||
|
||||
// 글 입력
|
||||
$oDocumentModel = &getModel('document');
|
||||
$oDocumentController = &getController('document');
|
||||
|
||||
|
||||
$obj->module_srl = $module_srl;
|
||||
$obj->content = $content;
|
||||
$obj->document_srl = $document_srl;
|
||||
|
|
@ -292,8 +333,8 @@
|
|||
foreach($user_group as $group_srl => $group_info) {
|
||||
if(in_array($group_srl, $manager_group)) $is_admin = true;
|
||||
}
|
||||
}
|
||||
if(!$is_admin && !$is_logged && $logged_info->is_admin != 'Y' && !$oModuleModel->isSiteAdmin() && !(is_array($page_info->admin_id) && in_array($logged_infoi->user_id, $page_info->admin_id))) return new Object(-1,'msg_not_permitted');
|
||||
}
|
||||
if(!$is_admin && !$is_logged && $logged_info->is_admin != 'Y' && !$oModuleModel->isSiteAdmin($logged_info) && !(is_array($page_info->admin_id) && in_array($logged_infoi->user_id, $page_info->admin_id))) return new Object(-1,'msg_not_permitted');
|
||||
|
||||
$output = $oDocumentAdminController->copyDocumentModule(array($oDocument->get('document_srl')), $oDocument->get('module_srl'),0);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
|
@ -332,8 +373,8 @@
|
|||
foreach($user_group as $group_srl => $group_info) {
|
||||
if(in_array($group_srl, $manager_group)) $is_admin = true;
|
||||
}
|
||||
}
|
||||
if(!$is_admin && !$is_logged && $logged_info->is_admin != 'Y' && !$oModuleModel->isSiteAdmin() && !(is_array($page_info->admin_id) && in_array($logged_infoi->user_id, $page_info->admin_id))) return new Object(-1,'msg_not_permitted');
|
||||
}
|
||||
if(!$is_admin && !$is_logged && $logged_info->is_admin != 'Y' && !$oModuleModel->isSiteAdmin($logged_info) && !(is_array($page_info->admin_id) && in_array($logged_infoi->user_id, $page_info->admin_id))) return new Object(-1,'msg_not_permitted');
|
||||
|
||||
$output = $oDocumentController->deleteDocument($oDocument->get('document_srl'), true);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
|
@ -361,8 +402,8 @@
|
|||
foreach($user_group as $group_srl => $group_info) {
|
||||
if(in_array($group_srl, $manager_group)) $is_admin = true;
|
||||
}
|
||||
}
|
||||
if(!$is_admin && !$is_logged && $logged_info->is_admin != 'Y' && !$oModuleModel->isSiteAdmin() && !(is_array($page_info->admin_id) && in_array($logged_infoi->user_id, $page_info->admin_id))) return new Object(-1,'msg_not_permitted');
|
||||
}
|
||||
if(!$is_admin && !$is_logged && $logged_info->is_admin != 'Y' && !$oModuleModel->isSiteAdmin($logged_info) && !(is_array($page_info->admin_id) && in_array($logged_infoi->user_id, $page_info->admin_id))) return new Object(-1,'msg_not_permitted');
|
||||
|
||||
// 등록된 글 목록 구함
|
||||
$oDocumentModel = &getModel('document');
|
||||
|
|
@ -376,5 +417,8 @@
|
|||
}
|
||||
return new Object();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -24,6 +24,26 @@
|
|||
return "";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 위젯 스타일의 경로를 구함
|
||||
**/
|
||||
function getWidgetStylePath($widgetStyle_name) {
|
||||
$path = sprintf('./widgetstyles/%s/', $widgetStyle_name);
|
||||
if(is_dir($path)) return $path;
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 위젯 스타일의 경로를 구함
|
||||
**/
|
||||
function getWidgetStyleTpl($widgetStyle_name) {
|
||||
$path = $this->getWidgetStylePath($widgetStyle_name);
|
||||
$tpl = sprintf('%swidgetstyle.html', $path);
|
||||
return $tpl;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 위젯의 종류와 정보를 구함
|
||||
* 다운로드되어 있는 위젯의 종류 (생성과 다른 의미)
|
||||
|
|
@ -48,6 +68,31 @@
|
|||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 위젯의 종류와 정보를 구함
|
||||
* 다운로드되어 있는 위젯의 종류 (생성과 다른 의미)
|
||||
**/
|
||||
function getDownloadedWidgetStyleList() {
|
||||
// 다운받은 위젯과 설치된 위젯의 목록을 구함
|
||||
$searched_list = FileHandler::readDir('./widgetstyles');
|
||||
$searched_count = count($searched_list);
|
||||
if(!$searched_count) return;
|
||||
sort($searched_list);
|
||||
|
||||
// 찾아진 위젯 목록을 loop돌면서 필요한 정보를 간추려 return
|
||||
for($i=0;$i<$searched_count;$i++) {
|
||||
// 위젯의 이름
|
||||
$widgetStyle = $searched_list[$i];
|
||||
|
||||
// 해당 위젯의 정보를 구함
|
||||
$widgetStyle_info = $this->getWidgetStyleInfo($widgetStyle);
|
||||
|
||||
$list[] = $widgetStyle_info;
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 모듈의 conf/info.xml 을 읽어서 정보를 구함
|
||||
* 이것 역시 캐싱을 통해서 xml parsing 시간을 줄인다..
|
||||
|
|
@ -192,6 +237,14 @@
|
|||
$options_count = count($options);
|
||||
for($j=0;$j<$options_count;$j++) {
|
||||
$buff .= sprintf('$widget_info->extra_var->%s->options["%s"] = "%s";', $id, $options[$j]->value->body, $options[$j]->name->body);
|
||||
|
||||
if($options[$j]->attrs->default && $options[$j]->attrs->default=='true'){
|
||||
$buff .= sprintf('$widget_info->extra_var->%s->default_options["%s"] = true;', $id, $options[$j]->value->body);
|
||||
}
|
||||
|
||||
if($options[$j]->attrs->init && $options[$j]->attrs->init=='true'){
|
||||
$buff .= sprintf('$widget_info->extra_var->%s->init_options["%s"] = true;', $id, $options[$j]->value->body);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -205,5 +258,144 @@
|
|||
return $widget_info;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief 모듈의 conf/info.xml 을 읽어서 정보를 구함
|
||||
* 이것 역시 캐싱을 통해서 xml parsing 시간을 줄인다..
|
||||
**/
|
||||
function getWidgetStyleInfo($widgetStyle) {
|
||||
|
||||
$widgetStyle_path = $this->getWidgetStylePath($widgetStyle);
|
||||
if(!$widgetStyle_path) return;
|
||||
$xml_file = sprintf("%sskin.xml", $widgetStyle_path);
|
||||
if(!file_exists($xml_file)) return;
|
||||
|
||||
// cache 파일을 비교하여 문제 없으면 include하고 $widgetStyle_info 변수를 return
|
||||
$cache_file = sprintf('./files/cache/widgetstyles/%s.%s.cache.php', $widgetStyle, Context::getLangType());
|
||||
|
||||
if(file_exists($cache_file)&&filemtime($cache_file)>filemtime($xml_file)) {
|
||||
@include($cache_file);
|
||||
return $widgetStyle_info;
|
||||
}
|
||||
|
||||
// cache 파일이 없으면 xml parsing하고 변수화 한 후에 캐시 파일에 쓰고 변수 바로 return
|
||||
$oXmlParser = new XmlParser();
|
||||
$tmp_xml_obj = $oXmlParser->loadXmlFile($xml_file);
|
||||
$xml_obj = $tmp_xml_obj->widgetstyle;
|
||||
if(!$xml_obj) return;
|
||||
|
||||
$buff = '';
|
||||
|
||||
// 위젯의 제목, 버전
|
||||
$buff .= sprintf('$widgetStyle_info->widgetStyle = "%s";', $widgetStyle);
|
||||
$buff .= sprintf('$widgetStyle_info->path = "%s";', $widgetStyle_path);
|
||||
$buff .= sprintf('$widgetStyle_info->title = "%s";', $xml_obj->title->body);
|
||||
$buff .= sprintf('$widgetStyle_info->description = "%s";', $xml_obj->description->body);
|
||||
$buff .= sprintf('$widgetStyle_info->version = "%s";', $xml_obj->version->body);
|
||||
sscanf($xml_obj->date->body, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d);
|
||||
$date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
|
||||
$buff .= sprintf('$widgetStyle_info->date = "%s";', $date);
|
||||
$buff .= sprintf('$widgetStyle_info->homepage = "%s";', $xml_obj->link->body);
|
||||
$buff .= sprintf('$widgetStyle_info->license = "%s";', $xml_obj->license->body);
|
||||
$buff .= sprintf('$widgetStyle_info->license_link = "%s";', $xml_obj->license->attrs->link);
|
||||
|
||||
// preview
|
||||
$preview_file = sprintf("%spreview.jpg", $widgetStyle_path);
|
||||
if(file_exists($preview_file)) $buff .= sprintf('$widgetStyle_info->preview = "%s";', $preview_file);
|
||||
|
||||
// 작성자 정보
|
||||
if(!is_array($xml_obj->author)) $author_list[] = $xml_obj->author;
|
||||
else $author_list = $xml_obj->author;
|
||||
|
||||
for($i=0; $i < count($author_list); $i++) {
|
||||
$buff .= sprintf('$widgetStyle_info->author['.$i.']->name = "%s";', $author_list[$i]->name->body);
|
||||
$buff .= sprintf('$widgetStyle_info->author['.$i.']->email_address = "%s";', $author_list[$i]->attrs->email_address);
|
||||
$buff .= sprintf('$widgetStyle_info->author['.$i.']->homepage = "%s";', $author_list[$i]->attrs->link);
|
||||
}
|
||||
|
||||
// history
|
||||
if($xml_obj->history) {
|
||||
if(!is_array($xml_obj->history)) $history_list[] = $xml_obj->history;
|
||||
else $history_list = $xml_obj->history;
|
||||
|
||||
for($i=0; $i < count($history_list); $i++) {
|
||||
sscanf($history_list[$i]->attrs->date, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d);
|
||||
$date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
|
||||
$buff .= sprintf('$widgetStyle_info->history['.$i.']->description = "%s";', $history_list[$i]->description->body);
|
||||
$buff .= sprintf('$widgetStyle_info->history['.$i.']->version = "%s";', $history_list[$i]->attrs->version);
|
||||
$buff .= sprintf('$widgetStyle_info->history['.$i.']->date = "%s";', $date);
|
||||
|
||||
if($history_list[$i]->author) {
|
||||
(!is_array($history_list[$i]->author)) ? $obj->author_list[] = $history_list[$i]->author : $obj->author_list = $history_list[$i]->author;
|
||||
|
||||
for($j=0; $j < count($obj->author_list); $j++) {
|
||||
$buff .= sprintf('$widgetStyle_info->history['.$i.']->author['.$j.']->name = "%s";', $obj->author_list[$j]->name->body);
|
||||
$buff .= sprintf('$widgetStyle_info->history['.$i.']->author['.$j.']->email_address = "%s";', $obj->author_list[$j]->attrs->email_address);
|
||||
$buff .= sprintf('$widgetStyle_info->history['.$i.']->author['.$j.']->homepage = "%s";', $obj->author_list[$j]->attrs->link);
|
||||
}
|
||||
}
|
||||
|
||||
if($history_list[$i]->log) {
|
||||
(!is_array($history_list[$i]->log)) ? $obj->log_list[] = $history_list[$i]->log : $obj->log_list = $history_list[$i]->log;
|
||||
|
||||
for($j=0; $j < count($obj->log_list); $j++) {
|
||||
$buff .= sprintf('$widgetStyle_info->history['.$i.']->logs['.$j.']->text = "%s";', $obj->log_list[$j]->body);
|
||||
$buff .= sprintf('$widgetStyle_info->history['.$i.']->logs['.$j.']->link = "%s";', $obj->log_list[$j]->attrs->link);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 추가 변수 (템플릿에서 사용할 제작자 정의 변수)
|
||||
$extra_var_groups = $xml_obj->extra_vars->group;
|
||||
if(!$extra_var_groups) $extra_var_groups = $xml_obj->extra_vars;
|
||||
if(!is_array($extra_var_groups)) $extra_var_groups = array($extra_var_groups);
|
||||
foreach($extra_var_groups as $group){
|
||||
$extra_vars = $group->var;
|
||||
if(!is_array($group->var)) $extra_vars = array($group->var);
|
||||
|
||||
if($extra_vars[0]->attrs->id || $extra_vars[0]->attrs->name) {
|
||||
$extra_var_count = count($extra_vars);
|
||||
|
||||
$buff .= sprintf('$widgetStyle_info->extra_var_count = "%s";', $extra_var_count);
|
||||
for($i=0;$i<$extra_var_count;$i++) {
|
||||
unset($var);
|
||||
unset($options);
|
||||
$var = $extra_vars[$i];
|
||||
|
||||
$id = $var->attrs->id?$var->attrs->id:$var->attrs->name;
|
||||
$name = $var->name->body?$var->name->body:$var->title->body;
|
||||
$type = $var->attrs->type?$var->attrs->type:$var->type->body;
|
||||
|
||||
|
||||
$buff .= sprintf('$widgetStyle_info->extra_var->%s->group = "%s";', $id, $group->title->body);
|
||||
$buff .= sprintf('$widgetStyle_info->extra_var->%s->name = "%s";', $id, $name);
|
||||
$buff .= sprintf('$widgetStyle_info->extra_var->%s->type = "%s";', $id, $type);
|
||||
if($type =='filebox') $buff .= sprintf('$widgetStyle_info->extra_var->%s->filter = "%s";', $id, $var->attrs->filter);
|
||||
$buff .= sprintf('$widgetStyle_info->extra_var->%s->value = $vars->%s;', $id, $id);
|
||||
$buff .= sprintf('$widgetStyle_info->extra_var->%s->description = "%s";', $id, str_replace('"','\"',$var->description->body));
|
||||
|
||||
$options = $var->options;
|
||||
if(!$options) continue;
|
||||
|
||||
if(!is_array($options)) $options = array($options);
|
||||
$options_count = count($options);
|
||||
for($j=0;$j<$options_count;$j++) {
|
||||
$buff .= sprintf('$widgetStyle_info->extra_var->%s->options["%s"] = "%s";', $id, $options[$j]->value->body, $options[$j]->name->body);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$buff = '<?php if(!defined("__ZBXE__")) exit(); '.$buff.' ?>';
|
||||
FileHandler::writeFile($cache_file, $buff);
|
||||
|
||||
if(file_exists($cache_file)) @include($cache_file);
|
||||
return $widgetStyle_info;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -18,6 +18,9 @@
|
|||
* @brief 위젯의 상세 정보(conf/info.xml)를 팝업 출력
|
||||
**/
|
||||
function dispWidgetInfo() {
|
||||
// 위젯 스킨명이 있을 경우 위젯 스킨 상세 정보 함수로 출력
|
||||
if(Context::get('skin')) return $this->dispWidgetSkinInfo();
|
||||
|
||||
// 선택된 위젯 정보를 구함
|
||||
$oWidgetModel = &getModel('widget');
|
||||
$widget_info = $oWidgetModel->getWidgetInfo(Context::get('selected_widget'));
|
||||
|
|
@ -30,6 +33,28 @@
|
|||
$this->setTemplateFile('widget_detail_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 위젯 스킨의 상세 정보(skin.xml)를 팝업 출력
|
||||
**/
|
||||
function dispWidgetSkinInfo() {
|
||||
$widget = Context::get('selected_widget');
|
||||
$skin = Context::get('skin');
|
||||
|
||||
$path = sprintf('./widgets/%s/', $widget);
|
||||
|
||||
// 선택된 위젯 정보를 구함
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_info = $oModuleModel->loadSkinInfo($path, $skin);
|
||||
|
||||
Context::set('skin_info',$skin_info);
|
||||
|
||||
// 위젯을 팝업으로 지정
|
||||
$this->setLayoutFile('popup_layout');
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('skin_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 위젯의 코드 생성기
|
||||
**/
|
||||
|
|
@ -37,7 +62,6 @@
|
|||
// 선택된 위젯 정보를 구함
|
||||
$oWidgetModel = &getModel('widget');
|
||||
|
||||
$oWidgetModel = &getModel('widget');
|
||||
$widget_list = $oWidgetModel->getDownloadedWidgetList();
|
||||
$selected_widget = Context::get('selected_widget');
|
||||
if(!$selected_widget) $selected_widget = $widget_list[0]->widget;
|
||||
|
|
@ -57,6 +81,11 @@
|
|||
$args->site_srl = $site_module_info->site_srl;
|
||||
$mid_list = $oModuleModel->getMidList($args);
|
||||
|
||||
// 그룹 목록을 가져옴
|
||||
$oMemberModel = &getModel('member');
|
||||
$group_list = $oMemberModel->getGroups($site_module_info->site_srl);
|
||||
Context::set('group_list', $group_list);
|
||||
|
||||
// module_category와 module의 조합
|
||||
if($module_categories) {
|
||||
foreach($mid_list as $module_srl => $module) {
|
||||
|
|
@ -68,6 +97,11 @@
|
|||
|
||||
Context::set('mid_list',$module_categories);
|
||||
|
||||
// 메뉴 목록을 구함
|
||||
$output = executeQueryArray('menu.getMenus');
|
||||
Context::set('menu_list',$output->data);
|
||||
|
||||
|
||||
// 스킨의 정보를 구함
|
||||
$skin_list = $oModuleModel->getSkins($widget_info->path);
|
||||
Context::set('skin_list', $skin_list);
|
||||
|
|
@ -95,5 +129,26 @@
|
|||
$this->setTemplateFile('widget_generate_code_in_page');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 페이지 관리에서 사용될 위젯 스타일 코드 생성 팝업
|
||||
**/
|
||||
function dispWidgetStyleGenerateCodeInPage() {
|
||||
|
||||
// 위젯 스타일 목록
|
||||
$oWidgetModel = &getModel('widget');
|
||||
$widgetStyle_list = $oWidgetModel->getDownloadedWidgetStyleList();
|
||||
Context::set('widgetStyle_list',$widgetStyle_list);
|
||||
|
||||
// 선택된 위젯 스타일 목록
|
||||
$widgetstyle = Context::get('widgetstyle');
|
||||
$widgetstyle_info = $oWidgetModel->getWidgetStyleInfo($widgetstyle);
|
||||
if($widgetstyle && $widgetstyle_info){
|
||||
Context::set('widgetstyle_info',$widgetstyle_info);
|
||||
}
|
||||
|
||||
$this->dispWidgetGenerateCode();
|
||||
$this->setLayoutFile('popup_layout');
|
||||
$this->setTemplateFile('widget_style_generate_code_in_page');
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue